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:
@@ -6,7 +6,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
let { data }: Props = $props();
|
let { data }: Props = $props();
|
||||||
let log_lvl: number = $state(1);
|
let log_lvl: number = $state(0);
|
||||||
|
|
||||||
// Imports
|
// Imports
|
||||||
import { Modal } from 'flowbite-svelte';
|
import { Modal } from 'flowbite-svelte';
|
||||||
@@ -68,20 +68,23 @@
|
|||||||
liveQuery(async () => await db_events.event.get(url_event_id))
|
liveQuery(async () => await db_events.event.get(url_event_id))
|
||||||
);
|
);
|
||||||
|
|
||||||
let lq__event_presenter_obj = $derived(
|
// $derived.by: capture only the specific ID so that unrelated store changes
|
||||||
liveQuery(async () => {
|
// don't needlessly recreate the liveQuery observable.
|
||||||
if (!$events_slct.event_presenter_id) return null;
|
let lq__event_presenter_obj = $derived.by(() => {
|
||||||
return await db_events.presenter.get($events_slct.event_presenter_id);
|
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(
|
let lq__auth__event_presenter_obj = $derived.by(() => {
|
||||||
liveQuery(async () => {
|
const pid = $events_loc.auth__person?.presenter_id;
|
||||||
const pid = $events_loc.auth__person?.presenter_id;
|
return liveQuery(async () => {
|
||||||
if (!pid) return null;
|
if (!pid) return null;
|
||||||
return await db_events.presenter.get(pid);
|
return await db_events.presenter.get(pid);
|
||||||
})
|
});
|
||||||
);
|
});
|
||||||
|
|
||||||
if (!$events_loc.pres_mgmt) $events_loc.pres_mgmt = {};
|
if (!$events_loc.pres_mgmt) $events_loc.pres_mgmt = {};
|
||||||
if (!$events_sess.pres_mgmt) $events_sess.pres_mgmt = {};
|
if (!$events_sess.pres_mgmt) $events_sess.pres_mgmt = {};
|
||||||
|
|||||||
Reference in New Issue
Block a user