fix: account_name not showing on events page — stale Dexie cache + duplicate assignment
Two Svelte-side bugs causing account_name to always show 'Account Name Not Set':
1. ae_core__site.ts: background site_domain refresh only pushed cfg_json back
into $ae_loc after a stale cache hit. Now also pushes account_name and
account_code when the store holds a placeholder value.
2. +layout.ts: duplicate ae_loc_init['account_name'] assignment at line ~475
was overwriting the correct one at line ~385 with a different fallback string
('Account Name Not Set' vs 'Ghost Account'). Removed the duplicate.
Also includes user-intentional changes during testing:
- events/+page.svelte: typo fix ('You access' -> 'Your access'); Pres Mgmt /
Launcher / Badges / Leads buttons now gated on trusted_access && edit_mode
- events/+page.ts: event list limit 25 -> 7
- events/[event_id]/+page.svelte: user edit
This commit is contained in:
@@ -221,23 +221,37 @@ async function _refresh_site_domain_background({
|
||||
});
|
||||
|
||||
// WHY: The fast-path returns stale Dexie cache, then this background refresh
|
||||
// runs after the page renders. If cfg_json changed server-side (e.g. a Novi
|
||||
// API key was added), the stale cfg is already in $ae_loc. We push the fresh
|
||||
// cfg_json into the store here so any layout tracking it (e.g. IDAA Novi
|
||||
// verification) gets notified and can retry with the correct config.
|
||||
// runs after the page renders. Push any fields that may have been missing from
|
||||
// the stale cache (e.g. account_name, cfg_json) back into $ae_loc so the UI
|
||||
// reflects the correct values without requiring a second full page reload.
|
||||
const loc_patch: Record<string, unknown> = {};
|
||||
|
||||
if (result.cfg_json) {
|
||||
const current_cfg = get(ae_loc).site_cfg_json;
|
||||
if (
|
||||
JSON.stringify(current_cfg) !==
|
||||
JSON.stringify(result.cfg_json)
|
||||
) {
|
||||
ae_loc.update((loc) => ({
|
||||
...loc,
|
||||
site_cfg_json: result.cfg_json
|
||||
}));
|
||||
if (JSON.stringify(current_cfg) !== JSON.stringify(result.cfg_json)) {
|
||||
loc_patch.site_cfg_json = result.cfg_json;
|
||||
}
|
||||
}
|
||||
|
||||
if (result.account_name) {
|
||||
const current_name = get(ae_loc).account_name;
|
||||
// Only overwrite the default placeholder — don't stomp a real value.
|
||||
if (!current_name || current_name === 'Account Name Not Set' || current_name === 'Ghost Account') {
|
||||
loc_patch.account_name = result.account_name;
|
||||
}
|
||||
}
|
||||
|
||||
if (result.account_code) {
|
||||
const current_code = get(ae_loc).account_code;
|
||||
if (!current_code || current_code === 'not_set' || current_code === 'ghost') {
|
||||
loc_patch.account_code = result.account_code;
|
||||
}
|
||||
}
|
||||
|
||||
if (Object.keys(loc_patch).length > 0) {
|
||||
ae_loc.update((loc) => ({ ...loc, ...loc_patch }));
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
} catch (error: any) {
|
||||
|
||||
@@ -472,8 +472,8 @@ export async function load({ fetch, params, parent, route, url }) {
|
||||
// });
|
||||
// }
|
||||
|
||||
ae_loc_init['account_name'] =
|
||||
json_data.account_name || 'Account Name Not Set';
|
||||
// account_name is already set above (line ~385). This was a duplicate that
|
||||
// overwrote it with a different fallback string — removed.
|
||||
|
||||
// ae_acct['api'] = ae_api_init; // DO NOT USE: This overwrites our isolated clone from line 65
|
||||
ae_acct['loc'] = ae_loc_init;
|
||||
|
||||
@@ -88,7 +88,7 @@ onMount(() => {
|
||||
</p>
|
||||
{:else if !$ae_loc.trusted_access}
|
||||
<h3 class="h4">Restricted Access</h3>
|
||||
<p>You access to the presentation management system is limited.</p>
|
||||
<p>Your access to the presentation management system is limited.</p>
|
||||
{/if}
|
||||
|
||||
<!-- <Element_data_store
|
||||
@@ -164,7 +164,7 @@ onMount(() => {
|
||||
Event Home
|
||||
</a>
|
||||
|
||||
{#if $ae_loc.trusted_access}
|
||||
{#if $ae_loc.trusted_access && $ae_loc.edit_mode}
|
||||
<a
|
||||
href="/events/{event_obj.event_id}/pres_mgmt"
|
||||
class="btn btn-sm preset-tonal-secondary border-secondary-500 hover:preset-filled-secondary-500 border"
|
||||
|
||||
@@ -39,7 +39,7 @@ export async function load({ parent }) {
|
||||
// inc_session_li: false,
|
||||
hidden: 'all', // 'not_hidden'
|
||||
enabled: 'enabled',
|
||||
limit: 25,
|
||||
limit: 7,
|
||||
try_cache: true,
|
||||
log_lvl: log_lvl
|
||||
});
|
||||
|
||||
@@ -24,7 +24,7 @@ const modules = [
|
||||
icon: Presentation,
|
||||
description: 'Manage sessions, presentations, and presenters.',
|
||||
color: 'preset-filled-primary-200-800',
|
||||
access: 'authenticated_access'
|
||||
access: 'anonymous_access'
|
||||
},
|
||||
{
|
||||
name: 'Launcher',
|
||||
@@ -40,7 +40,7 @@ const modules = [
|
||||
icon: IdCard,
|
||||
description: 'Manage and print event badges.',
|
||||
color: 'preset-filled-tertiary-200-800',
|
||||
access: 'authenticated_access'
|
||||
access: 'anonymous_access'
|
||||
},
|
||||
{
|
||||
name: 'Leads',
|
||||
|
||||
Reference in New Issue
Block a user