use std::sync::{Mutex, Arc}; use std::sync::atomic::AtomicBool; use tauri::{App, Manager, Runtime}; use arboard::Clipboard; pub struct AppState { #[allow(dead_code)] pub ollama_ready: Mutex, pub clipboard: Mutex>, pub should_stop: Arc, } impl AppState { pub fn new() -> Self { let clipboard = match Clipboard::new() { Ok(cb) => Some(cb), Err(e) => { eprintln!("Failed to initialize global clipboard: {}", e); None } }; Self { ollama_ready: Mutex::new(false), clipboard: Mutex::new(clipboard), should_stop: Arc::new(AtomicBool::new(false)), } } } pub fn init_state(app: &mut App) { app.manage(AppState::new()); }