From 3f57077a8b495752783dcda3a25e05f43c215347 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Tue, 10 Mar 2026 14:21:51 -0400 Subject: [PATCH] Pres mgmt: migrate session liveQueries to $derived.by() pattern Replace $derived(liveQuery(...)) with $derived.by(() => { const id = ...; return liveQuery(...) }) for lq__event_presenter_obj and lq__auth__event_presenter_obj in the session page. $derived.by() captures only the specific ID at derivation time, so unrelated store changes do not recreate the observable. Plain $derived closes over the entire $events_slct store object, causing unnecessary observable recreation on any store mutation. --- .../session/[session_id]/+page.svelte | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/routes/events/[event_id]/(pres_mgmt)/session/[session_id]/+page.svelte b/src/routes/events/[event_id]/(pres_mgmt)/session/[session_id]/+page.svelte index ea729648..3c4b3877 100644 --- a/src/routes/events/[event_id]/(pres_mgmt)/session/[session_id]/+page.svelte +++ b/src/routes/events/[event_id]/(pres_mgmt)/session/[session_id]/+page.svelte @@ -6,7 +6,7 @@ } let { data }: Props = $props(); - let log_lvl: number = $state(1); + let log_lvl: number = $state(0); // Imports import { Modal } from 'flowbite-svelte'; @@ -68,20 +68,23 @@ liveQuery(async () => await db_events.event.get(url_event_id)) ); - let lq__event_presenter_obj = $derived( - liveQuery(async () => { - if (!$events_slct.event_presenter_id) return null; - return await db_events.presenter.get($events_slct.event_presenter_id); - }) - ); + // $derived.by: capture only the specific ID so that unrelated store changes + // don't needlessly recreate the liveQuery observable. + let lq__event_presenter_obj = $derived.by(() => { + const id = $events_slct.event_presenter_id; + return liveQuery(async () => { + if (!id) return null; + return await db_events.presenter.get(id); + }); + }); - let lq__auth__event_presenter_obj = $derived( - liveQuery(async () => { - const pid = $events_loc.auth__person?.presenter_id; + let lq__auth__event_presenter_obj = $derived.by(() => { + const pid = $events_loc.auth__person?.presenter_id; + return liveQuery(async () => { if (!pid) return null; return await db_events.presenter.get(pid); - }) - ); + }); + }); if (!$events_loc.pres_mgmt) $events_loc.pres_mgmt = {}; if (!$events_sess.pres_mgmt) $events_sess.pres_mgmt = {};