favorite_models.rs

 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}