feat: sync status to web app

This commit is contained in:
izzy
2025-11-20 15:47:30 +00:00
parent f69c49a60f
commit 56a4159295
14 changed files with 300 additions and 105 deletions

View File

@@ -1,6 +1,7 @@
import { AppRoute } from '$lib/constants';
import { maintenanceStore } from '$lib/stores/maintenance.store';
import { maintenanceLogin } from '@immich/sdk';
import { websocketStore } from '$lib/stores/websocket';
import { MaintenanceAction, maintenanceLogin, maintenanceStatus } from '@immich/sdk';
export function maintenanceCreateUrl(url: URL) {
const target = new URL(AppRoute.MAINTENANCE, url.origin);
@@ -31,3 +32,22 @@ export const loadMaintenanceAuth = async () => {
// silently fail
}
};
export const loadMaintenanceStatus = async () => {
try {
const status = await maintenanceStatus();
maintenanceStore.status.set(status);
if (status.action === MaintenanceAction.End) {
websocketStore.serverRestarting.set({
isMaintenanceMode: false,
});
}
} catch (error) {
const status = (error as { status: number })?.status;
if (status && status >= 500 && status < 600) {
await new Promise((r) => setTimeout(r, 1e3));
await loadMaintenanceStatus();
}
}
};