refactor(web): move redirect logic into +layout file where modal is setup

This commit is contained in:
izzy 2025-11-05 11:19:48 +00:00
parent 171e4d75e0
commit 1350f5cbd5
No known key found for this signature in database
GPG key ID: 5059F398521BB0F6
2 changed files with 17 additions and 26 deletions

View file

@ -50,7 +50,7 @@ export const websocketStore = {
connected: writable<boolean>(false),
serverVersion: writable<ServerVersionResponseDto>(),
release: writable<ReleaseEvent>(),
serverRestarting: writable<boolean>(false),
serverRestarting: writable<undefined | MaintenanceModeResponseDto>(),
};
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())

View file

@ -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 : '/';
}
});
}
});
</script>
<svelte:head>