feat: added ability to merge more than 5 people together

Signed-off-by: Varun Raj <varun@skcript.com>
This commit is contained in:
Varun Raj committed 2024-11-21 20:08:20 +05:30
1 parent 9488f8dd83
commit fbb74399d6
3 files changed
+22 -22

No files matched your search

+1 -1
View File
@@ -27,7 +27,7 @@ export function PeopleFilters() {
query: {
...router.query,
...data,
page: undefined,
page: data.page || undefined,
},
});
}
+1 -1
View File
@@ -54,7 +54,7 @@ export default function PeopleList() {
if (errorMessage) return <div>{errorMessage}</div>;
return (
<div className="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-5 gap-1 p-2">
<div className="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-5 lg:grid-cols-7 xl:grid-cols-9 gap-1 p-2">
{people.map((person) => (
<PersonItem person={person} key={person.id} onRemove={handleRemove}/>
))}
+20 -20
View File
@@ -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) => {