import { reducerWithInitialState } from 'typescript-fsa-reducers' import { combineReducers } from 'redux' import { IOrg, IOrgProperties, IUser } from './interfaces' import * as actions from './actions' import { logout } from '../auth/actions' const org = reducerWithInitialState({} as IOrg) .case(actions.fetchOrgSuccess, (state, org) => org) .case(logout, () => ({} as IOrg)) const orgProperties = reducerWithInitialState({} as IOrgProperties) .case(actions.fetchOrgPropertiesSuccess, (state, orgProperties) => orgProperties) .case(logout, () => ({} as IOrgProperties)) const usersById = reducerWithInitialState({}) .case(actions.fetchUsersSuccess, (state, users) => { users.forEach((user: IUser) => { state[user.id] = user }) return state }) export default combineReducers({ org, orgProperties, usersById, })