Files
AI-translater-clinet/src-tauri/src/controllers/app_state.rs

34 lines
831 B
Rust

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<bool>,
pub clipboard: Mutex<Option<Clipboard>>,
pub should_stop: Arc<AtomicBool>,
}
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<R: Runtime>(app: &mut App<R>) {
app.manage(AppState::new());
}