diff --git a/web/src/lib/components/faces-page/merge-face-selector.svelte b/web/src/lib/components/faces-page/merge-face-selector.svelte index d9a6c7b2c0..3747d812d4 100644 --- a/web/src/lib/components/faces-page/merge-face-selector.svelte +++ b/web/src/lib/components/faces-page/merge-face-selector.svelte @@ -12,7 +12,9 @@ import { NotificationType, notificationController } from '../shared-components/notification/notification'; import ConfirmDialogue from '../shared-components/confirm-dialogue.svelte'; import { handleError } from '$lib/utils/handle-error'; - import { invalidateAll } from '$app/navigation'; + import { goto, invalidateAll } from '$app/navigation'; + import { AppRoute } from '$lib/constants'; + import SwapHorizontal from 'svelte-material-icons/SwapHorizontal.svelte'; export let person: PersonResponseDto; let people: PersonResponseDto[] = []; @@ -22,8 +24,9 @@ let dispatch = createEventDispatcher(); $: hasSelection = selectedPeople.length > 0; - $: unselectedPeople = people.filter((source) => !selectedPeople.includes(source) && source.id !== person.id); - + $: unselectedPeople = people.filter( + (source) => !selectedPeople.some((selected) => selected.id === source.id) && source.id !== person.id, + ); onMount(async () => { const { data } = await api.personApi.getAllPeople({ withHidden: false }); people = data.people; @@ -33,6 +36,11 @@ dispatch('go-back'); }; + const handleSwapPeople = () => { + [person, selectedPeople[0]] = [selectedPeople[0], person]; + goto(`${AppRoute.PEOPLE}/${person.id}?action=merge`); + }; + const onSelect = (selected: PersonResponseDto) => { if (selectedPeople.includes(selected)) { selectedPeople = selectedPeople.filter((person) => person.id !== selected.id); @@ -112,7 +120,14 @@ {/each} {#if hasSelection} - + + {#if selectedPeople.length === 1} + + + {/if} + {/if} diff --git a/web/src/routes/(user)/people/[personId]/+page.svelte b/web/src/routes/(user)/people/[personId]/+page.svelte index 859eca594c..f449b71784 100644 --- a/web/src/routes/(user)/people/[personId]/+page.svelte +++ b/web/src/routes/(user)/people/[personId]/+page.svelte @@ -43,7 +43,7 @@ BIRTH_DATE = 'birth-date', } - const assetStore = new AssetStore({ + let assetStore = new AssetStore({ size: TimeBucketSize.Month, isArchived: false, personId: data.person.id, @@ -54,6 +54,7 @@ let viewMode: ViewMode = ViewMode.VIEW_ASSETS; let isEditingName = false; let previousRoute: string = AppRoute.EXPLORE; + let previousPersonId: string = data.person.id; let people = data.people.people; let personMerge1: PersonResponseDto; let personMerge2: PersonResponseDto; @@ -74,6 +75,14 @@ if (from && from.route.id !== $page.route.id) { previousRoute = from.url.href; } + if (previousPersonId !== data.person.id) { + assetStore = new AssetStore({ + size: TimeBucketSize.Month, + isArchived: false, + personId: data.person.id, + }); + previousPersonId = data.person.id; + } }); const hideFace = async () => { @@ -215,6 +224,14 @@ handleError(error, 'Unable to save date of birth'); } }; + + const handleGoBack = () => { + viewMode = ViewMode.VIEW_ASSETS; + if ($page.url.searchParams.has('action')) { + $page.url.searchParams.delete('action'); + goto($page.url); + } + }; {#if viewMode === ViewMode.SUGGEST_MERGE} @@ -237,7 +254,7 @@ {/if} {#if viewMode === ViewMode.MERGE_FACES} - (viewMode = ViewMode.VIEW_ASSETS)} /> + {/if} @@ -279,48 +296,50 @@ - handleSelectFeaturePhoto(asset)} - > - {#if viewMode === ViewMode.VIEW_ASSETS || viewMode === ViewMode.SUGGEST_MERGE || viewMode === ViewMode.BIRTH_DATE} - - - {#if isEditingName} - handleNameChange(event.detail)} - on:cancel={() => handleCancelEditName()} - /> - {:else} - (viewMode = ViewMode.VIEW_ASSETS)}> - handleSelectFeaturePhoto(asset)} + > + {#if viewMode === ViewMode.VIEW_ASSETS || viewMode === ViewMode.SUGGEST_MERGE || viewMode === ViewMode.BIRTH_DATE} + + + {#if isEditingName} + handleNameChange(event.detail)} + on:cancel={() => handleCancelEditName()} /> - + {:else} + (viewMode = ViewMode.VIEW_ASSETS)}> + + - (isEditingName = true)} - > - {#if data.person.name} - {data.person.name} - {:else} - Add a name - Find them fast by name with search - {/if} - - {/if} - - {/if} - + (isEditingName = true)} + > + {#if data.person.name} + {data.person.name} + {:else} + Add a name + Find them fast by name with search + {/if} + + {/if} + + {/if} + + {/key}
{data.person.name}
Add a name
Find them fast by name with search