diff --git a/src/components/people/PeopleFilters.tsx b/src/components/people/PeopleFilters.tsx index 232ba81..d173565 100644 --- a/src/components/people/PeopleFilters.tsx +++ b/src/components/people/PeopleFilters.tsx @@ -27,7 +27,7 @@ export function PeopleFilters() { query: { ...router.query, ...data, - page: undefined, + page: data.page || undefined, }, }); } diff --git a/src/components/people/PeopleList.tsx b/src/components/people/PeopleList.tsx index 392fb0d..99e1a4d 100644 --- a/src/components/people/PeopleList.tsx +++ b/src/components/people/PeopleList.tsx @@ -54,7 +54,7 @@ export default function PeopleList() { if (errorMessage) return
{errorMessage}
; return ( -
+
{people.map((person) => ( ))} diff --git a/src/components/people/PersonMergeDropdown.tsx b/src/components/people/PersonMergeDropdown.tsx index 92db3e9..28ab97c 100644 --- a/src/components/people/PersonMergeDropdown.tsx +++ b/src/components/people/PersonMergeDropdown.tsx @@ -103,47 +103,47 @@ export function PersonMergeDropdown({ setSelectedPeople(selectedPeople.filter((p) => p.id !== value.id)); return; } - if (selectedPeople.length >= 5) { - toast({ - title: "Error", - description: "You can only merge 5 people at a time", - }); - return; - } else { - setSelectedPeople([...selectedPeople, value]); - } + setSelectedPeople([...selectedPeople, value]); if (primaryPerson.name.length === 0 && value.name.length > 0) { setPrimaryPerson(value); } - }; + + const handleMerge = () => { if (selectedPeople.length === 0) { return; } + const personIds = selectedPeople.map((p) => p.id); setMerging(true); - return mergePerson(person.id, personIds) - .then(() => { - onRemove?.(person); - }) - .then(() => { + + const mergeInBatches = async (ids: string[], index: number = 0) => { + if (index >= ids.length) { setOpen(false); toast({ title: "Success", description: "People merged successfully", }); - }) - .catch(() => { + setMerging(false); + return; + } + + const batch = ids.slice(index, index + 5); + try { + await mergePerson(person.id, batch); + mergeInBatches(ids, index + 5); + } catch { toast({ title: "Error", description: "Failed to merge people", }); - }) - .finally(() => { setMerging(false); - }); + } + }; + + mergeInBatches(personIds); }; const handleRemove = (value: IPerson) => {