From a32c973ab8f19b90720999a9a46d9fa6aa9adf9a Mon Sep 17 00:00:00 2001 From: coolcoala Date: Mon, 21 Jul 2025 02:46:41 +0300 Subject: [PATCH] fixed problem with profile inactivation after adding via deeplink on windows --- src-tauri/src/utils/resolve.rs | 2 +- src/pages/_layout.tsx | 4 ++-- src/pages/home.tsx | 21 ++++----------------- 3 files changed, 7 insertions(+), 20 deletions(-) diff --git a/src-tauri/src/utils/resolve.rs b/src-tauri/src/utils/resolve.rs index aaccc005..4a97b7a8 100644 --- a/src-tauri/src/utils/resolve.rs +++ b/src-tauri/src/utils/resolve.rs @@ -565,7 +565,7 @@ pub async fn resolve_scheme(param: String) -> Result<()> { Some(url) => { log::info!(target:"app", "decoded subscription url: {url}"); - create_window(false); + create_window(true); match PrfItem::from_url(url.as_ref(), name, None, None).await { Ok(item) => { let uid = item.uid.clone().unwrap(); diff --git a/src/pages/_layout.tsx b/src/pages/_layout.tsx index 07b7fd56..6f09ceee 100644 --- a/src/pages/_layout.tsx +++ b/src/pages/_layout.tsx @@ -44,9 +44,9 @@ const handleNoticeMessage = ( switch (status) { case "import_sub_url::ok": mutate("getProfiles"); - navigate("/", { state: { activateProfile: msg } }); + navigate("/"); showNotice("success", t("Import Subscription Successful")); - window.dispatchEvent(new CustomEvent('activate-profile', { detail: msg })); + sessionStorage.setItem('activateProfile', msg); break; case "import_sub_url::error": showNotice("error", msg); diff --git a/src/pages/home.tsx b/src/pages/home.tsx index 410217f9..92b8b10b 100644 --- a/src/pages/home.tsx +++ b/src/pages/home.tsx @@ -78,26 +78,13 @@ const MinimalHomePage: React.FC = () => { ); useEffect(() => { - const handleActivationEvent = (event: Event) => { - const customEvent = event as CustomEvent; - const profileId = customEvent.detail; - if (profileId) { - setUidToActivate(profileId); - } - }; - - window.addEventListener('activate-profile', handleActivationEvent); - return () => { - window.removeEventListener('activate-profile', handleActivationEvent); - }; - }, []); - - useEffect(() => { + const uidToActivate = sessionStorage.getItem('activateProfile'); if (uidToActivate && profileItems.some(p => p.uid === uidToActivate)) { activateProfile(uidToActivate, false); - setUidToActivate(null); + sessionStorage.removeItem('activateProfile'); } - }, [uidToActivate, profileItems, activateProfile]); + }, [profileItems, activateProfile]); + const handleProfileChange = useLockFn(async (uid: string) => { if (profiles?.current === uid) return;