diff --git a/web/src/lib/components/asset-viewer/actions/action.ts b/web/src/lib/components/asset-viewer/actions/action.ts
index 6a807d2766..3eb546d4d3 100644
--- a/web/src/lib/components/asset-viewer/actions/action.ts
+++ b/web/src/lib/components/asset-viewer/actions/action.ts
@@ -1,24 +1,24 @@
import type { AssetAction } from '$lib/constants';
-import type { TimelineAsset } from '$lib/managers/timeline-manager/types';
+import type { Asset } from '$lib/managers/timeline-manager/types';
import type { AlbumResponseDto, AssetResponseDto, PersonResponseDto, StackResponseDto } from '@immich/sdk';
type ActionMap = {
- [AssetAction.ARCHIVE]: { asset: TimelineAsset };
- [AssetAction.UNARCHIVE]: { asset: TimelineAsset };
- [AssetAction.FAVORITE]: { asset: TimelineAsset };
- [AssetAction.UNFAVORITE]: { asset: TimelineAsset };
- [AssetAction.TRASH]: { asset: TimelineAsset };
- [AssetAction.DELETE]: { asset: TimelineAsset };
- [AssetAction.RESTORE]: { asset: TimelineAsset };
- [AssetAction.ADD]: { asset: TimelineAsset };
- [AssetAction.ADD_TO_ALBUM]: { asset: TimelineAsset; album: AlbumResponseDto };
+ [AssetAction.ARCHIVE]: { asset: Asset };
+ [AssetAction.UNARCHIVE]: { asset: Asset };
+ [AssetAction.FAVORITE]: { asset: Asset };
+ [AssetAction.UNFAVORITE]: { asset: Asset };
+ [AssetAction.TRASH]: { asset: Asset };
+ [AssetAction.DELETE]: { asset: Asset };
+ [AssetAction.RESTORE]: { asset: Asset };
+ [AssetAction.ADD]: { asset: Asset };
+ [AssetAction.ADD_TO_ALBUM]: { asset: Asset; album: AlbumResponseDto };
[AssetAction.STACK]: { stack: StackResponseDto };
- [AssetAction.UNSTACK]: { assets: TimelineAsset[] };
- [AssetAction.KEEP_THIS_DELETE_OTHERS]: { asset: TimelineAsset };
+ [AssetAction.UNSTACK]: { assets: Asset[] };
+ [AssetAction.KEEP_THIS_DELETE_OTHERS]: { asset: Asset };
[AssetAction.SET_STACK_PRIMARY_ASSET]: { stack: StackResponseDto };
[AssetAction.REMOVE_ASSET_FROM_STACK]: { stack: StackResponseDto | null; asset: AssetResponseDto };
- [AssetAction.SET_VISIBILITY_LOCKED]: { asset: TimelineAsset };
- [AssetAction.SET_VISIBILITY_TIMELINE]: { asset: TimelineAsset };
+ [AssetAction.SET_VISIBILITY_LOCKED]: { asset: Asset };
+ [AssetAction.SET_VISIBILITY_TIMELINE]: { asset: Asset };
[AssetAction.SET_PERSON_FEATURED_PHOTO]: { asset: AssetResponseDto; person: PersonResponseDto };
};
diff --git a/web/src/lib/components/asset-viewer/actions/add-to-album-action.svelte b/web/src/lib/components/asset-viewer/actions/add-to-album-action.svelte
index 2c6ac54ef7..8d5c1b6fe9 100644
--- a/web/src/lib/components/asset-viewer/actions/add-to-album-action.svelte
+++ b/web/src/lib/components/asset-viewer/actions/add-to-album-action.svelte
@@ -5,7 +5,7 @@
import { AssetAction } from '$lib/constants';
import AlbumPickerModal from '$lib/modals/AlbumPickerModal.svelte';
import { addAssetsToAlbum, addAssetsToAlbums } from '$lib/utils/asset-utils';
- import { toTimelineAsset } from '$lib/utils/timeline-util';
+ import { toAsset } from '$lib/utils/timeline-util';
import type { AssetResponseDto } from '@immich/sdk';
import { modalManager } from '@immich/ui';
import { mdiImageAlbum, mdiShareVariantOutline } from '@mdi/js';
@@ -29,13 +29,13 @@
if (albums.length === 1) {
const album = albums[0];
await addAssetsToAlbum(album.id, [asset.id]);
- onAction({ type: AssetAction.ADD_TO_ALBUM, asset: toTimelineAsset(asset), album });
+ onAction({ type: AssetAction.ADD_TO_ALBUM, asset: toAsset(asset), album });
} else {
await addAssetsToAlbums(
albums.map((a) => a.id),
[asset.id],
);
- onAction({ type: AssetAction.ADD_TO_ALBUM, asset: toTimelineAsset(asset), album: albums[0] });
+ onAction({ type: AssetAction.ADD_TO_ALBUM, asset: toAsset(asset), album: albums[0] });
}
};
diff --git a/web/src/lib/components/asset-viewer/actions/archive-action.svelte b/web/src/lib/components/asset-viewer/actions/archive-action.svelte
index c4936d21d0..82fa768848 100644
--- a/web/src/lib/components/asset-viewer/actions/archive-action.svelte
+++ b/web/src/lib/components/asset-viewer/actions/archive-action.svelte
@@ -4,7 +4,7 @@
import MenuOption from '$lib/components/shared-components/context-menu/menu-option.svelte';
import { AssetAction } from '$lib/constants';
import { toggleArchive } from '$lib/utils/asset-utils';
- import { toTimelineAsset } from '$lib/utils/timeline-util';
+ import { toAsset } from '$lib/utils/timeline-util';
import type { AssetResponseDto } from '@immich/sdk';
import { mdiArchiveArrowDownOutline, mdiArchiveArrowUpOutline } from '@mdi/js';
import { t } from 'svelte-i18n';
@@ -19,11 +19,11 @@
const onArchive = async () => {
if (!asset.isArchived) {
- preAction({ type: AssetAction.ARCHIVE, asset: toTimelineAsset(asset) });
+ preAction({ type: AssetAction.ARCHIVE, asset: toAsset(asset) });
}
const updatedAsset = await toggleArchive(asset);
if (updatedAsset) {
- onAction({ type: asset.isArchived ? AssetAction.ARCHIVE : AssetAction.UNARCHIVE, asset: toTimelineAsset(asset) });
+ onAction({ type: asset.isArchived ? AssetAction.ARCHIVE : AssetAction.UNARCHIVE, asset: toAsset(asset) });
}
};
diff --git a/web/src/lib/components/asset-viewer/actions/delete-action.svelte b/web/src/lib/components/asset-viewer/actions/delete-action.svelte
index 7d62bac1f5..f1d9310ce7 100644
--- a/web/src/lib/components/asset-viewer/actions/delete-action.svelte
+++ b/web/src/lib/components/asset-viewer/actions/delete-action.svelte
@@ -10,7 +10,7 @@
import { showDeleteModal } from '$lib/stores/preferences.store';
import { featureFlags } from '$lib/stores/server-config.store';
import { handleError } from '$lib/utils/handle-error';
- import { toTimelineAsset } from '$lib/utils/timeline-util';
+ import { toAsset } from '$lib/utils/timeline-util';
import { deleteAssets, type AssetResponseDto } from '@immich/sdk';
import { IconButton } from '@immich/ui';
import { mdiDeleteForeverOutline, mdiDeleteOutline } from '@mdi/js';
@@ -43,9 +43,9 @@
const trashAsset = async () => {
try {
- preAction({ type: AssetAction.TRASH, asset: toTimelineAsset(asset) });
+ preAction({ type: AssetAction.TRASH, asset: toAsset(asset) });
await deleteAssets({ assetBulkDeleteDto: { ids: [asset.id] } });
- onAction({ type: AssetAction.TRASH, asset: toTimelineAsset(asset) });
+ onAction({ type: AssetAction.TRASH, asset: toAsset(asset) });
notificationController.show({
message: $t('moved_to_trash'),
@@ -58,9 +58,9 @@
const deleteAsset = async () => {
try {
- preAction({ type: AssetAction.DELETE, asset: toTimelineAsset(asset) });
+ preAction({ type: AssetAction.DELETE, asset: toAsset(asset) });
await deleteAssets({ assetBulkDeleteDto: { ids: [asset.id], force: true } });
- onAction({ type: AssetAction.DELETE, asset: toTimelineAsset(asset) });
+ onAction({ type: AssetAction.DELETE, asset: toAsset(asset) });
notificationController.show({
message: $t('permanently_deleted_asset'),
diff --git a/web/src/lib/components/asset-viewer/actions/download-action.svelte b/web/src/lib/components/asset-viewer/actions/download-action.svelte
index f790569703..d9fb7a6468 100644
--- a/web/src/lib/components/asset-viewer/actions/download-action.svelte
+++ b/web/src/lib/components/asset-viewer/actions/download-action.svelte
@@ -2,7 +2,7 @@
import { shortcut } from '$lib/actions/shortcut';
import MenuOption from '$lib/components/shared-components/context-menu/menu-option.svelte';
import { authManager } from '$lib/managers/auth-manager.svelte';
- import type { TimelineAsset } from '$lib/managers/timeline-manager/types';
+ import type { Asset } from '$lib/managers/timeline-manager/types';
import { downloadFile } from '$lib/utils/asset-utils';
import { getAssetInfo } from '@immich/sdk';
import { IconButton } from '@immich/ui';
@@ -10,7 +10,7 @@
import { t } from 'svelte-i18n';
interface Props {
- asset: TimelineAsset;
+ asset: Asset;
menuItem?: boolean;
}
diff --git a/web/src/lib/components/asset-viewer/actions/favorite-action.svelte b/web/src/lib/components/asset-viewer/actions/favorite-action.svelte
index d299786bc9..f2409f093e 100644
--- a/web/src/lib/components/asset-viewer/actions/favorite-action.svelte
+++ b/web/src/lib/components/asset-viewer/actions/favorite-action.svelte
@@ -6,12 +6,12 @@
} from '$lib/components/shared-components/notification/notification';
import { AssetAction } from '$lib/constants';
import { handleError } from '$lib/utils/handle-error';
- import { toTimelineAsset } from '$lib/utils/timeline-util';
+ import { toAsset } from '$lib/utils/timeline-util';
import { updateAsset, type AssetResponseDto } from '@immich/sdk';
+ import { IconButton } from '@immich/ui';
import { mdiHeart, mdiHeartOutline } from '@mdi/js';
import { t } from 'svelte-i18n';
import type { OnAction } from './action';
- import { IconButton } from '@immich/ui';
interface Props {
asset: AssetResponseDto;
@@ -33,7 +33,7 @@
onAction({
type: asset.isFavorite ? AssetAction.FAVORITE : AssetAction.UNFAVORITE,
- asset: toTimelineAsset(asset),
+ asset: toAsset(asset),
});
notificationController.show({
diff --git a/web/src/lib/components/asset-viewer/actions/keep-this-delete-others.svelte b/web/src/lib/components/asset-viewer/actions/keep-this-delete-others.svelte
index dfb8d8910c..283b5a3f79 100644
--- a/web/src/lib/components/asset-viewer/actions/keep-this-delete-others.svelte
+++ b/web/src/lib/components/asset-viewer/actions/keep-this-delete-others.svelte
@@ -2,7 +2,7 @@
import MenuOption from '$lib/components/shared-components/context-menu/menu-option.svelte';
import { AssetAction } from '$lib/constants';
import { keepThisDeleteOthers } from '$lib/utils/asset-utils';
- import { toTimelineAsset } from '$lib/utils/timeline-util';
+ import { toAsset } from '$lib/utils/timeline-util';
import type { AssetResponseDto, StackResponseDto } from '@immich/sdk';
import { modalManager } from '@immich/ui';
import { mdiPinOutline } from '@mdi/js';
@@ -30,7 +30,7 @@
const keptAsset = await keepThisDeleteOthers(asset, stack);
if (keptAsset) {
- onAction({ type: AssetAction.UNSTACK, assets: [toTimelineAsset(keptAsset)] });
+ onAction({ type: AssetAction.UNSTACK, assets: [toAsset(keptAsset)] });
}
};
diff --git a/web/src/lib/components/asset-viewer/actions/restore-action.svelte b/web/src/lib/components/asset-viewer/actions/restore-action.svelte
index c790dab853..5c7602c9c3 100644
--- a/web/src/lib/components/asset-viewer/actions/restore-action.svelte
+++ b/web/src/lib/components/asset-viewer/actions/restore-action.svelte
@@ -6,7 +6,7 @@
} from '$lib/components/shared-components/notification/notification';
import { AssetAction } from '$lib/constants';
import { handleError } from '$lib/utils/handle-error';
- import { toTimelineAsset } from '$lib/utils/timeline-util';
+ import { toAsset } from '$lib/utils/timeline-util';
import { restoreAssets, type AssetResponseDto } from '@immich/sdk';
import { mdiHistory } from '@mdi/js';
import { t } from 'svelte-i18n';
@@ -24,7 +24,7 @@
await restoreAssets({ bulkIdsDto: { ids: [asset.id] } });
asset.isTrashed = false;
- onAction({ type: AssetAction.RESTORE, asset: toTimelineAsset(asset) });
+ onAction({ type: AssetAction.RESTORE, asset: toAsset(asset) });
notificationController.show({
type: NotificationType.Info,
diff --git a/web/src/lib/components/asset-viewer/actions/set-visibility-action.svelte b/web/src/lib/components/asset-viewer/actions/set-visibility-action.svelte
index 44c1687be6..7c8e907600 100644
--- a/web/src/lib/components/asset-viewer/actions/set-visibility-action.svelte
+++ b/web/src/lib/components/asset-viewer/actions/set-visibility-action.svelte
@@ -1,7 +1,7 @@
diff --git a/web/src/lib/components/asset-viewer/asset-viewer-nav-bar.svelte b/web/src/lib/components/asset-viewer/asset-viewer-nav-bar.svelte
index d61af04db6..b6f00b450e 100644
--- a/web/src/lib/components/asset-viewer/asset-viewer-nav-bar.svelte
+++ b/web/src/lib/components/asset-viewer/asset-viewer-nav-bar.svelte
@@ -31,7 +31,7 @@
import { getAssetJobName, getSharedLink } from '$lib/utils';
import { canCopyImageToClipboard } from '$lib/utils/asset-utils';
import { openFileUploadDialog } from '$lib/utils/file-uploader';
- import { toTimelineAsset } from '$lib/utils/timeline-util';
+ import { toAsset } from '$lib/utils/timeline-util';
import {
AssetJobName,
AssetTypeEnum,
@@ -165,7 +165,7 @@
{/if}
{#if !isOwner && showDownloadButton}
-