From 1eed0e14f567d701dd3cd085e679abbb4b54a756 Mon Sep 17 00:00:00 2001 From: Calum Dingwall <29152895+caburum@users.noreply.github.com> Date: Fri, 26 Jul 2024 17:20:35 -0600 Subject: [PATCH 1/5] feat(web): persist people page scroll position when clicking back on person page --- .../layouts/user-page-layout.svelte | 7 ++- web/src/lib/constants.ts | 5 ++ web/src/routes/(user)/people/+page.svelte | 54 ++++++++++++++++++- .../[[assetId=id]]/+page.svelte | 14 +++-- 4 files changed, 74 insertions(+), 6 deletions(-) diff --git a/web/src/lib/components/layouts/user-page-layout.svelte b/web/src/lib/components/layouts/user-page-layout.svelte index 8222007d57a4b..b7c70aeb5a744 100644 --- a/web/src/lib/components/layouts/user-page-layout.svelte +++ b/web/src/lib/components/layouts/user-page-layout.svelte @@ -11,6 +11,8 @@ export let scrollbar = true; export let admin = false; + export let scrollSlot: HTMLDivElement; + $: scrollbarClass = scrollbar ? 'immich-scrollbar p-2 pb-8' : 'scrollbar-hidden'; $: hasTitleClass = title ? 'top-16 h-[calc(100%-theme(spacing.16))]' : 'top-0 h-full'; @@ -49,7 +51,10 @@ {/if} -
+
diff --git a/web/src/lib/constants.ts b/web/src/lib/constants.ts index 7e82ef75bcdec..f2e5998925cf4 100644 --- a/web/src/lib/constants.ts +++ b/web/src/lib/constants.ts @@ -78,6 +78,11 @@ export enum QueryParameter { PAGE = 'page', } +export enum SessionStorageKey { + INFINITE_SCROLL_PAGE = 'infiniteScrollPage', + SCROLL_POSITION = 'scrollPosition', +} + export enum OpenSettingQueryParameterValue { OAUTH = 'oauth', JOB = 'job', diff --git a/web/src/routes/(user)/people/+page.svelte b/web/src/routes/(user)/people/+page.svelte index f1a2674e24905..eda4893230450 100644 --- a/web/src/routes/(user)/people/+page.svelte +++ b/web/src/routes/(user)/people/+page.svelte @@ -1,5 +1,5 @@ - +
diff --git a/web/src/routes/(user)/albums/[albumId=id]/[[photos=photos]]/[[assetId=id]]/+page.svelte b/web/src/routes/(user)/albums/[albumId=id]/[[photos=photos]]/[[assetId=id]]/+page.svelte index d44cf15fcf68a..3f3c8fc160966 100644 --- a/web/src/routes/(user)/albums/[albumId=id]/[[photos=photos]]/[[assetId=id]]/+page.svelte +++ b/web/src/routes/(user)/albums/[albumId=id]/[[photos=photos]]/[[assetId=id]]/+page.svelte @@ -1,5 +1,5 @@ - +
diff --git a/web/src/routes/(user)/albums/[albumId=id]/[[photos=photos]]/[[assetId=id]]/+page.svelte b/web/src/routes/(user)/albums/[albumId=id]/[[photos=photos]]/[[assetId=id]]/+page.svelte index d22f59d379928..029b5093e194a 100644 --- a/web/src/routes/(user)/albums/[albumId=id]/[[photos=photos]]/[[assetId=id]]/+page.svelte +++ b/web/src/routes/(user)/albums/[albumId=id]/[[photos=photos]]/[[assetId=id]]/+page.svelte @@ -1,5 +1,6 @@ -
+
{#if $isMultiSelectState} assetInteractionStore.clearMultiselect()}> diff --git a/web/src/routes/(user)/people/+page.svelte b/web/src/routes/(user)/people/+page.svelte index a7a773211d102..b3349e2ddd0dc 100644 --- a/web/src/routes/(user)/people/+page.svelte +++ b/web/src/routes/(user)/people/+page.svelte @@ -1,7 +1,8 @@