loop-modules
Version:
Shared modules for the Loop product suite.
36 lines (34 loc) • 1.23 kB
text/typescript
import { LoopScenarioState, initialState } from '../states/loop-scenario.state';
import { Actions, ActionTypes } from '../actions/loop-scenario.action';
export function reducer(
state: LoopScenarioState = initialState,
action: Actions
): LoopScenarioState {
switch (action.type) {
case ActionTypes.QUERY:
return (<any>Object).assign({}, state, {
entries: [...state.entries, ...action.payload]
});
case ActionTypes.TOGGLE_SELECTED:
let selectedEntries = state.selectedEntries;
if(selectedEntries.indexOf(action.payload) === -1) {
selectedEntries = [action.payload];
}
else {
selectedEntries = [];
}
return (<any>Object).assign({}, state, {
selectedEntries: selectedEntries
});
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;
}
}