Files
Immich/web/src/routes/maintenance/MaintenanceRestoreFlow.svelte
T
Paul MaklesandCodex 925aaed54c feat: backups (#32268)
Signed-off-by: izzy <me@insrt.uk>
Co-authored-by: Zack Pollard <zack@futo.org>
(cherry picked from commit 177b57b689be293bad96b8092e473dc03e068e9c)
2026-10-31 07:21:01 +03:00

43 lines
1.6 KiB
Svelte

<script lang="ts">
import RestoreFlowAutoSelectBackup from './RestoreFlowAutoSelectBackup.svelte';
import RestoreFlowDetectInstall from './RestoreFlowDetectInstall.svelte';
import RestoreFlowIntro from './RestoreFlowIntro.svelte';
import RestoreFlowSelectBackup from './RestoreFlowSelectBackup.svelte';
import { ImmichOnboardingRestoreFlow } from '@futo-org/backups-orchestrator-ui';
type Props = {
end: () => void;
expectedVersion: string;
};
const { end, expectedVersion }: Props = $props();
let stage: 'overview' | 'futo-backups' | 'detect-install' | 'auto-select-backup' | 'select-backup' = $state(
localStorage.getItem('restoring-futo-backups') ? 'futo-backups' : 'overview',
);
$effect(() => {
if (stage === 'futo-backups') {
localStorage.setItem('restoring-futo-backups', '1');
} else {
localStorage.removeItem('restoring-futo-backups');
}
});
</script>
{#if stage === 'overview'}
<RestoreFlowIntro
flowToFutoBackups={() => (stage = 'futo-backups')}
flowToDatabase={() => (stage = 'detect-install')}
{end}
/>
{:else if stage === 'futo-backups'}
<ImmichOnboardingRestoreFlow onExit={() => (stage = 'overview')} onFinish={() => (stage = 'auto-select-backup')} />
{:else if stage === 'detect-install'}
<RestoreFlowDetectInstall next={() => (stage = 'select-backup')} previous={() => (stage = 'overview')} />
{:else if stage === 'select-backup'}
<RestoreFlowSelectBackup previous={() => (stage = 'detect-install')} {end} {expectedVersion} />
{:else if stage === 'auto-select-backup'}
<RestoreFlowAutoSelectBackup selectAnother={() => (stage = 'select-backup')} {end} {expectedVersion} />
{/if}