refactor(state): address review recommendations for store and prefs
This commit is contained in:
@@ -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);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -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
@@ -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],
|
||||||
|
|||||||
Reference in New Issue
Block a user