From ae3f32cc018407754d8f1c2cfc7d49a2aa1c3ced Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Mon, 25 Feb 2019 22:48:10 +0000 Subject: [PATCH] Store: handle addJournal correctly (include empty entry list). Fixes #35. --- src/store/reducers.ts | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/store/reducers.ts b/src/store/reducers.ts index 9b57d09..b979104 100644 --- a/src/store/reducers.ts +++ b/src/store/reducers.ts @@ -193,13 +193,23 @@ const mapReducerActionsMapCreator = , V extends BaseModel> }; }; -export const entries = handleAction( - combineActions(actions.fetchEntries, actions.createEntries), - (state: EntriesTypeImmutable, action: any) => { - const prevState = state.get(action.meta.journal); - const extend = action.meta.prevUid != null; - return state.set(action.meta.journal, - fetchTypeIdentityReducer(prevState, action, extend)); +function fetchCreateEntriesReducer(state: EntriesTypeImmutable, action: any) { + const prevState = state.get(action.meta.journal); + const extend = action.meta.prevUid != null; + return state.set(action.meta.journal, + fetchTypeIdentityReducer(prevState, action, extend)); +} + +export const entries = handleActions( + { + [actions.fetchEntries.toString()]: fetchCreateEntriesReducer, + [actions.createEntries.toString()]: fetchCreateEntriesReducer, + [actions.addJournal.toString()]: (state: EntriesTypeImmutable, action: any) => { + const journal = action.meta.item.uid; + const prevState = state.get(journal); + return state.set(journal, + fetchTypeIdentityReducer(prevState, { payload: [] }, false)); + }, }, ImmutableMap({}) );