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} - + {/if} {#if showDetailButton} @@ -184,7 +184,7 @@ {/if} {#if showDownloadButton} - + {/if} {#if !isLocked} @@ -243,7 +243,7 @@ {/if} {#if !asset.isTrashed} - + {/if}
{ if (stack && stack?.assets.length > 1) { - preloadAssets.push(toTimelineAsset(stack.assets[1])); + preloadAssets.push(toAsset(stack.assets[1])); } }); }; @@ -156,7 +156,7 @@ slideshowStateUnsubscribe = slideshowState.subscribe((value) => { if (value === SlideshowState.PlaySlideshow) { slideshowHistory.reset(); - slideshowHistory.queue(toTimelineAsset(asset)); + slideshowHistory.queue(toAsset(asset)); handlePromiseError(handlePlaySlideshow()); } else if (value === SlideshowState.StopSlideshow) { handlePromiseError(handleStopSlideshow()); @@ -166,7 +166,7 @@ shuffleSlideshowUnsubscribe = slideshowNavigation.subscribe((value) => { if (value === SlideshowNavigation.Shuffle) { slideshowHistory.reset(); - slideshowHistory.queue(toTimelineAsset(asset)); + slideshowHistory.queue(toAsset(asset)); } }); @@ -571,7 +571,7 @@ imageClass={{ 'border-2 border-white': stackedAsset.id === asset.id }} brokenAssetClass="text-xs" dimmed={stackedAsset.id !== asset.id} - asset={toTimelineAsset(stackedAsset)} + asset={toAsset(stackedAsset)} onClick={() => { asset = stackedAsset; previewStackedAsset = undefined; diff --git a/web/src/lib/components/asset-viewer/editor/crop-tool/crop-area.svelte b/web/src/lib/components/asset-viewer/editor/crop-tool/crop-area.svelte index d61a534ed1..c82142f1cc 100644 --- a/web/src/lib/components/asset-viewer/editor/crop-tool/crop-area.svelte +++ b/web/src/lib/components/asset-viewer/editor/crop-tool/crop-area.svelte @@ -12,7 +12,7 @@ resetGlobalCropStore, rotateDegrees, } from '$lib/stores/asset-editor.store'; - import { toTimelineAsset } from '$lib/utils/timeline-util'; + import { toAsset } from '$lib/utils/timeline-util'; import type { AssetResponseDto } from '@immich/sdk'; import { animateCropChange, recalculateCrop } from './crop-settings'; import { cropAreaEl, cropFrame, imgElement, isResizingOrDragging, overlayEl, resetCropStore } from './crop-store'; @@ -80,7 +80,7 @@ aria-label="Crop area" type="button" > - {$getAltText(toTimelineAsset(asset))} + {$getAltText(toAsset(asset))}
diff --git a/web/src/lib/components/asset-viewer/photo-viewer.svelte b/web/src/lib/components/asset-viewer/photo-viewer.svelte index 7f4c254a59..0badf0924e 100644 --- a/web/src/lib/components/asset-viewer/photo-viewer.svelte +++ b/web/src/lib/components/asset-viewer/photo-viewer.svelte @@ -5,7 +5,7 @@ import BrokenAsset from '$lib/components/assets/broken-asset.svelte'; import { assetViewerFadeDuration } from '$lib/constants'; import { castManager } from '$lib/managers/cast-manager.svelte'; - import type { TimelineAsset } from '$lib/managers/timeline-manager/types'; + import type { Asset } from '$lib/managers/timeline-manager/types'; import { photoViewerImgElement } from '$lib/stores/assets-store.svelte'; import { isFaceEditMode } from '$lib/stores/face-edit.svelte'; import { boundingBoxesArray } from '$lib/stores/people.store'; @@ -18,7 +18,7 @@ import { getBoundingBox } from '$lib/utils/people-utils'; import { cancelImageUrl } from '$lib/utils/sw-messaging'; import { getAltText } from '$lib/utils/thumbnail-util'; - import { toTimelineAsset } from '$lib/utils/timeline-util'; + import { toAsset } from '$lib/utils/timeline-util'; import { AssetMediaSize, type AssetResponseDto, type SharedLinkResponseDto } from '@immich/sdk'; import { LoadingSpinner } from '@immich/ui'; import { onDestroy, onMount } from 'svelte'; @@ -29,7 +29,7 @@ interface Props { asset: AssetResponseDto; - preloadAssets?: TimelineAsset[] | undefined; + preloadAssets?: Asset[] | undefined; element?: HTMLDivElement | undefined; haveFadeTransition?: boolean; sharedLink?: SharedLinkResponseDto | undefined; @@ -72,7 +72,7 @@ $boundingBoxesArray = []; }); - const preload = (targetSize: AssetMediaSize | 'original', preloadAssets?: TimelineAsset[]) => { + const preload = (targetSize: AssetMediaSize | 'original', preloadAssets?: Asset[]) => { for (const preloadAsset of preloadAssets || []) { if (preloadAsset.isImage) { let img = new Image(); @@ -249,7 +249,7 @@ {$getAltText(toTimelineAsset(asset))} void; - onSelect?: (asset: TimelineAsset) => void; + onClick?: (asset: Asset) => void; + onSelect?: (asset: Asset) => void; onMouseEvent?: (event: { isMouseOver: boolean; selectedGroupIndex: number }) => void; } diff --git a/web/src/lib/components/memory-page/memory-photo-viewer.svelte b/web/src/lib/components/memory-page/memory-photo-viewer.svelte index 91ce1d9239..ea2dad49d2 100644 --- a/web/src/lib/components/memory-page/memory-photo-viewer.svelte +++ b/web/src/lib/components/memory-page/memory-photo-viewer.svelte @@ -1,6 +1,6 @@ diff --git a/web/src/routes/(user)/people/[personId]/[[photos=photos]]/[[assetId=id]]/+page.svelte b/web/src/routes/(user)/people/[personId]/[[photos=photos]]/[[assetId=id]]/+page.svelte index 5de52fc689..46d09f81e3 100644 --- a/web/src/routes/(user)/people/[personId]/[[photos=photos]]/[[assetId=id]]/+page.svelte +++ b/web/src/routes/(user)/people/[personId]/[[photos=photos]]/[[assetId=id]]/+page.svelte @@ -31,7 +31,7 @@ import Timeline from '$lib/components/timeline/Timeline.svelte'; import { AppRoute, PersonPageViewMode, QueryParameter, SessionStorageKey } from '$lib/constants'; import { TimelineManager } from '$lib/managers/timeline-manager/timeline-manager.svelte'; - import type { TimelineAsset } from '$lib/managers/timeline-manager/types'; + import type { Asset } from '$lib/managers/timeline-manager/types'; import PersonEditBirthDateModal from '$lib/modals/PersonEditBirthDateModal.svelte'; import PersonMergeSuggestionModal from '$lib/modals/PersonMergeSuggestionModal.svelte'; import { AssetInteraction } from '$lib/stores/asset-interaction.svelte'; @@ -204,7 +204,7 @@ data = { ...data, person }; }; - const handleSelectFeaturePhoto = async (asset: TimelineAsset) => { + const handleSelectFeaturePhoto = async (asset: Asset) => { if (viewMode !== PersonPageViewMode.SELECT_PERSON) { return; } @@ -354,7 +354,7 @@ await updateAssetCount(); }; - const handleUndoDeleteAssets = async (assets: TimelineAsset[]) => { + const handleUndoDeleteAssets = async (assets: Asset[]) => { timelineManager.addAssets(assets); await updateAssetCount(); }; diff --git a/web/src/routes/(user)/search/[[photos=photos]]/[[assetId=id]]/+page.svelte b/web/src/routes/(user)/search/[[photos=photos]]/[[assetId=id]]/+page.svelte index 3934c3e445..b194df2eb2 100644 --- a/web/src/routes/(user)/search/[[photos=photos]]/[[assetId=id]]/+page.svelte +++ b/web/src/routes/(user)/search/[[photos=photos]]/[[assetId=id]]/+page.svelte @@ -22,7 +22,7 @@ import AssetSelectControlBar from '$lib/components/timeline/AssetSelectControlBar.svelte'; import { AppRoute, QueryParameter } from '$lib/constants'; import { TimelineManager } from '$lib/managers/timeline-manager/timeline-manager.svelte'; - import type { TimelineAsset, Viewport } from '$lib/managers/timeline-manager/types'; + import type { Asset, Viewport } from '$lib/managers/timeline-manager/types'; import { AssetInteraction } from '$lib/stores/asset-interaction.svelte'; import { assetViewingStore } from '$lib/stores/asset-viewing.store'; import { lang, locale } from '$lib/stores/preferences.store'; @@ -33,7 +33,7 @@ import { parseUtcDate } from '$lib/utils/date-time'; import { handleError } from '$lib/utils/handle-error'; import { isAlbumsRoute, isPeopleRoute } from '$lib/utils/navigation'; - import { toTimelineAsset } from '$lib/utils/timeline-util'; + import { toAsset } from '$lib/utils/timeline-util'; import { type AlbumResponseDto, getPerson, @@ -59,7 +59,7 @@ let nextPage = $state(1); let searchResultAlbums: AlbumResponseDto[] = $state([]); - let searchResultAssets: TimelineAsset[] = $state([]); + let searchResultAssets: Asset[] = $state([]); let isLoading = $state(true); let scrollY = $state(0); let scrollYHistory = 0; @@ -125,7 +125,7 @@ const onAssetDelete = (assetIds: string[]) => { const assetIdSet = new Set(assetIds); - searchResultAssets = searchResultAssets.filter((asset: TimelineAsset) => !assetIdSet.has(asset.id)); + searchResultAssets = searchResultAssets.filter((asset: Asset) => !assetIdSet.has(asset.id)); }; const handleSetVisibility = (assetIds: string[]) => { @@ -167,7 +167,7 @@ : await searchAssets({ metadataSearchDto: searchDto }); searchResultAlbums.push(...albums.items); - searchResultAssets.push(...assets.items.map((asset) => toTimelineAsset(asset))); + searchResultAssets.push(...assets.items.map((asset) => toAsset(asset))); nextPage = Number(assets.nextPage) || 0; } catch (error) { diff --git a/web/src/routes/(user)/utilities/geolocation/+page.svelte b/web/src/routes/(user)/utilities/geolocation/+page.svelte index 5441257df4..118f375bd8 100644 --- a/web/src/routes/(user)/utilities/geolocation/+page.svelte +++ b/web/src/routes/(user)/utilities/geolocation/+page.svelte @@ -7,12 +7,12 @@ import { authManager } from '$lib/managers/auth-manager.svelte'; import type { DayGroup } from '$lib/managers/timeline-manager/day-group.svelte'; import { TimelineManager } from '$lib/managers/timeline-manager/timeline-manager.svelte'; - import type { TimelineAsset } from '$lib/managers/timeline-manager/types'; + import type { Asset } from '$lib/managers/timeline-manager/types'; import GeolocationUpdateConfirmModal from '$lib/modals/GeolocationUpdateConfirmModal.svelte'; import { AssetInteraction } from '$lib/stores/asset-interaction.svelte'; import { cancelMultiselect } from '$lib/utils/asset-utils'; import { setQueryValue } from '$lib/utils/navigation'; - import { toTimelineAsset } from '$lib/utils/timeline-util'; + import { toAsset } from '$lib/utils/timeline-util'; import { AssetVisibility, getAssetInfo, updateAssets } from '@immich/sdk'; import { Button, LoadingSpinner, modalManager, Text } from '@immich/ui'; import { mdiMapMarkerMultipleOutline, mdiPencilOutline, mdiSelectRemove } from '@mdi/js'; @@ -59,7 +59,7 @@ const updatedAssets = await Promise.all( assetInteraction.selectedAssets.map(async (asset) => { const updatedAsset = await getAssetInfo({ ...authManager.params, id: asset.id }); - return toTimelineAsset(updatedAsset); + return toAsset(updatedAsset); }), ); @@ -106,20 +106,15 @@ } }; - const hasGps = (asset: TimelineAsset) => { + const hasGps = (asset: Asset) => { return !!asset.latitude && !!asset.longitude; }; const handleThumbnailClick = ( - asset: TimelineAsset, + asset: Asset, timelineManager: TimelineManager, dayGroup: DayGroup, - onClick: ( - timelineManager: TimelineManager, - assets: TimelineAsset[], - groupTitle: string, - asset: TimelineAsset, - ) => void, + onClick: (timelineManager: TimelineManager, assets: Asset[], groupTitle: string, asset: Asset) => void, ) => { if (hasGps(asset)) { locationUpdated = true; @@ -195,7 +190,7 @@ withStacked onThumbnailClick={handleThumbnailClick} > - {#snippet customLayout(asset: TimelineAsset)} + {#snippet customLayout(asset: Asset)} {#if hasGps(asset)}
{asset.city || $t('gps')} diff --git a/web/src/test-data/factories/asset-factory.ts b/web/src/test-data/factories/asset-factory.ts index 8d328ddcc7..e33f876559 100644 --- a/web/src/test-data/factories/asset-factory.ts +++ b/web/src/test-data/factories/asset-factory.ts @@ -1,4 +1,4 @@ -import type { TimelineAsset } from '$lib/managers/timeline-manager/types'; +import type { Asset } from '$lib/managers/timeline-manager/types'; import { fromISODateTimeUTCToObject, fromTimelinePlainDateTime } from '$lib/utils/timeline-util'; import { faker } from '@faker-js/faker'; import { AssetTypeEnum, AssetVisibility, type AssetResponseDto, type TimeBucketAssetResponseDto } from '@immich/sdk'; @@ -30,7 +30,7 @@ export const assetFactory = Sync.makeFactory({ visibility: AssetVisibility.Timeline, }); -export const timelineAssetFactory = Sync.makeFactory({ +export const timelineAssetFactory = Sync.makeFactory({ id: Sync.each(() => faker.string.uuid()), ratio: Sync.each(() => faker.number.int()), ownerId: Sync.each(() => faker.string.uuid()), @@ -51,7 +51,7 @@ export const timelineAssetFactory = Sync.makeFactory({ people: [faker.person.fullName()], }); -export const toResponseDto = (...timelineAsset: TimelineAsset[]) => { +export const toResponseDto = (...timelineAsset: Asset[]) => { const bucketAssets: TimeBucketAssetResponseDto = { city: [], country: [],