From 3bf0b38c4233569fc435a0ef6d4917460db9a704 Mon Sep 17 00:00:00 2001 From: Marcel Date: Tue, 21 Apr 2026 14:10:46 +0200 Subject: [PATCH] polish(document-detail): address review concerns on onMount deep-link wiring MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three small refinements from Felix's review cycle 1: - replaceState(page.url.pathname, page.state ?? {}) — defend against first-navigation cases where page.state can be undefined. - Extract the inline tick + requestAnimationFrame into a named waitForPanelRender() helper; intent is now readable from onMount. - Attach .catch() to the fire-and-forget scrollToCommentFromQuery promise so any helper throw surfaces via console.error instead of silently disappearing. No behavior change on the happy path. All existing tests stay green. Co-Authored-By: Claude Opus 4.7 (1M context) --- frontend/src/routes/documents/[id]/+page.svelte | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/frontend/src/routes/documents/[id]/+page.svelte b/frontend/src/routes/documents/[id]/+page.svelte index b83b7c9c..c0e67381 100644 --- a/frontend/src/routes/documents/[id]/+page.svelte +++ b/frontend/src/routes/documents/[id]/+page.svelte @@ -291,6 +291,11 @@ $effect(() => { let navHeight = $state(0); +async function waitForPanelRender(): Promise { + await tick(); + await new Promise((resolve) => requestAnimationFrame(() => resolve())); +} + onMount(() => { navHeight = document.querySelector('header')?.getBoundingClientRect().height ?? 0; @@ -311,13 +316,10 @@ onMount(() => { setTimeout(() => (flashAnnotationId = null), prefersReducedMotion ? 2000 : 1500); }, prefersReducedMotion, - afterTick: async () => { - await tick(); - await new Promise((resolve) => requestAnimationFrame(() => resolve())); - }, + afterTick: waitForPanelRender, getElement: (id) => document.getElementById(id), - onStripUrl: () => replaceState(page.url.pathname, page.state) - }); + onStripUrl: () => replaceState(page.url.pathname, page.state ?? {}) + }).catch((e) => console.error('deep-link scroll failed', e)); function onKeyDown(e: KeyboardEvent) { if (e.key === 'Escape' && transcribeMode) {