<script lang="ts">
  import FormatMessage from '$lib/components/i18n/format-message.svelte';
  import { handleError } from '$lib/utils/handle-error';
  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: (user?: UserAdminResponseDto) => void;
  }

  let { user, onClose }: Props = $props();

  const handleRestoreUser = async () => {
    try {
      const result = await restoreUserAdmin({ id: user.id });
      onClose(result);
    } catch (error) {
      handleError(error, $t('errors.unable_to_restore_user'));
    }
  };
</script>

<Modal title={$t('restore_user')} {onClose} icon={mdiDeleteRestore} size="small">
  <ModalBody>
    <p>
      <FormatMessage key="admin.user_restore_description" values={{ user: user.name }}>
        {#snippet children({ message })}
          <b>{message}</b>
        {/snippet}
      </FormatMessage>
    </p>
  </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>
