diff --git a/i18n/en.json b/i18n/en.json index fde78a34a3d..b712faa3c2b 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -1867,6 +1867,7 @@ "use_current_connection": "use current connection", "use_custom_date_range": "Use custom date range instead", "user": "User", + "user_has_been_deleted": "This user has been deleted.", "user_id": "User ID", "user_liked": "{user} liked {type, select, photo {this photo} video {this video} asset {this asset} other {it}}", "created_at": "Created", diff --git a/web/src/lib/modals/UserDeleteConfirmModal.svelte b/web/src/lib/modals/UserDeleteConfirmModal.svelte index 9439c23568e..294cafa035c 100644 --- a/web/src/lib/modals/UserDeleteConfirmModal.svelte +++ b/web/src/lib/modals/UserDeleteConfirmModal.svelte @@ -4,12 +4,12 @@ import ConfirmModal from '$lib/modals/ConfirmModal.svelte'; import { serverConfig } from '$lib/stores/server-config.store'; import { handleError } from '$lib/utils/handle-error'; - import { deleteUserAdmin, type UserResponseDto } from '@immich/sdk'; + import { deleteUserAdmin, type UserAdminResponseDto, type UserResponseDto } from '@immich/sdk'; import { t } from 'svelte-i18n'; interface Props { user: UserResponseDto; - onClose: (confirmed?: true) => void; + onClose: (user?: UserAdminResponseDto) => void; } let { user, onClose }: Props = $props(); @@ -20,14 +20,12 @@ const handleDeleteUser = async () => { try { - const { deletedAt } = await deleteUserAdmin({ + const result = await deleteUserAdmin({ id: user.id, userAdminDeleteDto: { force: forceDelete }, }); - if (deletedAt !== undefined) { - onClose(true); - } + onClose(result); } catch (error) { handleError(error, $t('errors.unable_to_delete_user')); } diff --git a/web/src/lib/modals/UserRestoreConfirmModal.svelte b/web/src/lib/modals/UserRestoreConfirmModal.svelte index 130164c80ee..c8fde89f366 100644 --- a/web/src/lib/modals/UserRestoreConfirmModal.svelte +++ b/web/src/lib/modals/UserRestoreConfirmModal.svelte @@ -1,34 +1,30 @@ - (confirmed ? handleRestoreUser() : onClose())} -> - {#snippet promptSnippet()} + +

{#snippet children({ message })} @@ -36,5 +32,16 @@ {/snippet}

- {/snippet} -
+ + + +
+ + +
+
+ diff --git a/web/src/routes/admin/users/+page.svelte b/web/src/routes/admin/users/+page.svelte index dc21be6c24c..bd8ccf59f6f 100644 --- a/web/src/routes/admin/users/+page.svelte +++ b/web/src/routes/admin/users/+page.svelte @@ -18,8 +18,8 @@ import { websocketEvents } from '$lib/stores/websocket'; import { getByteUnitString } from '$lib/utils/byte-units'; import { UserStatus, searchUsersAdmin, type UserAdminResponseDto } from '@immich/sdk'; - import { Button, IconButton, Link } from '@immich/ui'; - import { mdiDeleteRestore, mdiInfinity, mdiPencilOutline, mdiTrashCanOutline } from '@mdi/js'; + import { Button, HStack, IconButton, Link, Text } from '@immich/ui'; + import { mdiDeleteRestore, mdiInfinity, mdiPencilOutline, mdiPlusBoxOutline, mdiTrashCanOutline } from '@mdi/js'; import { DateTime } from 'luxon'; import { onMount } from 'svelte'; import { t } from 'svelte-i18n'; @@ -86,6 +86,13 @@ + {#snippet buttons()} + + + + {/snippet}
@@ -163,7 +170,6 @@ {/if}
-
diff --git a/web/src/routes/admin/users/[id]/+page.svelte b/web/src/routes/admin/users/[id]/+page.svelte index 6cf5530ece8..03f5e649633 100644 --- a/web/src/routes/admin/users/[id]/+page.svelte +++ b/web/src/routes/admin/users/[id]/+page.svelte @@ -1,5 +1,4 @@