From 21e9e474fea4bd8f0d7c13d74cfb6f24b8add327 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan Date: Fri, 12 Dec 2025 10:27:49 +0000 Subject: [PATCH 1/2] fix:preserve studio prompt across login via session storage --- src/routes/+layout.svelte | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 97bdc76dcc..8470908232 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -38,8 +38,32 @@ } } + let restoringPrompt = false; + + async function syncStudioPrompt() { + if (!browser || resolvedProfile.id !== ProfileMode.STUDIO) return; + + const currentUrl = new URL(window.location.href); + const promptParam = currentUrl.searchParams.get('prompt'); + + if (promptParam) { + sessionStorage.setItem('studioPrompt', promptParam); + return; + } + + const storedPrompt = sessionStorage.getItem('studioPrompt'); + if (!storedPrompt || restoringPrompt) return; + + restoringPrompt = true; + currentUrl.searchParams.set('prompt', storedPrompt); + await goto(currentUrl.toString(), { replaceState: true, noScroll: true }); + sessionStorage.removeItem('studioPrompt'); + restoringPrompt = false; + } + onMount(async () => { updateViewport(); + await syncStudioPrompt(); // handle sources if (isCloud) { const urlParams = page.url.searchParams; @@ -116,6 +140,7 @@ }); afterNavigate((navigation) => { + syncStudioPrompt(); if (navigation.type !== 'enter' && navigation.from?.route?.id !== navigation.to.route.id) { trackPageView(navigation.to.route.id); } From adad912389db9d44072f83e23b2ecd82e496d089 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan Date: Fri, 12 Dec 2025 11:22:00 +0000 Subject: [PATCH 2/2] remove not imprttant var --- src/routes/+layout.svelte | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 8470908232..fa96bf8e5a 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -38,8 +38,6 @@ } } - let restoringPrompt = false; - async function syncStudioPrompt() { if (!browser || resolvedProfile.id !== ProfileMode.STUDIO) return; @@ -52,13 +50,11 @@ } const storedPrompt = sessionStorage.getItem('studioPrompt'); - if (!storedPrompt || restoringPrompt) return; + if (!storedPrompt) return; - restoringPrompt = true; currentUrl.searchParams.set('prompt', storedPrompt); await goto(currentUrl.toString(), { replaceState: true, noScroll: true }); sessionStorage.removeItem('studioPrompt'); - restoringPrompt = false; } onMount(async () => {