diff --git a/crates/desktop/src-tauri/src/endpoints/image_endpoint.rs b/crates/desktop/src-tauri/src/endpoints/image_endpoint.rs index b3a43b05eb..9aa261368b 100644 --- a/crates/desktop/src-tauri/src/endpoints/image_endpoint.rs +++ b/crates/desktop/src-tauri/src/endpoints/image_endpoint.rs @@ -5,41 +5,18 @@ use anyhow::Result; use base64::{engine::general_purpose::STANDARD as BASE64_STANDARD, Engine}; use once_cell::sync::Lazy; use std::sync::{Arc, Mutex, RwLock}; +use tauri::State; const PROMPT: &str = "A beautiful landscape with mountains and a lake"; const HEIGHT: usize = 512; const WIDTH: usize = 512; -static MODEL_CONFIG: Lazy>>> = Lazy::new(|| Arc::new(Mutex::new(None))); - static MODEL_CACHE: Lazy>>> = Lazy::new(|| Arc::new(RwLock::new(None))); #[tauri::command] -pub fn infer_image(image: &str) -> Result { - // TODO(bt,2025-02-14): There has to be a better way to inject dependencies. - - match MODEL_CONFIG.lock() { - Err(err) => Err(err.to_string()), - Ok(mut model_config) => { - match &*model_config { - Some(config) => { - do_infer_image(image, config) - } - None => { - // TODO(bt,2025-02-14): This is awful. - let config = ModelConfig::init() - .map_err(|err| err.to_string())?; - - let result = do_infer_image(image, &config)?; - - *model_config = Some(config); - - Ok(result) - } - } - } - } +pub fn infer_image(image: &str, model_config: State) -> Result { + do_infer_image(image, &model_config) } fn do_infer_image(image: &str, config: &ModelConfig) -> Result { diff --git a/crates/desktop/src-tauri/src/lib.rs b/crates/desktop/src-tauri/src/lib.rs index 285c576e07..ddd7f3c984 100644 --- a/crates/desktop/src-tauri/src/lib.rs +++ b/crates/desktop/src-tauri/src/lib.rs @@ -5,9 +5,17 @@ pub mod model_config; use endpoints::image_endpoint::infer_image; use once_cell::sync::Lazy; use std::sync::{Arc, RwLock}; +use crate::model_config::ModelConfig; #[cfg_attr(mobile, tauri::mobile_entry_point)] pub fn run() { + info!("Loading model config..."); + + let model_config = ModelConfig::init() + .expect("config should load"); + + info!("Initializing backend runtime..."); + tauri::Builder::default() .setup(|app| { if cfg!(debug_assertions) { @@ -19,6 +27,7 @@ pub fn run() { } Ok(()) }) + .manage(model_config) .invoke_handler(tauri::generate_handler![ my_custom_command, test_round_trip,