From c4606cef8bf84cacd95ec06c5ac092c015f2e200 Mon Sep 17 00:00:00 2001 From: Marcel Date: Wed, 10 Jun 2026 07:32:05 +0200 Subject: [PATCH] =?UTF-8?q?fix(journey):=20person=20chips=20rendered=20bla?= =?UTF-8?q?nk=20=E2=80=94=20share=20one=20PersonView=E2=86=92PersonOption?= =?UTF-8?q?=20projection?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit JourneyEditor fed GeschichteView.PersonView (no displayName) straight into the displayName-rendering PersonMultiSelect, so every chip on a journey was empty. The name mapping both editors need now lives once in $lib/person/personOption.ts (with the [Unbekannt] fallback matching GeschichteService.toView), and PersonMultiSelect/GeschichteSidebar import the narrow PersonOption contract from there. Co-Authored-By: Claude Fable 5 --- .../lib/geschichte/GeschichteEditor.svelte | 9 ++----- .../lib/geschichte/GeschichteSidebar.svelte | 5 +--- .../src/lib/geschichte/JourneyEditor.svelte | 6 +++-- .../geschichte/JourneyEditor.svelte.spec.ts | 15 +++++++++++ .../src/lib/person/PersonMultiSelect.svelte | 4 +-- frontend/src/lib/person/personOption.ts | 26 +++++++++++++++++++ 6 files changed, 49 insertions(+), 16 deletions(-) create mode 100644 frontend/src/lib/person/personOption.ts diff --git a/frontend/src/lib/geschichte/GeschichteEditor.svelte b/frontend/src/lib/geschichte/GeschichteEditor.svelte index 962f91cf..b3b5a9b6 100644 --- a/frontend/src/lib/geschichte/GeschichteEditor.svelte +++ b/frontend/src/lib/geschichte/GeschichteEditor.svelte @@ -6,10 +6,10 @@ import StarterKit from '@tiptap/starter-kit'; import { m } from '$lib/paraglide/messages.js'; import type { components } from '$lib/generated/api'; import GeschichteSidebar from '$lib/geschichte/GeschichteSidebar.svelte'; +import { toPersonOption, type PersonOption } from '$lib/person/personOption'; type GeschichteView = components['schemas']['GeschichteView']; type Person = components['schemas']['Person']; -type PersonOption = Pick; interface Props { geschichte?: GeschichteView | null; @@ -33,12 +33,7 @@ let title = $state(geschichte?.title ?? ''); let body = $state(geschichte?.body ?? ''); let status: 'DRAFT' | 'PUBLISHED' = $state(geschichte?.status ?? 'DRAFT'); let selectedPersons: PersonOption[] = $state( - geschichte?.persons - ? Array.from(geschichte.persons).map((p) => ({ - id: p.id, - displayName: [p.firstName, p.lastName].filter(Boolean).join(' ') - })) - : initialPersons + geschichte?.persons ? Array.from(geschichte.persons).map(toPersonOption) : initialPersons ); let dirty = $state(false); diff --git a/frontend/src/lib/geschichte/GeschichteSidebar.svelte b/frontend/src/lib/geschichte/GeschichteSidebar.svelte index 4a149b17..83f69f76 100644 --- a/frontend/src/lib/geschichte/GeschichteSidebar.svelte +++ b/frontend/src/lib/geschichte/GeschichteSidebar.svelte @@ -1,10 +1,7 @@