import { reducerWithInitialState } from 'typescript-fsa-reducers' import { combineReducers } from 'redux' import { keyBy } from 'lodash' import * as EndUserActions from './actions' import { IEndUser } from './interfaces' const endUsers = reducerWithInitialState({}) .case(EndUserActions.fetchEndUsersSuccess, (state, endUsers) => keyBy(endUsers, 'id')) .case(EndUserActions.updateEndUser, (state, payload: IEndUser) => { return { ...state, [payload.id]: payload } }) const loading = reducerWithInitialState(false) .case(EndUserActions.fetchEndUsersPending, () => true) .cases([ EndUserActions.fetchEndUsersSuccess, EndUserActions.fetchEndUsersFailed, ], () => false) export default combineReducers({ endUsers, loading, })