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