mod oauth; use oauth::{OAuthController, SigninResult}; mod persistence; use persistence::{Account, PersistenceController}; pub mod commands; use tauri_plugin_deep_link::DeepLinkExt; use tauri::{Manager, State, AppHandle}; pub const OAUTH_CLIENT_NAME: &'static str = "foxfleet_test"; struct AppState { oauth_controller: OAuthController, persistence_controller: PersistenceController, } #[cfg_attr(mobile, tauri::mobile_entry_point)] pub fn run() { tauri::Builder::default() .plugin(tauri_plugin_single_instance::init(|app, argv, cwd| { println!("{}, {argv:?}, {cwd}", app.package_info().name); })) .plugin(tauri_plugin_deep_link::init()) .plugin(tauri_plugin_opener::init()) .setup(|app| { let persistence_controller = PersistenceController::new(tauri::async_runtime::handle()); let oauth_controller = OAuthController::new(tauri::async_runtime::handle(), persistence_controller.clone()); app.manage(AppState { oauth_controller: oauth_controller.clone(), persistence_controller, }); #[cfg(any(target_os = "linux", all(debug_assertions, windows)))] app.deep_link().register_all()?; app.deep_link().on_open_url(move |event| { if oauth_controller.handle_deeplink(&event.urls()).is_some() { return } }); Ok(()) }) .invoke_handler(tauri::generate_handler![commands::accounts::start_account_auth, commands::accounts::get_self, commands::accounts::get_all_accounts]) .run(tauri::generate_context!()) .expect("Error starting") }