fix: add error logging, missing persist fields, and version to store configs
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m25s
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 1m25s
- safe-persist.ts: add console.error logging to setItem catch block (was silently swallowing all errors) - manaStore.ts: add meditateTicks to partialize (was lost on refresh) - combatStore.ts: add currentAction, currentRoom, comboHitCount, floorHitCount, totalSpellsCast, totalDamageDealt, totalCraftsCompleted to partialize - All 8 stores: add version: 1 to persist configs for future schema migration safety Fixes #147
This commit is contained in:
@@ -87,6 +87,7 @@ export const useAttunementStore = create<AttunementStoreState>()(
|
||||
{
|
||||
storage: createSafeStorage(),
|
||||
name: 'mana-loop-attunements',
|
||||
version: 1,
|
||||
partialize: (state) => ({
|
||||
attunements: state.attunements,
|
||||
}),
|
||||
|
||||
@@ -307,20 +307,28 @@ export const useCombatStore = create<CombatStore>()(
|
||||
{
|
||||
storage: createSafeStorage(),
|
||||
name: 'mana-loop-combat',
|
||||
version: 1,
|
||||
partialize: (state) => ({
|
||||
currentFloor: state.currentFloor,
|
||||
maxFloorReached: state.maxFloorReached,
|
||||
spells: state.spells,
|
||||
activeSpell: state.activeSpell,
|
||||
currentAction: state.currentAction,
|
||||
floorHP: state.floorHP,
|
||||
floorMaxHP: state.floorMaxHP,
|
||||
castProgress: state.castProgress,
|
||||
spireMode: state.spireMode,
|
||||
currentRoom: state.currentRoom,
|
||||
clearedFloors: state.clearedFloors,
|
||||
golemancy: state.golemancy,
|
||||
equipmentSpellStates: state.equipmentSpellStates,
|
||||
comboHitCount: state.comboHitCount,
|
||||
floorHitCount: state.floorHitCount,
|
||||
activityLog: state.activityLog,
|
||||
achievements: state.achievements,
|
||||
totalSpellsCast: state.totalSpellsCast,
|
||||
totalDamageDealt: state.totalDamageDealt,
|
||||
totalCraftsCompleted: state.totalCraftsCompleted,
|
||||
}),
|
||||
}
|
||||
)
|
||||
|
||||
@@ -356,6 +356,7 @@ export const useCraftingStore = create<CraftingStore>()(
|
||||
{
|
||||
storage: createSafeStorage(),
|
||||
name: 'mana-loop-crafting',
|
||||
version: 1,
|
||||
partialize: (state) => ({
|
||||
designProgress: state.designProgress,
|
||||
designProgress2: state.designProgress2,
|
||||
|
||||
@@ -216,6 +216,6 @@ export const useDisciplineStore = create<DisciplineStore>()(
|
||||
return { rawMana, elements, unlockedEffects: newUnlockedEffects };
|
||||
},
|
||||
}),
|
||||
{ storage: createSafeStorage(), name: 'mana-loop-discipline-store', partialize: (state) => ({ disciplines: state.disciplines, activeIds: state.activeIds, concurrentLimit: state.concurrentLimit, totalXP: state.totalXP, processedPerks: state.processedPerks }) }
|
||||
{ storage: createSafeStorage(), name: 'mana-loop-discipline-store', version: 1, partialize: (state) => ({ disciplines: state.disciplines, activeIds: state.activeIds, concurrentLimit: state.concurrentLimit, totalXP: state.totalXP, processedPerks: state.processedPerks }) }
|
||||
)
|
||||
);
|
||||
@@ -386,6 +386,7 @@ export const useGameStore = create<GameCoordinatorStore>()(
|
||||
{
|
||||
storage: createSafeStorage(),
|
||||
name: 'mana-loop-game-storage',
|
||||
version: 1,
|
||||
partialize: (state) => ({
|
||||
day: state.day,
|
||||
hour: state.hour,
|
||||
|
||||
@@ -205,7 +205,8 @@ export const useManaStore = create<ManaStore>()(
|
||||
{
|
||||
storage: createSafeStorage(),
|
||||
name: 'mana-loop-mana',
|
||||
partialize: (state) => ({ rawMana: state.rawMana, totalManaGathered: state.totalManaGathered, elements: state.elements }),
|
||||
version: 1,
|
||||
partialize: (state) => ({ rawMana: state.rawMana, meditateTicks: state.meditateTicks, totalManaGathered: state.totalManaGathered, elements: state.elements }),
|
||||
}
|
||||
)
|
||||
);
|
||||
|
||||
@@ -273,6 +273,7 @@ export const usePrestigeStore = create<PrestigeStore>()(
|
||||
{
|
||||
storage: createSafeStorage(),
|
||||
name: 'mana-loop-prestige',
|
||||
version: 1,
|
||||
partialize: (state) => ({
|
||||
loopCount: state.loopCount,
|
||||
insight: state.insight,
|
||||
|
||||
@@ -66,6 +66,6 @@ export const useUIStore = create<UIState>()(
|
||||
});
|
||||
},
|
||||
}),
|
||||
{ storage: createSafeStorage(), name: 'mana-loop-ui-storage', partialize: (state) => ({ logs: state.logs, paused: state.paused, gameOver: state.gameOver, victory: state.victory }) }
|
||||
{ storage: createSafeStorage(), name: 'mana-loop-ui-storage', version: 1, partialize: (state) => ({ logs: state.logs, paused: state.paused, gameOver: state.gameOver, victory: state.victory }) }
|
||||
)
|
||||
);
|
||||
|
||||
@@ -30,6 +30,7 @@ export function createSafeStorage(): any {
|
||||
try {
|
||||
localStorage.setItem(name, JSON.stringify(value));
|
||||
} catch (error) {
|
||||
console.error('[safe-persist] Failed to persist:', name, error);
|
||||
}
|
||||
},
|
||||
removeItem: (name: string): void => {
|
||||
|
||||
Reference in New Issue
Block a user