refactor(state): address review recommendations for store and prefs

This commit is contained in:
ginnoir
2026-06-11 21:14:04 -05:00
parent 09e2d06b87
commit adf730702d
3 changed files with 8 additions and 14 deletions
+6 -6
View File
@@ -67,12 +67,12 @@ describe('prefs', () => {
expect(localStorage.getItem('idlegame:prefs:v2')).toBeNull(); expect(localStorage.getItem('idlegame:prefs:v2')).toBeNull();
}); });
});
describe('expanded prefs', () => { describe('expanded prefs', () => {
it('defaults collapsedActionGroups and showEventLog', () => { it('defaults collapsedActionGroups and showEventLog', () => {
const prefs = getPrefs(); const prefs = getPrefs();
expect(prefs.collapsedActionGroups).toEqual({}); expect(prefs.collapsedActionGroups).toEqual({});
expect(prefs.showEventLog).toBe(true); expect(prefs.showEventLog).toBe(true);
});
}); });
}); });
-6
View File
@@ -34,18 +34,12 @@ describe('game store nav and prefs', () => {
const state = useGameStore.getState(); const state = useGameStore.getState();
state.setActivePanel('story'); state.setActivePanel('story');
expect(useGameStore.getState().activePanel).toBe('story'); expect(useGameStore.getState().activePanel).toBe('story');
// Reset back
useGameStore.getState().setActivePanel('play');
}); });
it('updates selectedStoryNodeId via setSelectedStoryNodeId', () => { it('updates selectedStoryNodeId via setSelectedStoryNodeId', () => {
const state = useGameStore.getState(); const state = useGameStore.getState();
state.setSelectedStoryNodeId('node-1'); state.setSelectedStoryNodeId('node-1');
expect(useGameStore.getState().selectedStoryNodeId).toBe('node-1'); expect(useGameStore.getState().selectedStoryNodeId).toBe('node-1');
state.setSelectedStoryNodeId(null);
expect(useGameStore.getState().selectedStoryNodeId).toBeNull();
}); });
it('toggles collapsed action groups in prefs', () => { it('toggles collapsed action groups in prefs', () => {
+2 -2
View File
@@ -39,7 +39,7 @@ export interface GameStoreState extends GameView {
toggleActionGroupCollapsed: (groupKey: string) => void; toggleActionGroupCollapsed: (groupKey: string) => void;
} }
export const useGameStore = create<GameStoreState>((set) => ({ export const useGameStore = create<GameStoreState>((set, get) => ({
resources: [], resources: [],
activeActionId: null, activeActionId: null,
actionName: null, actionName: null,
@@ -70,7 +70,7 @@ export const useGameStore = create<GameStoreState>((set) => ({
setActivePanel: (panel) => set({ activePanel: panel }), setActivePanel: (panel) => set({ activePanel: panel }),
setSelectedStoryNodeId: (id) => set({ selectedStoryNodeId: id }), setSelectedStoryNodeId: (id) => set({ selectedStoryNodeId: id }),
toggleActionGroupCollapsed: (groupKey) => { toggleActionGroupCollapsed: (groupKey) => {
const currentPrefs = useGameStore.getState().prefs; const currentPrefs = get().prefs;
const nextCollapsed = { const nextCollapsed = {
...currentPrefs.collapsedActionGroups, ...currentPrefs.collapsedActionGroups,
[groupKey]: !currentPrefs.collapsedActionGroups[groupKey], [groupKey]: !currentPrefs.collapsedActionGroups[groupKey],