import { LoopDocumentState, initialState } from '../states/loop-document.state'; import { Actions, ActionTypes } from '../actions/loop-document.action'; import { LoopDocument } from '../interfaces/loop-document.interface'; export function reducer( state: LoopDocumentState = initialState, action: Actions ): LoopDocumentState { switch (action.type) { case ActionTypes.QUERY: return (Object).assign({}, state, { entries: [...state.entries, ...action.payload] }); case ActionTypes.ADD_SELECTED: return (Object).assign({}, state, { selectedEntries: [...state.selectedEntries, ...action.payload] }); case ActionTypes.REMOVE_SELECTED: return (Object).assign({}, state, { selectedEntries: state.selectedEntries.filter((value: LoopDocument) => { return (action.payload.indexOf(value) === -1); }) }); case ActionTypes.SET_ENTRIES: return (Object).assign({}, state, { entries: action.payload }); case ActionTypes.SET_SELECTED: return (Object).assign({}, state, { selectedEntries: action.payload }); default: return state; } }