fix(launcher): optimize layout reactivity and implement staggered data pipeline

- Moved session observable to child component to ensure reactive header updates.\n- Implemented deferred loading for presenters and files to prevent request storms.\n- Fixed WebSocket navigation paths to use store-backed IDs.\n- Streamlined Svelte 5 component lifecycle for better performance and SWR responsiveness.
This commit is contained in:
Scott Idem
2026-02-10 17:57:28 -05:00
parent be53e12d63
commit 1ab13eaf96
2 changed files with 10 additions and 37 deletions

View File

@@ -194,24 +194,6 @@
.sortBy('name');
});
// Event Session (Main View Trigger)
// Removed $derived wrapper to ensure stable observable subscription in Svelte 5
let lq__event_session_obj = liveQuery(async () => {
const id = $events_slct.event_session_id;
if (!id) return null;
if (log_lvl)
console.log(
`🔍 [Trace] Launcher Layout LQ: Fetching session_id=${id}`
);
const start = performance.now();
let results = await db_events.session.get(id);
if (log_lvl)
console.log(
`📦 [Trace] Launcher Layout LQ: Result obtained in ${(performance.now() - start).toFixed(2)}ms (Result=${results?.name || 'NOT FOUND'})`
);
return results;
});
let lq__event_session_obj_li = liveQuery(async () => {
const id = $events_slct.event_location_id;
if (!id) return [];
@@ -235,6 +217,11 @@
return results;
});
// Event Session (Main View Trigger - Needed for Global Header/Idle)
let lq__event_session_obj = $derived(
liveQuery(() => db_events.session.get($events_slct.event_session_id))
);
let trigger_handle_ws_conn = $state(false);
let trigger_handle_ws_recv = $state(false);
let trigger_handle_ws_sent = $state(false);
@@ -264,7 +251,7 @@
if (obj_type == 'event_session') {
$events_slct.event_session_id = obj_id;
let new_url = new URL(data.url);
new_url.pathname = `/events/${$lq__event_session_obj?.event_id}/launcher/${$lq__event_session_obj?.event_location_id}`;
new_url.pathname = `/events/${data.params.event_id}/launcher/${$events_slct.event_location_id}`;
new_url.searchParams.set(
'session_id',
$events_slct.event_session_id
@@ -547,7 +534,6 @@
bind:loading__session_id_status={
$events_sess.launcher.loading__session_id_status
}
{lq__event_session_obj}
bind:slct__event_session_id={$events_slct.event_session_id}
bind:trigger_reload__event_session_obj_id={
$events_sess.launcher.trigger_reload__event_session_obj_id

View File

@@ -1,14 +1,12 @@
<script lang="ts">
interface Props {
slct__event_session_id?: string | null;
lq__event_session_obj: any;
type_code?: string;
log_lvl?: number;
}
let {
slct__event_session_id = $bindable(null),
lq__event_session_obj,
type_code = $bindable(''),
log_lvl = $bindable(1)
}: Props = $props();
@@ -43,21 +41,10 @@
} from '$lib/stores/ae_events_stores';
import { events_func } from '$lib/ae_events_functions';
// let load_event_session_obj = events_func.load_ae_obj_id__event_session({
// api_cfg: $ae_api,
// event_session_id: slct__event_session_id,
// inc_presenter_li: false,
// try_cache: true,
// log_lvl: 1
// });
// let lq__event_session_obj = liveQuery(
// () => db_events.session.get(slct_event_session_id)
// );
// let lq__event_session_obj = liveQuery(
// () => db_events.session.get(slct__event_session_id)
// );
// Event Session (Main View Trigger)
let lq__event_session_obj = $derived(
liveQuery(() => db_events.session.get(slct__event_session_id))
);
// import Event_launcher_file_cont from './launcher_file_cont.svelte';