Qopy/src-tauri/src/main.rs
2024-09-02 21:28:10 +10:00

81 lines
2.6 KiB
Rust

#![cfg_attr(
all(not(debug_assertions), target_os = "windows"),
windows_subsystem = "windows"
)]
mod api;
mod utils;
use tauri::Manager;
use tauri_plugin_autostart::MacosLauncher;
use tauri_plugin_prevent_default::Flags;
fn main() {
#[allow(unused_variables)]
tauri::Builder::default()
.plugin(tauri_plugin_clipboard::init())
.plugin(tauri_plugin_os::init())
.plugin(tauri_plugin_sql::Builder::default().build())
.plugin(tauri_plugin_dialog::init())
.plugin(tauri_plugin_fs::init())
.plugin(tauri_plugin_updater::Builder::default().build())
.plugin(tauri_plugin_autostart::init(
MacosLauncher::LaunchAgent,
Some(vec![]),
))
.plugin(
tauri_plugin_prevent_default::Builder::new()
.with_flags(Flags::all().difference(Flags::CONTEXT_MENU))
.build(),
)
.setup(|app| {
let app_handle = app.handle().clone();
let _ = api::database::setup(app);
api::hotkeys::setup(app_handle.clone());
api::tray::setup(app)?;
api::clipboard::setup(app.handle());
let _ = api::clipboard::start_monitor(app_handle.clone());
if let Some(window) = app.get_webview_window("main") {
utils::commands::center_window_on_current_monitor(&window);
window.hide().unwrap();
}
// #[cfg(dev)]
// {
// let window = app.get_webview_window("main").unwrap();
// window.open_devtools();
// window.close_devtools();
// }
let app_data_dir = app
.path()
.app_data_dir()
.expect("Failed to get app data directory");
api::clipboard::set_app_data_dir(app_data_dir);
tauri::async_runtime::spawn(async move {
api::updater::check_for_updates(app_handle).await;
});
Ok(())
})
.on_window_event(|app, event| {
#[cfg(not(dev))]
if let tauri::WindowEvent::Focused(false) = event {
if let Some(window) = app.get_webview_window("main") {
let _ = window.hide();
}
}
})
.invoke_handler(tauri::generate_handler![
api::clipboard::get_image_path,
api::clipboard::write_and_paste,
api::clipboard::read_image,
api::database::save_keybind,
api::database::get_keybind
])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}