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.
83 lines (76 loc) • 3.53 kB
JavaScript
import constants from '../constants';
const initialState = {
  genericLastOrganizations: {},
  isFetchingGenericOrganizations: true,
  isFakeGenericOrganization: false,
  pageNumber: 0,
  isFetchingCurrentOrganization: false,
  currentTimeStamp: void 0,
  currentOrganization: void 0,
  currentOrganizations: [],
};
export default function update(state = initialState, action = {}) {
  switch (action.type) {
    case constants.organization.REQUEST_GENERIC_LAST_ORGANIZATIONS:
      let timeStamp = action.data.timeStamp;
      let pageNumber = state.pageNumber;
      let currentOrganizations = state.currentOrganizations;
      let cleanGenericLastOrganizations = Object.assign({}, state.genericLastOrganizations);
      if (state.currentTimeStamp && state.currentTimeStamp !== action.data.timeStamp) {
        cleanGenericLastOrganizations[timeStamp] = void 0;
        pageNumber = 0;
        currentOrganizations = [];
      }
      return Object.assign({}, {
        genericLastOrganizations: cleanGenericLastOrganizations,
        isFetchingGenericOrganizations: true,
        isFakeGenericOrganization: state.isFakeGenericOrganization,
        pageNumber,
        isFetchingCurrentOrganization: state.isFetchingCurrentOrganization,
        currentOrganization: state.currentOrganization,
        currentTimeStamp: timeStamp,
        currentOrganizations,
      });
    case constants.organization.RECEIVE_GENERIC_LAST_ORGANIZATIONS:
      let newGenericLastOrganizations = Object.assign({}, state.genericLastOrganizations);
      if (newGenericLastOrganizations[action.data.timeStamp]) {
        newGenericLastOrganizations[action.data.timeStamp] = newGenericLastOrganizations[action.data.timeStamp].concat(action.data.organizations);
      } else {
        newGenericLastOrganizations[action.data.timeStamp] = action.data.organizations;
      }
      return Object.assign({}, {
        genericLastOrganizations: newGenericLastOrganizations,
        isFetchingGenericOrganizations: false,
        isFakeGenericOrganization: action.data.fake,
        pageNumber: action.data.pageNumber,
        isFetchingCurrentOrganization: state.isFetchingCurrentOrganization,
        currentOrganization: state.currentOrganization,
        currentTimeStamp: state.currentTimeStamp,
        currentOrganizations: newGenericLastOrganizations[action.data.timeStamp],
      });
    case constants.organization.REQUEST_CURRENT_ORGANIZATION:
      return Object.assign({}, {
        genericLastOrganizations: state.genericLastOrganizations,
        isFetchingGenericOrganizations: state.isFetchingGenericOrganizations,
        isFakeGenericOrganization: state.isFakeGenericOrganization,
        pageNumber: state.pageNumber,
        isFetchingCurrentOrganization: true,
        currentOrganization: state.currentOrganization,
        currentTimeStamp: state.currentTimeStamp,
        currentOrganizations: state.currentOrganizations,
      });
    case constants.organization.RECEIVE_CURRENT_ORGANIZATION:
      return Object.assign({}, {
        genericLastOrganizations: state.genericLastOrganizations,
        isFetchingGenericOrganizations: state.isFetchingGenericOrganizations,
        isFakeGenericOrganization: state.isFakeGenericOrganization,
        pageNumber: state.pageNumber,
        isFetchingCurrentOrganization: false,
        currentOrganization: action.data.org,
        currentTimeStamp: state.currentTimeStamp,
        currentOrganizations: state.currentOrganizations,
      });
    default :
      return state;
  }
};