diff --git a/src/lib/stores/ae_events_stores__badges.svelte.ts b/src/lib/stores/ae_events_stores__badges.svelte.ts index e7cb7af8..968ff229 100644 --- a/src/lib/stores/ae_events_stores__badges.svelte.ts +++ b/src/lib/stores/ae_events_stores__badges.svelte.ts @@ -15,4 +15,11 @@ import { PersistedState } from 'runed'; import { badges_loc_defaults } from './ae_events_stores__badges_defaults'; -export const badges_loc = new PersistedState('ae_badges_loc', badges_loc_defaults); +// Custom deserializer merges stored JSON with defaults so that new fields added +// after a user's first session get their default values rather than undefined. +export const badges_loc = new PersistedState('ae_badges_loc', badges_loc_defaults, { + serializer: { + serialize: JSON.stringify, + deserialize: (raw: string) => ({ ...badges_loc_defaults, ...JSON.parse(raw) }) + } +}); diff --git a/src/lib/stores/ae_events_stores__leads.svelte.ts b/src/lib/stores/ae_events_stores__leads.svelte.ts index 33625fe8..d23d2388 100644 --- a/src/lib/stores/ae_events_stores__leads.svelte.ts +++ b/src/lib/stores/ae_events_stores__leads.svelte.ts @@ -18,4 +18,9 @@ import { PersistedState } from 'runed'; import { leads_loc_defaults } from './ae_events_stores__leads_defaults'; -export const leads_loc = new PersistedState('ae_leads_loc', leads_loc_defaults); +export const leads_loc = new PersistedState('ae_leads_loc', leads_loc_defaults, { + serializer: { + serialize: JSON.stringify, + deserialize: (raw: string) => ({ ...leads_loc_defaults, ...JSON.parse(raw) }) + } +}); diff --git a/src/lib/stores/ae_events_stores__pres_mgmt.svelte.ts b/src/lib/stores/ae_events_stores__pres_mgmt.svelte.ts index 67815c12..3694a587 100644 --- a/src/lib/stores/ae_events_stores__pres_mgmt.svelte.ts +++ b/src/lib/stores/ae_events_stores__pres_mgmt.svelte.ts @@ -15,4 +15,9 @@ import { PersistedState } from 'runed'; import { pres_mgmt_loc_defaults } from './ae_events_stores__pres_mgmt_defaults'; -export const pres_mgmt_loc = new PersistedState('ae_pres_mgmt_loc', pres_mgmt_loc_defaults); +export const pres_mgmt_loc = new PersistedState('ae_pres_mgmt_loc', pres_mgmt_loc_defaults, { + serializer: { + serialize: JSON.stringify, + deserialize: (raw: string) => ({ ...pres_mgmt_loc_defaults, ...JSON.parse(raw) }) + } +});