fix(web): handle deleted user on details page (#18264)

This commit is contained in:
Jason Rasmussen 2025-05-13 10:40:50 -04:00 committed by GitHub
parent 989d9dbe51
commit 3fdc1df89c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 72 additions and 35 deletions

View file

@ -1,34 +1,30 @@
<script lang="ts">
import FormatMessage from '$lib/components/i18n/format-message.svelte';
import ConfirmModal from '$lib/modals/ConfirmModal.svelte';
import { handleError } from '$lib/utils/handle-error';
import { restoreUserAdmin, type UserResponseDto } from '@immich/sdk';
import { restoreUserAdmin, type UserAdminResponseDto, type UserResponseDto } from '@immich/sdk';
import { Button, Modal, ModalBody, ModalFooter } from '@immich/ui';
import { mdiDeleteRestore } from '@mdi/js';
import { t } from 'svelte-i18n';
interface Props {
user: UserResponseDto;
onClose: (confirmed?: true) => void;
onClose: (user?: UserAdminResponseDto) => void;
}
let { user, onClose }: Props = $props();
const handleRestoreUser = async () => {
try {
await restoreUserAdmin({ id: user.id });
onClose(true);
const result = await restoreUserAdmin({ id: user.id });
onClose(result);
} catch (error) {
handleError(error, $t('errors.unable_to_restore_user'));
}
};
</script>
<ConfirmModal
title={$t('restore_user')}
confirmText={$t('continue')}
confirmColor="success"
onClose={(confirmed) => (confirmed ? handleRestoreUser() : onClose())}
>
{#snippet promptSnippet()}
<Modal title={$t('restore_user')} {onClose} icon={mdiDeleteRestore} size="small" class="bg-light text-dark">
<ModalBody>
<p>
<FormatMessage key="admin.user_restore_description" values={{ user: user.name }}>
{#snippet children({ message })}
@ -36,5 +32,16 @@
{/snippet}
</FormatMessage>
</p>
{/snippet}
</ConfirmModal>
</ModalBody>
<ModalFooter>
<div class="flex gap-3 w-full">
<Button shape="round" color="secondary" fullWidth onclick={() => onClose()}>
{$t('cancel')}
</Button>
<Button shape="round" color="primary" fullWidth onclick={() => handleRestoreUser()}>
{$t('restore')}
</Button>
</div>
</ModalFooter>
</Modal>