fix(stores): merge defaults on PersistedState deserialize so new fields get defaults
runed PersistedState hydrates raw stored JSON without merging defaults, so any field added after a user's first session is undefined rather than its default value. Apply a shallow spread (defaults → stored) in the custom serializer for badges, leads, and pres_mgmt stores so new fields always fall back to defaults for existing sessions — without disrupting any previously saved preferences. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -15,4 +15,11 @@
|
|||||||
import { PersistedState } from 'runed';
|
import { PersistedState } from 'runed';
|
||||||
import { badges_loc_defaults } from './ae_events_stores__badges_defaults';
|
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) })
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|||||||
@@ -18,4 +18,9 @@
|
|||||||
import { PersistedState } from 'runed';
|
import { PersistedState } from 'runed';
|
||||||
import { leads_loc_defaults } from './ae_events_stores__leads_defaults';
|
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) })
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|||||||
@@ -15,4 +15,9 @@
|
|||||||
import { PersistedState } from 'runed';
|
import { PersistedState } from 'runed';
|
||||||
import { pres_mgmt_loc_defaults } from './ae_events_stores__pres_mgmt_defaults';
|
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) })
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user