feat(offline): implement Dexie fallbacks and fix type stability in Events module
- Offline Resilience: Added local Dexie fallbacks to load_ae_obj_id__* and load_ae_obj_li__* functions for Events, Sessions, Locations, Exhibits, and Badges. - Type Safety: Standardized ae_Event and ae_EventSession interfaces in ae_types.ts; resolved Promise assignment errors in load functions (+page.ts). - Bug Fixes: Corrected duplication in ae_events__event_location.ts and ae_events__event_badge_template.ts; fixed missing try_cache parameters. - UI Stability: Fixed Dexie LiveQuery subscription pattern in bulk print view and ensured proper property access in layout load functions.
This commit is contained in:
@@ -29,60 +29,58 @@ export async function load_ae_obj_id__event_badge({
|
||||
console.log(`*** load_ae_obj_id__event_badge() *** event_badge_id=${event_badge_id}`);
|
||||
}
|
||||
|
||||
ae_promises.load__event_badge_obj = await api
|
||||
.get_ae_obj_v3({
|
||||
api_cfg,
|
||||
obj_type: 'event_badge',
|
||||
obj_id: event_badge_id,
|
||||
view,
|
||||
log_lvl
|
||||
})
|
||||
.then(async function (badge_obj_get_result) {
|
||||
if (badge_obj_get_result) {
|
||||
if (try_cache) {
|
||||
const processed_obj_li = await process_ae_obj__event_badge_props({
|
||||
obj_li: [badge_obj_get_result],
|
||||
log_lvl
|
||||
});
|
||||
await db_save_ae_obj_li__ae_obj({
|
||||
db_instance: db_events,
|
||||
table_name: 'badge',
|
||||
obj_li: processed_obj_li,
|
||||
properties_to_save,
|
||||
log_lvl
|
||||
});
|
||||
}
|
||||
return badge_obj_get_result;
|
||||
} else {
|
||||
if (log_lvl) console.log('No results returned.');
|
||||
return null;
|
||||
}
|
||||
})
|
||||
.catch(function (error: any) {
|
||||
console.log('No results returned or failed.', error);
|
||||
});
|
||||
try {
|
||||
ae_promises.load__event_badge_obj = await api
|
||||
.get_ae_obj_v3({
|
||||
api_cfg,
|
||||
obj_type: 'event_badge',
|
||||
obj_id: event_badge_id,
|
||||
view,
|
||||
log_lvl
|
||||
});
|
||||
|
||||
if (inc_template) {
|
||||
if (ae_promises.load__event_badge_obj) {
|
||||
if (try_cache) {
|
||||
const processed_obj_li = await process_ae_obj__event_badge_props({
|
||||
obj_li: [ae_promises.load__event_badge_obj],
|
||||
log_lvl
|
||||
});
|
||||
await db_save_ae_obj_li__ae_obj({
|
||||
db_instance: db_events,
|
||||
table_name: 'badge',
|
||||
obj_li: processed_obj_li,
|
||||
properties_to_save,
|
||||
log_lvl
|
||||
});
|
||||
}
|
||||
} else {
|
||||
console.log('No results returned from API.');
|
||||
if (try_cache) {
|
||||
if (log_lvl) console.log('Attempting to load from local cache...');
|
||||
ae_promises.load__event_badge_obj = await db_events.badge.get(event_badge_id);
|
||||
}
|
||||
}
|
||||
} catch (error: any) {
|
||||
console.log('API request failed.', error);
|
||||
if (try_cache) {
|
||||
if (log_lvl) console.log('Attempting to load from local cache after error...');
|
||||
ae_promises.load__event_badge_obj = await db_events.badge.get(event_badge_id);
|
||||
} else {
|
||||
ae_promises.load__event_badge_obj = null;
|
||||
}
|
||||
}
|
||||
|
||||
if (inc_template && ae_promises.load__event_badge_obj) {
|
||||
// Load the templates for the event badge
|
||||
if (log_lvl) {
|
||||
console.log(`Need to load the template for the badge now`);
|
||||
const current_template_id = ae_promises.load__event_badge_obj.event_badge_template_id || ae_promises.load__event_badge_obj.event_badge_template_id_random;
|
||||
if (current_template_id) {
|
||||
ae_promises.load__event_badge_obj.event_badge_template = await load_ae_obj_id__event_badge_template({
|
||||
api_cfg: api_cfg,
|
||||
event_badge_template_id: current_template_id,
|
||||
try_cache: try_cache,
|
||||
log_lvl: log_lvl
|
||||
});
|
||||
}
|
||||
const load_event_badge_template_obj = load_ae_obj_id__event_badge_template({
|
||||
api_cfg: api_cfg,
|
||||
event_badge_template_id:
|
||||
ae_promises.load__event_badge_obj?.event_badge_template_id_random,
|
||||
log_lvl: log_lvl
|
||||
}).then((event_badge_template_obj_li) => {
|
||||
if (log_lvl) {
|
||||
console.log(`event_badge_template_obj_li = `, event_badge_template_obj_li);
|
||||
}
|
||||
return event_badge_template_obj_li;
|
||||
});
|
||||
|
||||
if (log_lvl) {
|
||||
console.log(`event_badge_template_obj = `, load_event_badge_template_obj);
|
||||
}
|
||||
ae_promises.load__event_session_obj.event_badge_template = load_event_badge_template_obj;
|
||||
}
|
||||
|
||||
return ae_promises.load__event_badge_obj;
|
||||
@@ -120,63 +118,71 @@ export async function load_ae_obj_li__event_badge({
|
||||
console.log(`*** load_ae_obj_li__event_badge() *** event_id=${event_id}`);
|
||||
}
|
||||
|
||||
ae_promises.load__event_badge_obj_li = await api
|
||||
.get_ae_obj_li_v3({
|
||||
api_cfg,
|
||||
obj_type: 'event_badge',
|
||||
for_obj_type: 'event',
|
||||
for_obj_id: event_id,
|
||||
enabled: enabled,
|
||||
hidden: hidden,
|
||||
view: view,
|
||||
order_by_li: order_by_li,
|
||||
limit: limit,
|
||||
offset: offset,
|
||||
log_lvl: log_lvl
|
||||
})
|
||||
.then(async function (badge_obj_li_get_result) {
|
||||
if (badge_obj_li_get_result) {
|
||||
if (try_cache) {
|
||||
const processed_obj_li = await process_ae_obj__event_badge_props({
|
||||
obj_li: badge_obj_li_get_result,
|
||||
event_id,
|
||||
log_lvl
|
||||
});
|
||||
await db_save_ae_obj_li__ae_obj({
|
||||
db_instance: db_events,
|
||||
table_name: 'badge',
|
||||
obj_li: processed_obj_li,
|
||||
properties_to_save,
|
||||
log_lvl
|
||||
});
|
||||
}
|
||||
return badge_obj_li_get_result;
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
})
|
||||
.catch(function (error: any) {
|
||||
console.log('No results returned or failed.', error);
|
||||
});
|
||||
|
||||
if (inc_template) {
|
||||
// Load the template for each badge
|
||||
if (log_lvl) {
|
||||
console.log(`Need to load the template for each badge now`);
|
||||
}
|
||||
for (const badge_obj of ae_promises.load__event_badge_obj_li) {
|
||||
if (log_lvl) {
|
||||
console.log(`Loading template for badge_obj: `, badge_obj);
|
||||
}
|
||||
const load_event_badge_template_obj = await load_ae_obj_id__event_badge_template({
|
||||
api_cfg: api_cfg,
|
||||
event_badge_template_id: badge_obj?.event_badge_template_id_random,
|
||||
try {
|
||||
ae_promises.load__event_badge_obj_li = await api
|
||||
.get_ae_obj_li_v3({
|
||||
api_cfg,
|
||||
obj_type: 'event_badge',
|
||||
for_obj_type: 'event',
|
||||
for_obj_id: event_id,
|
||||
enabled: enabled,
|
||||
hidden: hidden,
|
||||
view: view,
|
||||
order_by_li: order_by_li,
|
||||
limit: limit,
|
||||
offset: offset,
|
||||
log_lvl: log_lvl
|
||||
});
|
||||
if (log_lvl) {
|
||||
console.log(`event_badge_template_obj = `, load_event_badge_template_obj);
|
||||
|
||||
if (ae_promises.load__event_badge_obj_li) {
|
||||
if (try_cache) {
|
||||
const processed_obj_li = await process_ae_obj__event_badge_props({
|
||||
obj_li: ae_promises.load__event_badge_obj_li,
|
||||
event_id,
|
||||
log_lvl
|
||||
});
|
||||
await db_save_ae_obj_li__ae_obj({
|
||||
db_instance: db_events,
|
||||
table_name: 'badge',
|
||||
obj_li: processed_obj_li,
|
||||
properties_to_save,
|
||||
log_lvl
|
||||
});
|
||||
}
|
||||
} else {
|
||||
console.log('No results returned from API.');
|
||||
if (try_cache) {
|
||||
if (log_lvl) console.log('Attempting to load from local cache...');
|
||||
ae_promises.load__event_badge_obj_li = await db_events.badge
|
||||
.where('event_id').equals(event_id)
|
||||
.toArray();
|
||||
} else {
|
||||
ae_promises.load__event_badge_obj_li = [];
|
||||
}
|
||||
}
|
||||
} catch (error: any) {
|
||||
console.log('API request failed.', error);
|
||||
if (try_cache) {
|
||||
if (log_lvl) console.log('Attempting to load from local cache after error...');
|
||||
ae_promises.load__event_badge_obj_li = await db_events.badge
|
||||
.where('event_id').equals(event_id)
|
||||
.toArray();
|
||||
} else {
|
||||
ae_promises.load__event_badge_obj_li = [];
|
||||
}
|
||||
}
|
||||
|
||||
if (inc_template && ae_promises.load__event_badge_obj_li) {
|
||||
for (const badge_obj of ae_promises.load__event_badge_obj_li) {
|
||||
const current_template_id = badge_obj.event_badge_template_id || badge_obj.event_badge_template_id_random;
|
||||
if (current_template_id) {
|
||||
badge_obj.event_badge_template = await load_ae_obj_id__event_badge_template({
|
||||
api_cfg: api_cfg,
|
||||
event_badge_template_id: current_template_id,
|
||||
try_cache: try_cache,
|
||||
log_lvl: log_lvl
|
||||
});
|
||||
}
|
||||
badge_obj.event_badge_template = load_event_badge_template_obj;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user