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_snip,
|
||||||
ae_loc,
|
ae_loc,
|
||||||
ae_sess,
|
ae_sess,
|
||||||
ae_api,
|
|
||||||
ae_trig,
|
ae_trig,
|
||||||
slct,
|
slct,
|
||||||
slct_trigger
|
slct_trigger
|
||||||
@@ -90,7 +89,6 @@ import {
|
|||||||
events_slct,
|
events_slct,
|
||||||
events_trigger
|
events_trigger
|
||||||
} from '$lib/stores/ae_events_stores';
|
} from '$lib/stores/ae_events_stores';
|
||||||
import { events_func } from '$lib/ae_events/ae_events_functions';
|
|
||||||
import {
|
import {
|
||||||
CalendarCheck,
|
CalendarCheck,
|
||||||
CalendarDays,
|
CalendarDays,
|
||||||
@@ -142,26 +140,26 @@ $effect(() => {
|
|||||||
slct__event_session_id = event_session_id;
|
slct__event_session_id = event_session_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. Background Data Fetch
|
// 3. Remote Control Sync
|
||||||
handle_load_ae_obj_id__event_session(event_session_id);
|
|
||||||
|
|
||||||
// 4. Remote Control Sync
|
|
||||||
if ($events_loc.launcher.controller == 'local_push') {
|
if ($events_loc.launcher.controller == 'local_push') {
|
||||||
$events_sess.launcher.controller_cmd = `ae_load:event_session=${event_session_id}`;
|
$events_sess.launcher.controller_cmd = `ae_load:event_session=${event_session_id}`;
|
||||||
$events_sess.launcher.controller_trigger_send = true;
|
$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);
|
let new_url_obj = new URL(page.url);
|
||||||
new_url_obj.searchParams.set('session_id', event_session_id);
|
new_url_obj.searchParams.set('session_id', event_session_id);
|
||||||
|
|
||||||
if (log_lvl) console.log(`[UI Trace] Initiating SvelteKit goto...`);
|
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,
|
replaceState: false,
|
||||||
noScroll: true,
|
noScroll: true,
|
||||||
keepFocus: true
|
keepFocus: true
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
|
loading__session_id_status = false;
|
||||||
if (log_lvl)
|
if (log_lvl)
|
||||||
console.log(
|
console.log(
|
||||||
`🏁 [Trace] Navigation Roundtrip: ${(performance.now() - start).toFixed(2)}ms`
|
`🏁 [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>
|
</script>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
|
|||||||
Reference in New Issue
Block a user