summary refs log tree commit diff
path: root/app/src/lib.rs
blob: 879a4f32713b9d1db0c4e50b76f8faa7fe4a5c6b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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")
}