mirror of
https://github.com/immich-app/immich
synced 2026-08-29 13:15:45 +00:00
refactor(web): move redirect logic into +layout file where modal is setup
This commit is contained in:
parent
171e4d75e0
commit
1350f5cbd5
2 changed files with 17 additions and 26 deletions
|
|
@ -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())
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue