1use std::sync::Arc;
2
3use fs::Fs;
4use language_model::LanguageModel;
5use settings::{LanguageModelSelection, update_settings_file};
6use ui::App;
7
8fn language_model_to_selection(model: &Arc<dyn LanguageModel>) -> LanguageModelSelection {
9 LanguageModelSelection {
10 provider: model.provider_id().to_string().into(),
11 model: model.id().0.to_string(),
12 enable_thinking: false,
13 effort: None,
14 }
15}
16
17pub fn toggle_in_settings(
18 model: Arc<dyn LanguageModel>,
19 should_be_favorite: bool,
20 fs: Arc<dyn Fs>,
21 cx: &mut App,
22) {
23 let selection = language_model_to_selection(&model);
24 update_settings_file(fs, cx, move |settings, _| {
25 let agent = settings.agent.get_or_insert_default();
26 if should_be_favorite {
27 agent.add_favorite_model(selection.clone());
28 } else {
29 agent.remove_favorite_model(&selection);
30 }
31 });
32}