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