From 1ab13eaf96b11de78c3a8d4d228f65d0c81a6fb9 Mon Sep 17 00:00:00 2001 From: Scott Idem Date: Tue, 10 Feb 2026 17:57:28 -0500 Subject: [PATCH] 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. --- .../(launcher)/launcher/+layout.svelte | 26 +++++-------------- .../(launcher)/launcher_session_view.svelte | 21 +++------------ 2 files changed, 10 insertions(+), 37 deletions(-) diff --git a/src/routes/events/[event_id]/(launcher)/launcher/+layout.svelte b/src/routes/events/[event_id]/(launcher)/launcher/+layout.svelte index 33e14f56..63d06e1e 100644 --- a/src/routes/events/[event_id]/(launcher)/launcher/+layout.svelte +++ b/src/routes/events/[event_id]/(launcher)/launcher/+layout.svelte @@ -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 diff --git a/src/routes/events/[event_id]/(launcher)/launcher_session_view.svelte b/src/routes/events/[event_id]/(launcher)/launcher_session_view.svelte index e40788ed..9c7a093a 100644 --- a/src/routes/events/[event_id]/(launcher)/launcher_session_view.svelte +++ b/src/routes/events/[event_id]/(launcher)/launcher_session_view.svelte @@ -1,14 +1,12 @@