34 lines
831 B
Rust
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());
|
|
}
|