fix not loading model on start if available

This commit is contained in:
CJ Pais 2025-07-01 14:57:02 -07:00
parent 64046ee17b
commit 0805442bf2

View file

@ -7,6 +7,7 @@ use std::io::Write;
use std::path::PathBuf;
use std::sync::Mutex;
use tauri::{App, AppHandle, Emitter, Manager};
use crate::settings::{get_settings, write_settings};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ModelInfo {
@ -115,6 +116,9 @@ impl ModelManager {
// Check which models are already downloaded
manager.update_download_status()?;
// Auto-select a model if none is currently selected
manager.auto_select_model_if_needed()?;
Ok(manager)
}
@ -166,6 +170,29 @@ impl ModelManager {
Ok(())
}
fn auto_select_model_if_needed(&self) -> Result<()> {
// Check if we have a selected model in settings
let settings = get_settings(&self.app_handle);
// If no model is selected or selected model is empty
if settings.selected_model.is_empty() {
// Find the first available (downloaded) model
let models = self.available_models.lock().unwrap();
if let Some(available_model) = models.values().find(|model| model.is_downloaded) {
println!("Auto-selecting model: {} ({})", available_model.id, available_model.name);
// Update settings with the selected model
let mut updated_settings = settings;
updated_settings.selected_model = available_model.id.clone();
write_settings(&self.app_handle, updated_settings);
println!("Successfully auto-selected model: {}", available_model.id);
}
}
Ok(())
}
pub async fn download_model(&self, model_id: &str) -> Result<()> {
let model_info = {
let models = self.available_models.lock().unwrap();