From 7de75ec8d0fd7c797387b417431a3b6f26cf1c3c Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Tue, 2 Dec 2025 11:31:09 -0800 Subject: [PATCH] fix character card aspect ratio and duplicate key error - Use proper 16:33 aspect ratio for character cards instead of square - Change object-fit from cover to contain to prevent cropping - Deduplicate search results across pages to prevent duplicate key errors --- .../collection/AddToCollectionModal.svelte | 22 +++++++++++++++---- .../collection/SelectableCharacterCard.svelte | 7 +++--- 2 files changed, 22 insertions(+), 7 deletions(-) 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 @@