fix(events): Fix pres mgmt reports data loading and field mapping

- Fix session detail page params not being passed to component (causing undefined session_id)
- Fix wrapper components discarding API enriched data by re-fetching from IDB
- Fix event_file, event_session, event_presenter wrappers to preserve API data
- Add optional chaining for hash_sha256 field to prevent undefined crashes
- Fix search__event_file to always process API results before returning
- Ensures hosted_file_size -> file_size field mapping for reports
- All pres mgmt reports (files, sessions, presenters) now work on cold-start
This commit is contained in:
Scott Idem
2026-02-26 14:36:46 -05:00
parent 61025ea0d5
commit 9547da6da6
6 changed files with 72 additions and 84 deletions

View File

@@ -54,44 +54,32 @@
let dq__where_eq_id_val = $derived(link_to_id ?? '');
// *** Functions and Logic
// OPTIMIZATION: If event_presenter_obj_li is provided (from API/reports),
// use it directly instead of fetching from IDB. The API returns fully
// enriched data with all joined fields (session names, presentation names, etc.)
// that aren't available in the base IDB presenter table.
let lq__event_presenter_obj_li = $derived(
liveQuery(async () => {
let results: any;
// let event_presenter_id_random_li = []; // This is to prevent the array from constantly updating and triggering the liveQuery.
// for (let i = 0; i < $events_sess?.event_presenter_obj_li.length; i++) {
// let event_presenter_obj = $events_sess?.event_presenter_obj_li[i];
// let event_presenter_id_random = event_presenter_obj.event_presenter_id_random;
// event_presenter_id_random_li.push(event_presenter_id_random);
// }
// If data is already provided (from API reports with joins), use it directly
if (event_presenter_obj_li?.length) {
if (log_lvl) {
console.log(
`LQ - Using event_presenter_obj_li to get event presenters.`
`LQ - Using provided event_presenter_obj_li (${event_presenter_obj_li.length} presenters with API joins)`
);
}
return event_presenter_obj_li;
}
event_presenter_id_random_li = []; // This is to prevent the array from constantly updating and triggering the liveQuery.
for (let i = 0; i < event_presenter_obj_li.length; i++) {
let event_presenter_obj = event_presenter_obj_li[i];
let event_presenter_id_random =
event_presenter_obj.event_presenter_id_random;
event_presenter_id_random_li.push(
event_presenter_id_random
// Otherwise fetch from IDB for link_to_type/link_to_id lookups
if (link_to_type && link_to_id) {
if (log_lvl) {
console.log(
`LQ - Fetching from IDB where: ${dq__where_type_id_val} = ${dq__where_eq_id_val}`
);
}
// if (event_presenter_id_random_li.length) {
results = await db_events.presenter.bulkGet(
event_presenter_id_random_li
);
// }
} else if (link_to_type && link_to_id) {
console.log(
`Trying where: ${dq__where_type_id_val}; equals: ${dq__where_eq_id_val}`
);
event_presenter_id_random_li = [];
results = await db_events.presenter
.where(dq__where_type_id_val)

View File

@@ -51,9 +51,13 @@ export async function load({ params, parent }) {
// WARNING: Precaution against shared data between sites and presentations.
data[account_id] = ae_acct;
// Pass the pre-loaded data to the page component
data.initial_session_obj = initial_session_obj;
// CRITICAL: SvelteKit does NOT automatically include params in returned data.
// The page component needs these for liveQuery subscriptions.
data.params = params;
return data;
}