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 speed: None,
15 }
16}
17
18pub fn toggle_in_settings(
19 model: Arc<dyn LanguageModel>,
20 should_be_favorite: bool,
21 fs: Arc<dyn Fs>,
22 cx: &mut App,
23) {
24 let selection = language_model_to_selection(&model);
25 update_settings_file(fs, cx, move |settings, _| {
26 let agent = settings.agent.get_or_insert_default();
27 if should_be_favorite {
28 agent.add_favorite_model(selection.clone());
29 } else {
30 agent.remove_favorite_model(&selection);
31 }
32 });
33}