Files
textDB/src-tauri/src/main.rs

48 lines
1.5 KiB
Rust
Raw Normal View History

2026-01-30 23:14:06 +01:00
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
use std::sync::Mutex;
use tauri::{Manager, RunEvent};
struct PendingOpens(Mutex<Vec<String>>);
#[tauri::command]
fn take_pending_opens(state: tauri::State<PendingOpens>) -> Vec<String> {
let mut pending = state.0.lock().expect("pending opens lock");
pending.drain(..).collect()
}
2026-01-30 23:14:06 +01:00
fn main() {
tauri::Builder::default()
.setup(|app| {
app.manage(PendingOpens(Mutex::new(Vec::new())));
Ok(())
})
.invoke_handler(tauri::generate_handler![take_pending_opens])
2026-01-30 23:14:06 +01:00
.plugin(tauri_plugin_dialog::init())
.plugin(tauri_plugin_fs::init())
.plugin(tauri_plugin_sql::Builder::default().build())
.plugin(
tauri::plugin::Builder::new("file-open")
.on_event(|app, event| {
#[cfg(any(target_os = "macos", target_os = "ios"))]
if let RunEvent::Opened { urls } = event {
let paths: Vec<String> = urls
.iter()
.filter_map(|url| url.to_file_path().ok())
.map(|path| path.to_string_lossy().to_string())
.collect();
if paths.is_empty() {
return;
}
let state = app.state::<PendingOpens>();
let mut pending = state.0.lock().expect("pending opens lock");
pending.extend(paths.iter().cloned());
let _ = app.emit("file-opened", paths);
}
})
.build(),
)
2026-01-30 23:14:06 +01:00
.run(tauri::generate_context!())
.expect("error while running tauri application");
}