diff --git a/src/lib/apis/configs/index.ts b/src/lib/apis/configs/index.ts index 5149737c3f..d921cdcd0d 100644 --- a/src/lib/apis/configs/index.ts +++ b/src/lib/apis/configs/index.ts @@ -572,9 +572,13 @@ export const initiateOAuthRedirect = (tool: { }) => { sessionStorage.setItem('pendingOAuthToolId', tool.id); sessionStorage.setItem('oauthRedirectInProgressToolId', tool.id); + localStorage.setItem('pendingOAuthToolId', tool.id); + localStorage.setItem('oauthRedirectInProgressToolId', tool.id); const authUrl = getOAuthClientAuthorizationUrl(tool.serverId, tool.authType ?? 'mcp'); const tab = window.open(authUrl, '_blank'); if (!tab) { + localStorage.removeItem('pendingOAuthToolId'); + localStorage.removeItem('oauthRedirectInProgressToolId'); window.open(authUrl, '_self', 'noopener'); } }; diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index a79b0effcc..465dfd9fa8 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -1419,12 +1419,15 @@ if (event.data.error) { sessionStorage.removeItem('oauthRedirectInProgressToolId'); + localStorage.removeItem('oauthRedirectInProgressToolId'); toast.error(event.data.error); return; } sessionStorage.removeItem('pendingOAuthToolId'); sessionStorage.removeItem('oauthRedirectInProgressToolId'); + localStorage.removeItem('pendingOAuthToolId'); + localStorage.removeItem('oauthRedirectInProgressToolId'); const updatedTools = await getTools(localStorage.token).catch(() => null); if (updatedTools) { tools.set(updatedTools); diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 142153b554..9192c3ee92 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1069,7 +1069,8 @@ window.addEventListener('message', windowMessageEventHandler); - const pendingOAuthToolId = sessionStorage.getItem('pendingOAuthToolId'); + const pendingOAuthToolId = + sessionStorage.getItem('pendingOAuthToolId') ?? localStorage.getItem('pendingOAuthToolId'); if (window.opener && window.location.pathname === '/' && pendingOAuthToolId) { window.opener.postMessage( { @@ -1081,6 +1082,8 @@ ); sessionStorage.removeItem('pendingOAuthToolId'); sessionStorage.removeItem('oauthRedirectInProgressToolId'); + localStorage.removeItem('pendingOAuthToolId'); + localStorage.removeItem('oauthRedirectInProgressToolId'); window.close(); }