immich/web/src/lib/components/asset-viewer/delete-button.svelte
Robert Schäfer d8d64ecc45
fix: prevent trashing of trashed assets (#10028)
* fix: prevent trashing of trashed assets

Motivation
----------
This will improve user experience by hiding a pointless action.

You can not trash a trashed asset again. It won't get any trashier than it already is.

How to test
-----------
1. Visit route `/trash`
2. Click on an asset
3. Press "Delete" on your keyboard
4. Nothing happens
5. Try to find the trash button in the top right
6. You can't find it

* refactor: follow @michelheusschen's review

See:
https://github.com/immich-app/immich/pull/10028#pullrequestreview-2105296755

* refactor:  follow @michelheusschen's 2nd review

See: https://github.com/immich-app/immich/pull/10028#discussion_r1632057833
2024-06-08 15:03:39 -05:00

27 lines
795 B
Svelte

<script lang="ts">
import CircleIconButton from '$lib/components/elements/buttons/circle-icon-button.svelte';
import { createEventDispatcher } from 'svelte';
import { t } from 'svelte-i18n';
import { mdiDeleteOutline } from '@mdi/js';
import { type AssetResponseDto } from '@immich/sdk';
export let asset: AssetResponseDto;
type EventTypes = {
delete: void;
permanentlyDelete: void;
};
const dispatch = createEventDispatcher<EventTypes>();
</script>
{#if asset.isTrashed}
<CircleIconButton
color="opaque"
icon={mdiDeleteOutline}
on:click={() => dispatch('permanentlyDelete')}
title={$t('permanently_delete')}
/>
{:else}
<CircleIconButton color="opaque" icon={mdiDeleteOutline} on:click={() => dispatch('delete')} title={$t('delete')} />
{/if}