diff --git a/web/src/lib/stores/websocket.ts b/web/src/lib/stores/websocket.ts index b8a89e5f74..e88cf6d831 100644 --- a/web/src/lib/stores/websocket.ts +++ b/web/src/lib/stores/websocket.ts @@ -50,7 +50,7 @@ export const websocketStore = { connected: writable(false), serverVersion: writable(), release: writable(), - serverRestarting: writable(false), + serverRestarting: writable(), }; export const websocketEvents = createEventEmitter(websocket); @@ -59,22 +59,7 @@ websocket .on('connect', () => websocketStore.connected.set(true)) .on('disconnect', () => websocketStore.connected.set(false)) .on('on_server_version', (serverVersion) => websocketStore.serverVersion.set(serverVersion)) - .on('on_server_restart', (mode) => { - if (mode.isMaintenanceMode !== location.pathname.startsWith(AppRoute.MAINTENANCE)) { - websocketStore.serverRestarting.set(true); - - // we will be disconnected momentarily - // wait for reconnect then reload - let waiting = false; - websocketStore.connected.subscribe((connected) => { - if (!connected) { - waiting = true; - } else if (connected && waiting) { - location.href = mode.isMaintenanceMode ? AppRoute.MAINTENANCE : '/'; - } - }); - } - }) + .on('on_server_restart', (mode) => websocketStore.serverRestarting.set(mode)) .on('on_new_release', (releaseVersion) => websocketStore.release.set(releaseVersion)) .on('on_session_delete', () => authManager.logout()) .on('on_notification', () => notificationManager.refresh()) diff --git a/web/src/routes/+layout.svelte b/web/src/routes/+layout.svelte index 97edd067d8..cad6e2e7b0 100644 --- a/web/src/routes/+layout.svelte +++ b/web/src/routes/+layout.svelte @@ -107,20 +107,26 @@ $effect(() => void handleRelease($release)); - const handleRestart = async (isRestarting: boolean) => { + serverRestarting.subscribe((isRestarting) => { if (!isRestarting) { return; } - try { - serverRestarting.set(false); - await modalManager.show(ServerRestartingModal, {}); - } catch (error) { - console.error('Error [ServerRestartBox]:', error); - } - }; + if (isRestarting.isMaintenanceMode !== page.url.pathname.startsWith(AppRoute.MAINTENANCE)) { + modalManager.show(ServerRestartingModal, {}).catch((error) => console.error('Error [ServerRestartBox]:', error)); - $effect(() => void handleRestart($serverRestarting)); + // we will be disconnected momentarily + // wait for reconnect then reload + let waiting = false; + websocketStore.connected.subscribe((connected) => { + if (!connected) { + waiting = true; + } else if (connected && waiting) { + location.href = isRestarting.isMaintenanceMode ? AppRoute.MAINTENANCE : '/'; + } + }); + } + });