diff --git a/web/src/routes/(user)/utilities/[duplicates]/[[photos=photos]]/[[assetId=id]]/+page.svelte b/web/src/routes/(user)/utilities/[duplicates]/[[photos=photos]]/[[assetId=id]]/+page.svelte index 45d50a8e00..ae94b74a2f 100644 --- a/web/src/routes/(user)/utilities/[duplicates]/[[photos=photos]]/[[assetId=id]]/+page.svelte +++ b/web/src/routes/(user)/utilities/[duplicates]/[[photos=photos]]/[[assetId=id]]/+page.svelte @@ -9,25 +9,30 @@ notificationController, } from '$lib/components/shared-components/notification/notification'; import { s } from '$lib/utils'; - import { deleteAssets, getConfig, updateAssets } from '@immich/sdk'; + import { deleteAssets, updateAssets } from '@immich/sdk'; import { t } from 'svelte-i18n'; + import { featureFlags } from '$lib/stores/server-config.store'; + import { dialogController } from '$lib/components/shared-components/dialog/dialog'; export let data: PageData; const handleResolve = async (duplicateId: string, duplicateAssetIds: string[], trashIds: string[]) => { try { - const { trash } = await getConfig(); - // TODO - Create showConfirmDialog controller to show native confirm. - if ( - !trash.enabled && - trashIds.length > 0 && - !confirm('Are you sure you want to permanently delete these duplicates?') - ) { - return; + if (!$featureFlags.trash && trashIds.length > 0) { + const isConfirmed = await dialogController.show({ + title: 'Confirm', + prompt: 'Are you sure you want to permanently delete these duplicates?', + confirmText: 'Yes', + cancelText: 'No', + }); + + if (!isConfirmed) { + return; + } } await updateAssets({ assetBulkUpdateDto: { ids: duplicateAssetIds, duplicateId: null } }); - await deleteAssets({ assetBulkDeleteDto: { ids: trashIds, force: !trash.enabled } }); + await deleteAssets({ assetBulkDeleteDto: { ids: trashIds, force: !$featureFlags.trash } }); data.duplicates = data.duplicates.filter((duplicate) => duplicate.duplicateId !== duplicateId);