diff --git a/i18n/en.json b/i18n/en.json
index 5903d7850e..75d5f1dd62 100644
--- a/i18n/en.json
+++ b/i18n/en.json
@@ -721,6 +721,7 @@
"check_logs": "Check Logs",
"checksum": "Checksum",
"choose_matching_people_to_merge": "Choose matching people to merge",
+ "choose_people_to_unselect": "Choose people to unselect",
"city": "City",
"clear": "Clear",
"clear_all": "Clear all",
@@ -1401,7 +1402,6 @@
"menu": "Menu",
"merge": "Merge",
"merge_people": "Merge people",
- "merge_people_limit": "You can only merge up to 5 faces at a time",
"merge_people_prompt": "Do you want to merge these people? This action is irreversible.",
"merge_people_successfully": "Merge people successfully",
"merged_people_count": "Merged {count, plural, one {# person} other {# people}}",
@@ -1854,6 +1854,7 @@
"selected": "Selected",
"selected_count": "{count, plural, other {# selected}}",
"selected_gps_coordinates": "Selected GPS Coordinates",
+ "selected_people_to_merge": "Selected people to merge",
"send_message": "Send message",
"send_welcome_email": "Send welcome email",
"server_endpoint": "Server Endpoint",
@@ -1970,6 +1971,7 @@
"show_album_options": "Show album options",
"show_albums": "Show albums",
"show_all_people": "Show all people",
+ "show_all_selected_people": "Show all selected people",
"show_and_hide_people": "Show & hide people",
"show_file_location": "Show file location",
"show_gallery": "Show gallery",
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 efec16173b..92ecfb8f77 100644
--- a/web/src/lib/components/faces-page/merge-face-selector.svelte
+++ b/web/src/lib/components/faces-page/merge-face-selector.svelte
@@ -5,7 +5,7 @@
import { handleError } from '$lib/utils/handle-error';
import { getAllPeople, getPerson, mergePerson, type PersonResponseDto } from '@immich/sdk';
import { Button, Icon, IconButton, modalManager, toastManager } from '@immich/ui';
- import { mdiCallMerge, mdiMerge, mdiSwapHorizontal } from '@mdi/js';
+ import { mdiCallMerge, mdiMerge, mdiPlus, mdiSwapHorizontal } from '@mdi/js';
import { onMount } from 'svelte';
import { t } from 'svelte-i18n';
import { flip } from 'svelte/animate';
@@ -14,6 +14,7 @@
import ControlAppBar from '../shared-components/control-app-bar.svelte';
import FaceThumbnail from './face-thumbnail.svelte';
import PeopleList from './people-list.svelte';
+ import PeopleViewModal from "$lib/modals/PeopleViewModal.svelte";
interface Props {
person: PersonResponseDto;
@@ -49,11 +50,6 @@
return;
}
- if (selectedPeople.length >= 5) {
- toastManager.warning($t('merge_people_limit'));
- return;
- }
-
selectedPeople = [selected, ...selectedPeople];
if (selectedPeople.length === 1 && !person.name && selected.name) {
@@ -80,6 +76,15 @@
handleError(error, $t('cannot_merge_people'));
}
};
+
+ const showPeopleViewModal = async () => {
+ // Sets the selected people that remained after closing the modal.
+ selectedPeople = await modalManager.show(PeopleViewModal, {
+ people: selectedPeople,
+ peopleToNotShow: [person],
+ screenHeight
+ });
+ };
{$t('choose_matching_people_to_merge')}
{$t('choose_people_to_unselect')}
+