diff --git a/src/lib/components/collection/AddToCollectionModal.svelte b/src/lib/components/collection/AddToCollectionModal.svelte index 3132f07a..e9a66aa2 100644 --- a/src/lib/components/collection/AddToCollectionModal.svelte +++ b/src/lib/components/collection/AddToCollectionModal.svelte @@ -82,10 +82,24 @@ enabled: open && !collectedIdsQuery.isLoading })) - // Flatten results - const allResults = $derived( - searchResults.data?.pages.flatMap((page) => page.results) ?? [] - ) + // Flatten results and deduplicate by ID + // (API may return duplicates across pages) + const allResults = $derived.by(() => { + const pages = searchResults.data?.pages ?? [] + const seen = new Set() + const results: SearchResult[] = [] + + for (const page of pages) { + for (const result of page.results) { + if (!seen.has(result.id)) { + seen.add(result.id) + results.push(result) + } + } + } + + return results + }) // Filter to show only selected if enabled const displayedResults = $derived( diff --git a/src/lib/components/collection/SelectableCharacterCard.svelte b/src/lib/components/collection/SelectableCharacterCard.svelte index 140fe06e..cdf6b844 100644 --- a/src/lib/components/collection/SelectableCharacterCard.svelte +++ b/src/lib/components/collection/SelectableCharacterCard.svelte @@ -53,11 +53,12 @@