diff --git a/code/core/src/manager-api/modules/stories.ts b/code/core/src/manager-api/modules/stories.ts index ff35677c8049..6ce887833b15 100644 --- a/code/core/src/manager-api/modules/stories.ts +++ b/code/core/src/manager-api/modules/stories.ts @@ -896,7 +896,7 @@ export const init: ModuleFn = ({ }, experimental_setFilter: async (id, filterFunction) => { - await store.setState({ filters: { ...store.getState().filters, [id]: filterFunction } }); + await store.setState((state) => ({ filters: { ...state.filters, [id]: filterFunction } })); const { internal_index: index } = store.getState(); diff --git a/code/core/src/manager-api/tests/stories.test.ts b/code/core/src/manager-api/tests/stories.test.ts index 07ddd350223a..19b8cd819775 100644 --- a/code/core/src/manager-api/tests/stories.test.ts +++ b/code/core/src/manager-api/tests/stories.test.ts @@ -56,8 +56,12 @@ function createMockStore(initialState: Partial = {}) { let state = initialState; return { getState: vi.fn(() => state), - setState: vi.fn((s: typeof state) => { - state = { ...state, ...s }; + setState: vi.fn((s: Partial | ((s: Partial) => Partial)) => { + if (typeof s === 'function') { + state = { ...state, ...s(state) }; + } else { + state = { ...state, ...s }; + } return Promise.resolve(state); }), } as any as Store; @@ -1484,7 +1488,7 @@ describe('stories API', () => { await api.setIndex({ v: 5, entries: mockEntries }); - api.experimental_setFilter('myCustomFilter', () => true); + await api.experimental_setFilter('myCustomFilter', () => true); expect(store.getState()).toEqual( expect.objectContaining({