Prevent duplicate entries in selection list (#5358)

This commit is contained in:
WithoutPants 2024-10-10 10:54:39 +11:00 committed by GitHub
parent f82e24762b
commit b6db4c31ca
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -229,6 +229,11 @@ export function useListSelect<T extends { id: string }>(items: T[]) {
function singleSelect(id: string, selected: boolean) {
setLastClickedId(id);
// prevent duplicates
if (selected && selectedIds.has(id)) {
return;
}
setItemsSelected((prevSelected) => {
if (selected) {
const item = items.find((i) => i.id === id);
@ -253,7 +258,10 @@ export function useListSelect<T extends { id: string }>(items: T[]) {
const subset = items.slice(start, end + 1);
const newSelected = itemsSelected.concat(subset);
// prevent duplicates
const toAdd = subset.filter((item) => !selectedIds.has(item.id));
const newSelected = itemsSelected.concat(toAdd);
setItemsSelected(newSelected);
}