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        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}