import * as _ from 'lodash' import { reducerWithInitialState } from 'typescript-fsa-reducers' import { IComposeViewState } from './interfaces' import * as actions from './actions' import { logout } from '../auth/actions' const composeViewStatus = reducerWithInitialState({} as IComposeViewState) .case(actions.createComposeViewState, (state, { composeViewUUID, recipientLength }) => { state[composeViewUUID] = { recipientLength, sendStatus: true, calendarInjectionLoading: false } return state }) .case(actions.driftRecipientLength, (state, { composeViewUUID, recipientLength }) => { state[composeViewUUID].recipientLength = recipientLength return state }) .case(actions.driftSendStatus, (state, { composeViewUUID, sendStatus }) => { if (_.get(state[composeViewUUID], 'recipientLength', 0) <= 1) { state[composeViewUUID].sendStatus = sendStatus } return state }) .case(actions.driftCalenderInjectionLoading, (state, { composeViewUUID, calendarInjectionLoading }) => { state[composeViewUUID].calendarInjectionLoading = calendarInjectionLoading return state }) .case(actions.deleteComposeViewState, (state, composeViewUUID) => { delete state[composeViewUUID] return state }) .case(logout, () => ({})) export default composeViewStatus