summary refs log tree commit diff
path: root/app/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/lib.rs')
-rw-r--r--app/src/lib.rs38
1 files changed, 4 insertions, 34 deletions
diff --git a/app/src/lib.rs b/app/src/lib.rs
index 9823cdd..98ada19 100644
--- a/app/src/lib.rs
+++ b/app/src/lib.rs
@@ -23,46 +23,16 @@ pub fn run() {
         .plugin(tauri_plugin_deep_link::init())
         .plugin(tauri_plugin_opener::init())
         .setup(|app| {
+            let oauth_controller = OAuthController::new(tauri::async_runtime::handle());
             app.manage(AppState {
-                oauth_controller: OAuthController::new(tauri::async_runtime::handle())
+                oauth_controller: oauth_controller.clone() 
             });
 
             #[cfg(any(target_os = "linux", all(debug_assertions, windows)))]
             app.deep_link().register_all()?;
-            let app_handle = app.handle().clone();
             app.deep_link().on_open_url(move |event| {
-                if let Some(oauth_callback) = event.urls().iter().find(|url| {
-                    if let Some(Host::Domain(domain)) = url.host() {
-                        domain == "oauth-response"
-                    } else {
-                        false
-                    }
-                }) {
-                    let mut query = oauth_callback.query_pairs();
-                    let query = (
-                        query.find(|(key, _)| key == "code").map(|(_, value)| value ),
-                        query.find(|(key, _)| key == "state").map(|(_, value)| value )
-                    );
-                    let query = match query {
-                        (Some(code), Some(state)) => Some((code, state)),
-                        _ => None,
-                    };
-
-                    if let Some((auth_code, state)) = query {
-                        if let Ok(state) = Uuid::try_parse(&state) {
-                            let state = state.clone();
-                            let auth_code = auth_code.to_string().clone();
-                            let oauth_controller = &app_handle.state::<AppState>().oauth_controller;
-
-                            oauth_controller.resolve_code(state, auth_code);
-                        } else {
-                            println!("Invalid UUID format: {state}");
-                            return
-                        }
-                    } else {
-                        println!("Missing either state or code in oauth callback");
-                        return
-                    }
+                if oauth_controller.handle_deeplink(&event.urls()).is_some() {
+                    return
                 }
             });
             Ok(())