feat: magic link to enable backups

This commit is contained in:
izzy 2026-06-19 13:06:57 +01:00
parent 5ded6f89b7
commit d18e09de30
No known key found for this signature in database
17 changed files with 225 additions and 35 deletions

View file

@ -88,7 +88,9 @@
<NavbarItem title={$t('folders')} href={Route.folders()} icon={{ icon: mdiFolderOutline, flipped: true }} />
{/if}
<NavbarItem title="Backups" href={Route.backups()} icon={mdiBackupRestore} />
{#if featureFlagsManager.value.backups && authManager.user.isAdmin}
<NavbarItem title="Backups" href={Route.backups()} icon={mdiBackupRestore} />
{/if}
<NavbarItem title={$t('utilities')} href={Route.utilities()} icon={mdiToolboxOutline} activeIcon={mdiToolbox} />

View file

@ -1,3 +1,4 @@
import { getConfig, updateConfig } from '@immich/sdk';
import { redirect } from '@sveltejs/kit';
import { OpenQueryParam } from '$lib/constants';
import { Route } from '$lib/route';
@ -8,9 +9,10 @@ enum LinkTarget {
UNSUBSCRIBE = 'unsubscribe',
VIEW_ASSET = 'view_asset',
ACTIVATE_LICENSE = 'activate_license',
BACKUPS = 'backups',
}
export const load = (({ url }) => {
export const load = (async ({ url }) => {
const queryParams = url.searchParams;
const target = queryParams.get('target') as LinkTarget;
switch (target) {
@ -22,6 +24,17 @@ export const load = (({ url }) => {
return redirect(307, Route.userSettings({ isOpen: OpenQueryParam.NOTIFICATIONS }));
}
case LinkTarget.BACKUPS: {
const config = await getConfig().catch(() => undefined);
if (config && !config.backup.beta) {
await updateConfig({
systemConfigDto: { ...config, backup: { ...config.backup, beta: true } },
}).catch(() => undefined);
}
return redirect(307, Route.backups());
}
case LinkTarget.VIEW_ASSET: {
const id = queryParams.get('id');
if (id) {