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.
This commit is contained in:
Scott Idem
2026-03-10 14:21:51 -04:00
parent 46c2d2da12
commit 3f57077a8b

View File

@@ -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 = {};