From ea97bdd869098f022bd47267a7568ad8ad88e46b Mon Sep 17 00:00:00 2001 From: Marcel Date: Tue, 28 Apr 2026 13:00:01 +0200 Subject: [PATCH] refactor(stammbaum): initialise selectedId directly from focusId, drop $effect MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The focus deep-link is a one-time load param — $derived + $effect caused a deferred write that left the node unselected on first paint. Initialising $state inline reads the URL once at component mount with no reactive cycle. Co-Authored-By: Claude Sonnet 4.6 --- frontend/src/routes/stammbaum/+page.svelte | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/frontend/src/routes/stammbaum/+page.svelte b/frontend/src/routes/stammbaum/+page.svelte index b570a98b..004e044a 100644 --- a/frontend/src/routes/stammbaum/+page.svelte +++ b/frontend/src/routes/stammbaum/+page.svelte @@ -14,15 +14,12 @@ interface Props { let { data }: Props = $props(); -const focusId = $derived(page.url.searchParams.get('focus')); const canWrite = $derived(page.data.canWrite ?? false); -let selectedId = $state(null); -$effect(() => { - if (focusId && data.nodes.some((n) => n.id === focusId)) { - selectedId = focusId; - } -}); +const focusId = page.url.searchParams.get('focus'); +let selectedId = $state( + focusId && data.nodes.some((n) => n.id === focusId) ? focusId : null +); const selectedNode = $derived(data.nodes.find((n) => n.id === selectedId) ?? null);