refactor(launcher): remove duplicate session load from menu_session_list
On session click/hover, the menu was calling load_ae_obj_id__event_session directly AND then navigating via goto(), which re-runs +page.ts and calls it again. Both fired concurrently on cold cache, causing two identical API requests for the same session. Fix: remove the direct load call entirely. The goto() promise is assigned to ae_promises.slct__event_session_id so the existing #await spinner still works — it now reflects actual navigation + page.ts load time rather than a redundant parallel fetch. Remove events_func and ae_api imports (unused). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -79,7 +79,6 @@ import {
|
||||
ae_snip,
|
||||
ae_loc,
|
||||
ae_sess,
|
||||
ae_api,
|
||||
ae_trig,
|
||||
slct,
|
||||
slct_trigger
|
||||
@@ -90,7 +89,6 @@ import {
|
||||
events_slct,
|
||||
events_trigger
|
||||
} from '$lib/stores/ae_events_stores';
|
||||
import { events_func } from '$lib/ae_events/ae_events_functions';
|
||||
import {
|
||||
CalendarCheck,
|
||||
CalendarDays,
|
||||
@@ -142,26 +140,26 @@ $effect(() => {
|
||||
slct__event_session_id = event_session_id;
|
||||
}
|
||||
|
||||
// 3. Background Data Fetch
|
||||
handle_load_ae_obj_id__event_session(event_session_id);
|
||||
|
||||
// 4. Remote Control Sync
|
||||
// 3. Remote Control Sync
|
||||
if ($events_loc.launcher.controller == 'local_push') {
|
||||
$events_sess.launcher.controller_cmd = `ae_load:event_session=${event_session_id}`;
|
||||
$events_sess.launcher.controller_trigger_send = true;
|
||||
}
|
||||
|
||||
// 5. URL Navigation
|
||||
// 4. URL Navigation — the single load fires from +page.ts when the URL updates.
|
||||
// Assigning the goto promise to ae_promises drives the #await spinner in the template.
|
||||
loading__session_id_status = 'loading';
|
||||
let new_url_obj = new URL(page.url);
|
||||
new_url_obj.searchParams.set('session_id', event_session_id);
|
||||
|
||||
if (log_lvl) console.log(`[UI Trace] Initiating SvelteKit goto...`);
|
||||
|
||||
goto(new_url_obj.toString(), {
|
||||
ae_promises.slct__event_session_id = goto(new_url_obj.toString(), {
|
||||
replaceState: false,
|
||||
noScroll: true,
|
||||
keepFocus: true
|
||||
}).then(() => {
|
||||
loading__session_id_status = false;
|
||||
if (log_lvl)
|
||||
console.log(
|
||||
`🏁 [Trace] Navigation Roundtrip: ${(performance.now() - start).toFixed(2)}ms`
|
||||
@@ -170,45 +168,6 @@ $effect(() => {
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
function handle_load_ae_obj_id__event_session(event_session_id: any) {
|
||||
const start = performance.now();
|
||||
if (log_lvl) {
|
||||
console.log(
|
||||
`[UI Trace] handle_load_ae_obj_id__event_session: Calling library for id=${event_session_id}`
|
||||
);
|
||||
}
|
||||
|
||||
loading__session_id_status = 'loading';
|
||||
|
||||
ae_promises.slct__event_session_id = events_func
|
||||
.load_ae_obj_id__event_session({
|
||||
api_cfg: $ae_api,
|
||||
event_session_id: event_session_id,
|
||||
inc_file_li: true,
|
||||
inc_all_file_li: true,
|
||||
inc_presentation_li: true,
|
||||
inc_presenter_li: true,
|
||||
log_lvl: log_lvl
|
||||
})
|
||||
.then(async (load_results) => {
|
||||
if (log_lvl)
|
||||
console.log(
|
||||
`[UI Trace] handle_load_ae_obj_id: Library returned results in ${(performance.now() - start).toFixed(2)}ms.`
|
||||
);
|
||||
|
||||
if (load_results) {
|
||||
$events_slct.event_session_obj = load_results;
|
||||
$events_slct.event_file_obj_li =
|
||||
load_results.event_file_li ?? [];
|
||||
$events_slct.event_presentation_obj_li =
|
||||
load_results.event_presentation_li ?? [];
|
||||
}
|
||||
})
|
||||
.finally(() => {
|
||||
loading__session_id_status = false;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<div
|
||||
|
||||
Reference in New Issue
Block a user