diff --git a/web/src/lib/constants.ts b/web/src/lib/constants.ts index c94b53239b092..85a3e3f9d2cc1 100644 --- a/web/src/lib/constants.ts +++ b/web/src/lib/constants.ts @@ -71,6 +71,7 @@ export const dateFormats = { export enum QueryParameter { ACTION = 'action', + AFTER_MERGE_ROUTE = 'afterMergeRoute', ID = 'id', IS_OPEN = 'isOpen', ONBOARDING_STEP = 'step', diff --git a/web/src/routes/(user)/people/+page.svelte b/web/src/routes/(user)/people/+page.svelte index b6d25c48bf937..6827de6442a5e 100644 --- a/web/src/routes/(user)/people/+page.svelte +++ b/web/src/routes/(user)/people/+page.svelte @@ -193,9 +193,11 @@ }; const handleMergePeople = async (detail: PersonResponseDto) => { - await goto( - `${AppRoute.PEOPLE}/${detail.id}?${QueryParameter.ACTION}=${ActionQueryParameterValue.MERGE}&${QueryParameter.PREVIOUS_ROUTE}=${AppRoute.PEOPLE}`, - ); + const url = new URL(`${AppRoute.PEOPLE}/${detail.id}`, window.location.href); + url.searchParams.append(QueryParameter.ACTION, ActionQueryParameterValue.MERGE); + url.searchParams.append(QueryParameter.PREVIOUS_ROUTE, AppRoute.PEOPLE); + url.searchParams.append(QueryParameter.AFTER_MERGE_ROUTE, AppRoute.PEOPLE); + await goto(url); }; const submitNameChange = async () => { 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 037feaf35f6f1..b1c580c7182ee 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 @@ -90,6 +90,7 @@ let viewMode: ViewMode = ViewMode.VIEW_ASSETS; let isEditingName = false; let previousRoute: string = AppRoute.EXPLORE; + let afterMergeRoute: string | undefined = undefined; let people: PersonResponseDto[] = []; let personMerge1: PersonResponseDto; let personMerge2: PersonResponseDto; @@ -119,6 +120,11 @@ if (getPreviousRoute && !isExternalUrl(getPreviousRoute)) { previousRoute = getPreviousRoute; } + + const getAfterMergeRoute = $page.url.searchParams.get(QueryParameter.AFTER_MERGE_ROUTE); + if (getAfterMergeRoute && !isExternalUrl(getAfterMergeRoute)) { + afterMergeRoute = getAfterMergeRoute; + } if (action == 'merge') { viewMode = ViewMode.MERGE_PEOPLE; } @@ -188,6 +194,10 @@ }; const handleMerge = async (person: PersonResponseDto) => { + if (afterMergeRoute) { + await goto(afterMergeRoute); + return; + } await updateAssetCount(); await handleGoBack();