diff --git a/apps/desktop-shell/scripts/check-config.mjs b/apps/desktop-shell/scripts/check-config.mjs index b1368e294..320ec604f 100644 --- a/apps/desktop-shell/scripts/check-config.mjs +++ b/apps/desktop-shell/scripts/check-config.mjs @@ -2461,6 +2461,9 @@ const requiredRustHostSnippets = [ 'open_desktop_deep_link_url(window: &WebviewWindow, url: &Url) -> tauri::Result<()>', 'log_desktop_deep_link_current_result', 'desktop host event failed for deep_link.current', + 'log_desktop_deep_link_window_missing', + 'desktop host event failed for deep_link.window', + 'main window unavailable during', 'window.navigate(target_url)?', 'show_main_window(window.app_handle())', 'log_desktop_host_event_result("app_menu.show", show_main_window(app))', @@ -3286,6 +3289,9 @@ for (const snippet of [ 'log_desktop_deep_link_current_result(app.deep_link().get_current())', 'desktop host event failed for deep_link.current', 'desktop_deep_link_current_result_reports_success_empty_and_failure', + 'log_desktop_deep_link_window_missing("open")', + 'log_desktop_deep_link_window_missing("current")', + 'desktop_deep_link_window_missing_reports_failure', ]) { if (!desktopShellDeepLinkSource.includes(snippet)) { throw new Error(`desktop shell deep-link registration logging missing ${snippet}`); diff --git a/apps/desktop-shell/src-tauri/src/shell/deep_link.rs b/apps/desktop-shell/src-tauri/src/shell/deep_link.rs index 8aedc811d..628cadad9 100644 --- a/apps/desktop-shell/src-tauri/src/shell/deep_link.rs +++ b/apps/desktop-shell/src-tauri/src/shell/deep_link.rs @@ -100,10 +100,16 @@ fn log_desktop_deep_link_current_result( } } +fn log_desktop_deep_link_window_missing(stage: &str) -> bool { + eprintln!("desktop host event failed for deep_link.window: main window unavailable during {stage}"); + false +} + pub(crate) fn register_desktop_deep_link_events(app: &tauri::App) -> tauri::Result<()> { let app_handle = app.handle().clone(); app.deep_link().on_open_url(move |event| { let Some(window) = app_handle.get_webview_window("main") else { + log_desktop_deep_link_window_missing("open"); return; }; @@ -113,6 +119,7 @@ pub(crate) fn register_desktop_deep_link_events(app: &tauri::App) -> tauri::Resu }); let Some(window) = app.get_webview_window("main") else { + log_desktop_deep_link_window_missing("current"); return Ok(()); }; if let Some(urls) = log_desktop_deep_link_current_result(app.deep_link().get_current()) { @@ -286,4 +293,10 @@ mod tests { None ); } + + #[test] + fn desktop_deep_link_window_missing_reports_failure() { + assert!(!log_desktop_deep_link_window_missing("open")); + assert!(!log_desktop_deep_link_window_missing("current")); + } }