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