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) => {