cluedin-widget
Version:
This project contains all the pages needed for browsing entities and searching them. The aim is to replace the CluedIn.Webapp project with this one when all the pages ( including the Admin page ) will be ported to REACT.
57 lines (48 loc) • 1.83 kB
JavaScript
import constants from '../constants';
const initialState = {
genericLastIssues: {},
isFetchingGenericIssues: true,
isFakeGenericIssues: false,
pageNumber: 0,
currentTimeStamp: void 0,
currentIssues: [],
};
export default function update(state = initialState, action = {}) {
switch (action.type) {
case constants.issue.REQUEST_GENERIC_LAST_ISSUES:
let timeStamp = action.data.timeStamp;
let pageNumber = state.pageNumber;
let currentIssues = state.currentIssues;
let cleanGenericLastIssues = Object.assign({}, state.genericLastIssues);
if (state.currentTimeStamp && state.currentTimeStamp !== action.data.timeStamp) {
cleanGenericLastIssues[timeStamp] = void 0;
pageNumber = 0;
currentIssues = [];
}
return Object.assign({}, {
genericLastIssues: cleanGenericLastIssues,
isFetchingGenericIssues: true,
isFakeGenericIssues: false,
pageNumber,
currentTimeStamp: timeStamp,
currentIssues,
});
case constants.issue.RECEIVE_GENERIC_LAST_ISSUES:
let newGenericLastIssues = Object.assign({}, state.genericLastIssues);
if (newGenericLastIssues[action.data.timeStamp]) {
newGenericLastIssues[action.data.timeStamp] = newGenericLastIssues[action.data.timeStamp].concat(action.data.issues);
} else {
newGenericLastIssues[action.data.timeStamp] = action.data.issues;
}
return Object.assign({}, {
genericLastIssues: newGenericLastIssues,
isFetchingGenericIssues: false,
isFakeGenericIssues: action.data.isFake,
pageNumber: action.data.pageNumber,
currentTimeStamp: state.currentTimeStamp,
currentIssues: newGenericLastIssues[action.data.timeStamp],
});
default :
return state;
}
};