loop-modules
Version:
Shared modules for the Loop product suite.
36 lines (34 loc) • 1.35 kB
text/typescript
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 (<any>Object).assign({}, state, {
entries: [...state.entries, ...action.payload]
});
case ActionTypes.ADD_SELECTED:
return (<any>Object).assign({}, state, {
selectedEntries: [...state.selectedEntries, ...action.payload]
});
case ActionTypes.REMOVE_SELECTED:
return (<any>Object).assign({}, state, {
selectedEntries: state.selectedEntries.filter((value: LoopDocument) => {
return (action.payload.indexOf(value) === -1);
})
});
case ActionTypes.SET_ENTRIES:
return (<any>Object).assign({}, state, {
entries: action.payload
});
case ActionTypes.SET_SELECTED:
return (<any>Object).assign({}, state, {
selectedEntries: action.payload
});
default:
return state;
}
}