From 21d6755f3975ac319ef3ae2578bde5082fd6857f Mon Sep 17 00:00:00 2001 From: Ben Beckford Date: Thu, 14 May 2026 20:22:23 -0700 Subject: [PATCH] fix(web): recently added ux (#28435) --- web/src/routes/(user)/explore/+page.svelte | 37 +++++++++++++++++++--- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/web/src/routes/(user)/explore/+page.svelte b/web/src/routes/(user)/explore/+page.svelte index df4c9a9eb5..fa688d7e8b 100644 --- a/web/src/routes/(user)/explore/+page.svelte +++ b/web/src/routes/(user)/explore/+page.svelte @@ -4,15 +4,18 @@ import OnEvents from '$lib/components/OnEvents.svelte'; import EmptyPlaceholder from '$lib/components/shared-components/EmptyPlaceholder.svelte'; import SingleGridRow from '$lib/components/shared-components/SingleGridRow.svelte'; + import { assetViewerManager } from '$lib/managers/asset-viewer-manager.svelte'; import { Route } from '$lib/route'; import { getAssetMediaUrl, getPeopleThumbnailUrl } from '$lib/utils'; - import { AssetMediaSize, type SearchExploreResponseDto } from '@immich/sdk'; + import { getAssetInfo, AssetMediaSize, type SearchExploreResponseDto } from '@immich/sdk'; + import { authManager } from '$lib/managers/auth-manager.svelte'; import { Icon } from '@immich/ui'; import { mdiHeart } from '@mdi/js'; import { t } from 'svelte-i18n'; import type { PageData } from './$types'; import { toTimelineAsset } from '$lib/utils/timeline-util'; import { getAltText } from '$lib/utils/thumbnail-util'; + import Portal from '$lib/elements/Portal.svelte'; interface Props { data: PageData; @@ -40,6 +43,15 @@ } } }; + + const onViewAsset = async (id: string) => { + const asset = await getAssetInfo({ ...authManager.params, id }); + assetViewerManager.setAsset(asset); + }; + + const assetCursor = $derived({ + current: assetViewerManager.asset!, + }); @@ -122,15 +134,20 @@ draggable="false">{$t('view_all')} -
+
{#each recents as item (item.data.id)} - + {/each}
@@ -140,3 +157,15 @@ {/if} + +{#if assetViewerManager.isViewing} + {#await import('$lib/components/asset-viewer/AssetViewer.svelte') then { default: AssetViewer }} + + assetViewerManager.showAssetViewer(false)} + /> + + {/await} +{/if}