feat: added ability to merge more than 5 people together
Signed-off-by: Varun Raj <varun@skcript.com>
This commit is contained in:
1 parent
9488f8dd83
commit
fbb74399d6
3 files changed
+22
-22
No files matched your search
@@ -27,7 +27,7 @@ export function PeopleFilters() {
|
||||
query: {
|
||||
...router.query,
|
||||
...data,
|
||||
page: undefined,
|
||||
page: data.page || undefined,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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}/>
|
||||
))}
|
||||
|
||||
@@ -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) => {
|
||||
|
||||
Reference in new issue
Block a user