mirror of
https://github.com/samsonjs/immich.git
synced 2026-04-20 13:35:54 +00:00
56 lines
1.8 KiB
TypeScript
56 lines
1.8 KiB
TypeScript
import { eventManager } from '$lib/managers/event-manager.svelte';
|
|
import { downloadArchive } from '$lib/utils/asset-utils';
|
|
import { handleError } from '$lib/utils/handle-error';
|
|
import { getFormatter } from '$lib/utils/i18n';
|
|
import { deleteAlbum, type AlbumResponseDto } from '@immich/sdk';
|
|
import { modalManager, toastManager } from '@immich/ui';
|
|
|
|
export const handleDeleteAlbum = async (album: AlbumResponseDto, options?: { prompt?: boolean; notify?: boolean }) => {
|
|
const $t = await getFormatter();
|
|
const { prompt = true, notify = true } = options ?? {};
|
|
|
|
if (prompt) {
|
|
const confirmation =
|
|
album.albumName.length > 0
|
|
? $t('album_delete_confirmation', { values: { album: album.albumName } })
|
|
: $t('unnamed_album_delete_confirmation');
|
|
const description = $t('album_delete_confirmation_description');
|
|
|
|
const success = await modalManager.showDialog({ prompt: `${confirmation} ${description}` });
|
|
if (!success) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
try {
|
|
await deleteAlbum({ id: album.id });
|
|
|
|
eventManager.emit('AlbumDelete', album);
|
|
|
|
if (notify) {
|
|
toastManager.success();
|
|
}
|
|
|
|
return true;
|
|
} catch (error) {
|
|
handleError(error, $t('errors.unable_to_delete_album'));
|
|
return false;
|
|
}
|
|
};
|
|
|
|
export const handleDownloadAlbum = async (album: AlbumResponseDto) => {
|
|
await downloadArchive(`${album.albumName}.zip`, { albumId: album.id });
|
|
};
|
|
|
|
export const handleConfirmAlbumDelete = async (album: AlbumResponseDto) => {
|
|
const $t = await getFormatter();
|
|
const confirmation =
|
|
album.albumName.length > 0
|
|
? $t('album_delete_confirmation', { values: { album: album.albumName } })
|
|
: $t('unnamed_album_delete_confirmation');
|
|
|
|
const description = $t('album_delete_confirmation_description');
|
|
const prompt = `${confirmation} ${description}`;
|
|
|
|
return modalManager.showDialog({ prompt });
|
|
};
|