diff --git a/web/src/lib/modals/UserDeleteConfirmModal.svelte b/web/src/lib/modals/UserDeleteConfirmModal.svelte index 74f1796232..9c9223707e 100644 --- a/web/src/lib/modals/UserDeleteConfirmModal.svelte +++ b/web/src/lib/modals/UserDeleteConfirmModal.svelte @@ -3,57 +3,51 @@ import { serverConfig } from '$lib/stores/server-config.store'; import { handleError } from '$lib/utils/handle-error'; import { deleteUserAdmin, type UserAdminResponseDto, type UserResponseDto } from '@immich/sdk'; - import { Checkbox, ConfirmModal, Label } from '@immich/ui'; + import { Alert, Checkbox, ConfirmModal, Field, Input, Label, Text } from '@immich/ui'; import { t } from 'svelte-i18n'; - interface Props { + type Props = { user: UserResponseDto; onClose: (user?: UserAdminResponseDto) => void; - } + }; let { user, onClose }: Props = $props(); - let forceDelete = $state(false); - let deleteButtonDisabled = $state(false); - let userIdInput: string = ''; + let force = $state(false); + let email = $state(''); + let disabled = $derived(force && email !== user.email); + + const handleClose = async (confirmed: boolean) => { + if (!confirmed) { + onClose(); + return; + } - const handleDeleteUser = async () => { try { - const result = await deleteUserAdmin({ - id: user.id, - userAdminDeleteDto: { force: forceDelete }, - }); - + const result = await deleteUserAdmin({ id: user.id, userAdminDeleteDto: { force } }); onClose(result); } catch (error) { handleError(error, $t('errors.unable_to_delete_user')); } }; - - const handleConfirm = (e: Event) => { - userIdInput = (e.target as HTMLInputElement).value; - deleteButtonDisabled = userIdInput != user.email; - }; (confirmed ? handleDeleteUser() : onClose())} - disabled={deleteButtonDisabled} + confirmText={force ? $t('permanently_delete') : $t('delete')} + onClose={handleClose} + {disabled} > {#snippet promptSnippet()}
- {#if forceDelete} -

+ + {#if force} {#snippet children({ message })} {message} {/snippet} -

- {:else} -

+ {:else} {message} {/snippet} -

- {/if} + {/if} + -
- (deleteButtonDisabled = forceDelete)} - /> +
+
- {#if forceDelete} -

{$t('admin.force_delete_user_warning')}

+ {#if force} + {$t('admin.force_delete_user_warning')} -

- {$t('admin.confirm_email_below', { values: { email: user.email } })} -

- - + + + {/if}
{/snippet}