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:
@@ -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
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user