From d2892353cb199032052b116395c285462ebc52bf Mon Sep 17 00:00:00 2001 From: patrick Date: Tue, 11 Aug 2026 20:23:31 -0400 Subject: [PATCH] fix: reset the edit dialog when switching books --- .../lib/components/forms/edit-book/edit-book.svelte | 10 ++++++++++ .../lib/components/forms/edit-book/edit-cover.svelte | 3 ++- .../components/forms/edit-book/edit-metadata.svelte | 10 ++++++---- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/frontend/src/lib/components/forms/edit-book/edit-book.svelte b/frontend/src/lib/components/forms/edit-book/edit-book.svelte index 1b0a5e0..cfcc300 100644 --- a/frontend/src/lib/components/forms/edit-book/edit-book.svelte +++ b/frontend/src/lib/components/forms/edit-book/edit-book.svelte @@ -9,8 +9,17 @@ let { book, open = $bindable() }: { book?: Book; open: boolean } = $props(); + {#if book} + {#key book.id} @@ -35,5 +44,6 @@ + {/key} {/if} diff --git a/frontend/src/lib/components/forms/edit-book/edit-cover.svelte b/frontend/src/lib/components/forms/edit-book/edit-cover.svelte index db2578c..86b31f4 100644 --- a/frontend/src/lib/components/forms/edit-book/edit-cover.svelte +++ b/frontend/src/lib/components/forms/edit-book/edit-cover.svelte @@ -18,7 +18,8 @@ let { book, open = $bindable() }: { book: Book; open: boolean } = $props(); let formEl = $state(); - let coverImagePreview = $state(`/api/${book.cover_image}`); + // Seeded once per mount — see the key in edit-book.svelte + let coverImagePreview = $state(untrack(() => `/api/${book.cover_image}`)); let autoUploadOnDrop = $state(true); const onUpload: FileDropZoneProps['onUpload'] = async (uploadedFiles) => { diff --git a/frontend/src/lib/components/forms/edit-book/edit-metadata.svelte b/frontend/src/lib/components/forms/edit-book/edit-metadata.svelte index 7b935be..5345d6c 100644 --- a/frontend/src/lib/components/forms/edit-book/edit-metadata.svelte +++ b/frontend/src/lib/components/forms/edit-book/edit-metadata.svelte @@ -14,10 +14,12 @@ let { book, open = $bindable() }: { book: Book; open: boolean } = $props(); - let authors = $state(book.authors.map((author) => author.name) || []); - let tags = $state(book.tags.map((tag) => tag.name) || []); - let identifierKeys = $state(Object.keys(book.identifiers)); - let identifierValues = $state(Object.values(book.identifiers)); + // Seeded once per mount; edit-book.svelte keys this form on book.id so a + // different book gets a fresh form rather than the previous book's values. + let authors = $state(untrack(() => book.authors.map((author) => author.name) || [])); + let tags = $state(untrack(() => book.tags.map((tag) => tag.name) || [])); + let identifierKeys = $state(untrack(() => Object.keys(book.identifiers))); + let identifierValues = $state(untrack(() => Object.values(book.identifiers))); function handleAddIdentifier() { // Add empty strings to both arrays