diff --git a/web/src/lib/components/shared-components/navigation-bar/navigation-bar.svelte b/web/src/lib/components/shared-components/navigation-bar/navigation-bar.svelte index 3879d6eb1d..5d85fe8c0a 100644 --- a/web/src/lib/components/shared-components/navigation-bar/navigation-bar.svelte +++ b/web/src/lib/components/shared-components/navigation-bar/navigation-bar.svelte @@ -29,13 +29,13 @@ }>(); const logOut = async () => { - resetSavedUser(); const { redirectUri } = await logout(); if (redirectUri.startsWith('/')) { - goto(redirectUri); + await goto(redirectUri); } else { window.location.href = redirectUri; } + resetSavedUser(); }; diff --git a/web/src/lib/stores/user.store.ts b/web/src/lib/stores/user.store.ts index 66091ff52d..0fc4e9e01d 100644 --- a/web/src/lib/stores/user.store.ts +++ b/web/src/lib/stores/user.store.ts @@ -1,8 +1,12 @@ import type { UserResponseDto } from '@immich/sdk'; import { writable } from 'svelte/store'; -export let user = writable(); +export const user = writable(); +/** + * Reset the store to its initial undefined value. Make sure to + * only do this _after_ redirecting to an unauthenticated page. + */ export const resetSavedUser = () => { - user = writable(); + user.set(undefined as unknown as UserResponseDto); }; diff --git a/web/src/routes/+layout.svelte b/web/src/routes/+layout.svelte index dd79fb9564..dd85730a28 100644 --- a/web/src/routes/+layout.svelte +++ b/web/src/routes/+layout.svelte @@ -22,10 +22,15 @@ let albumId: string | undefined; const isSharedLinkRoute = (route: string | null) => route?.startsWith('/(user)/share/[key]'); - const isAuthRoute = (route?: string) => route?.startsWith('/auth'); $: changeTheme($colorTheme); + $: if ($user) { + openWebsocketConnection(); + } else { + closeWebsocketConnection(); + } + const changeTheme = (theme: ThemeSetting) => { if (theme.system) { theme.value = @@ -58,18 +63,7 @@ setKey($page.params.key); } - beforeNavigate(({ from, to }) => { - const fromRoute = from?.route?.id || ''; - const toRoute = to?.route?.id || ''; - - if (isAuthRoute(fromRoute) && !isAuthRoute(toRoute)) { - openWebsocketConnection(); - } - - if (!isAuthRoute(fromRoute) && isAuthRoute(toRoute)) { - closeWebsocketConnection(); - } - + beforeNavigate(() => { showNavigationLoadingBar = true; }); @@ -78,10 +72,6 @@ }); onMount(async () => { - if ($page.route.id?.startsWith('/auth') === false) { - openWebsocketConnection(); - } - try { await loadConfig(); } catch (error) {