Implemented offline-first fast-paths and hardened API/Layout resilience. Added reactive offline banner, root error page, and ghost site fallbacks to handle server downtime and connection loss without crashing.

This commit is contained in:
Scott Idem
2026-01-16 16:41:32 -05:00
parent 8b611e7875
commit a10accfaaf
14 changed files with 536 additions and 564 deletions

View File

@@ -15,7 +15,17 @@ export async function load({ params, parent, url }) {
data.log_lvl = log_lvl;
const account_id = data.account_id;
const ae_acct = data[account_id];
let ae_acct = data[account_id];
if (!ae_acct) {
console.warn(`ae Events - [event_id] +layout.ts: Account ${account_id} not found in data. Initializing ghost acct.`);
ae_acct = {
api: data.ae_api || {},
slct: {
account_id: account_id
}
};
}
const event_id = params.event_id;
if (!event_id) {
@@ -54,16 +64,18 @@ export async function load({ params, parent, url }) {
// }
});
if (!load_event_obj) {
error(404, {
message: 'Events - Event not found'
});
console.warn(`Events - [event_id] +layout.ts: Event ${event_id} not found via API or Cache.`);
// error(404, {
// message: 'Events - Event not found'
// });
} else {
console.log(`load_event_obj = `, load_event_obj);
ae_acct.slct.event_obj = load_event_obj;
// ae_acct.slct.event_device_obj_li = load_event_obj.event_device_obj_li;
ae_acct.slct.event_location_obj_li = load_event_obj.event_location_obj_li;
ae_acct.slct.event_session_obj_li = load_event_obj.event_session_obj_li;
ae_acct.slct.badge_template_obj_li = load_event_obj.event_badge_template_obj_li;
}
console.log(`load_event_obj = `, load_event_obj);
ae_acct.slct.event_obj = load_event_obj;
// ae_acct.slct.event_device_obj_li = load_event_obj.event_device_obj_li;
ae_acct.slct.event_location_obj_li = load_event_obj.event_location_obj_li;
ae_acct.slct.event_session_obj_li = load_event_obj.event_session_obj_li;
ae_acct.slct.badge_template_obj_li = load_event_obj.event_badge_template_obj_li;
}
// WARNING: Precaution against shared data between sites and sessions.