From b6db4c31ca689cfb8b9054e493c94c80abc24f80 Mon Sep 17 00:00:00 2001 From: WithoutPants <53250216+WithoutPants@users.noreply.github.com> Date: Thu, 10 Oct 2024 10:54:39 +1100 Subject: [PATCH] Prevent duplicate entries in selection list (#5358) --- ui/v2.5/src/components/List/util.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/ui/v2.5/src/components/List/util.ts b/ui/v2.5/src/components/List/util.ts index 2cd4f90ea..addb56012 100644 --- a/ui/v2.5/src/components/List/util.ts +++ b/ui/v2.5/src/components/List/util.ts @@ -229,6 +229,11 @@ export function useListSelect(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(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); }