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.
117 lines (101 loc) • 3.96 kB
JavaScript
import constants from '../constants';
const initialState = {
entities: {},
selectedEntity: void 0,
isFetchingEntity: true,
genericLatestEntities: {},
isFetchingGenericLatest: {},
currentSuggestedSearches: {},
isFetchingSuggestedSearches: {},
entityByEmail: {},
isFetchingEntityByEmail: true,
entityFromSalesForce: void 0,
isFetchingEntityFromSalesForce: true,
entityEmailNotFound: true,
entitiesPerTimeStamp: {},
invalidSalesForceId: false
};
export default function update(state = initialState, action = {}) {
switch (action.type) {
case constants.entity.REQUEST_ENTITY:
return Object.assign({}, state, {
entities: state.entities,
selectedEntity: void 0,
isFetchingEntity: true,
currentSuggestedSearches: {},
isFetchingSuggestedSearches: {},
});
case constants.entity.RECEIVE_ENTITY:
var entities = state.entities;
if (action.data.addToEntities) {
entities[action.data.entity.id] = action.data.entity;
}
return Object.assign({}, state, {
entities: Object.assign({}, entities),
selectedEntity: action.data.entity,
isFetchingEntity: false,
});
case constants.entity.REQUEST_GENERIC_LATEST:
var type = action.data.type;
state.isFetchingGenericLatest[type] = true;
return Object.assign({}, state, {
isFetchingGenericLatest: Object.assign(state.isFetchingGenericLatest),
});
case constants.entity.RECEIVE_GENERIC_LATEST:
var entitiesPerType = action.data.entities;
var type = action.data.type;
state.genericLatestEntities[type] = entitiesPerType;
state.isFetchingGenericLatest[type] = false;
return Object.assign({}, state, {
genericLatestEntities: Object.assign(state.genericLatestEntities),
isFetchingGenericLatest: Object.assign(state.isFetchingGenericLatest),
});
case constants.entity.RECEIVE_SUGGESTED_SEARCH:
var suggested = {};
suggested[action.data.index] = action.data.entities;
var suggestedSearches = Object.assign(state.currentSuggestedSearches, suggested);
return Object.assign({}, state, {
currentSuggestedSearches: Object.assign({}, suggestedSearches),
});
case constants.entity.REQUEST_ENTITY_BY_EMAIL:
return Object.assign({}, state, {
isFetchingEntityByEmail: true,
entityEmailNotFound: false,
});
case constants.entity.RECEIVE_ENTITY_BY_EMAIL:
return Object.assign({}, state, {
entityByEmail: action.data.entity,
isFetchingEntityByEmail: false,
});
case constants.entity.RECEIVE_ENTITY_FOR_SALESFORCE:
return Object.assign({}, state, {
entityFromSalesForce: action.data.entity,
isFetchingEntityFromSalesForce: false,
});
case constants.entity.INVALID_ENTITY_BY_EMAIL:
return Object.assign({}, state, {
entityEmailNotFound: true,
isFetchingEntityByEmail: false,
});
case constants.entity.REQUEST_GENERIC_LAST_ENTITIES:
const timeStampEntities = state.entitiesPerTimeStamp;
timeStampEntities[action.data.timestamp] = { isFetching: true, entities: [] };
return Object.assign({}, state, {
entitiesPerTimeStamp: Object.assign({}, timeStampEntities),
});
case constants.entity.INVALID_ENTITY_FOR_SALESFORCE:
return Object.assign({}, state, {
entityFromSalesForce: void 0,
invalidSalesForceId: true,
isFetchingEntityFromSalesForce: false,
});
case constants.entity.RECEIVE_GENERIC_LAST_ENTITIES:
const receiveTimeStampEntities = state.entitiesPerTimeStamp;
receiveTimeStampEntities[action.data.timestamp] = { isFetching: false, entities: action.data.entities };
return Object.assign({}, state, {
entitiesPerTimeStamp: Object.assign({}, receiveTimeStampEntities),
});
default :
return state;
}
};