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.
134 lines (122 loc) • 5.32 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
};
export default function update(state = initialState, action = {}) {
switch (action.type) {
case constants.entity.REQUEST_ENTITY:
return Object.assign({}, {
entities: state.entities,
selectedEntity: void 0,
isFetchingEntity: true,
genericLatestEntities: state.genericLatestEntities,
isFetchingGenericLatest: state.isFetchingGenericLatest,
currentSuggestedSearches: {},
isFetchingSuggestedSearches: {},
entityByEmail: state.entityByEmail,
isFetchingEntityByEmail: state.isFetchingEntityByEmail,
});
case constants.entity.RECEIVE_ENTITY:
var entities = state.entities;
if (action.data.addToEntities) {
entities[action.data.entity.id] = action.data.entity;
}
return Object.assign({}, {
entities: Object.assign({}, entities),
selectedEntity: action.data.entity,
isFetchingEntity: false,
genericLatestEntities: state.genericLatestEntities,
isFetchingGenericLatest: state.isFetchingGenericLatest,
currentSuggestedSearches: state.currentSuggestedSearches,
isFetchingSuggestedSearches: state.isFetchingSuggestedSearches,
entityByEmail: state.entityByEmail,
isFetchingEntityByEmail: state.isFetchingEntityByEmail,
});
case constants.entity.REQUEST_GENERIC_LATEST:
var type = action.data.type;
state.isFetchingGenericLatest[type] = true;
return Object.assign({}, {
entities: state.entities,
selectedEntity: state.selectedEntity,
isFetchingEntity: state.isFetchingEntity,
genericLatestEntities: state.genericLatestEntities,
isFetchingGenericLatest: Object.assign(state.isFetchingGenericLatest),
currentSuggestedSearches: state.currentSuggestedSearches,
isFetchingSuggestedSearches: state.isFetchingSuggestedSearches,
entityByEmail: state.entityByEmail,
isFetchingEntityByEmail: state.isFetchingEntityByEmail,
});
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({}, {
entities: state.entities,
selectedEntity: state.selectedEntity,
isFetchingEntity: state.isFetchingEntity,
genericLatestEntities: Object.assign(state.genericLatestEntities),
isFetchingGenericLatest: Object.assign(state.isFetchingGenericLatest),
currentSuggestedSearches: state.currentSuggestedSearches,
isFetchingSuggestedSearches: state.isFetchingSuggestedSearches,
entityByEmail: state.entityByEmail,
isFetchingEntityByEmail: state.isFetchingEntityByEmail,
});
case constants.entity.RECEIVE_SUGGESTED_SEARCH:
var suggested = {};
suggested[action.data.index] = action.data.entities;
var suggestedSearches = Object.assign(state.currentSuggestedSearches, suggested);
return {
entities: state.entities,
selectedEntity: state.selectedEntity,
isFetchingEntity: state.isFetchingEntity,
genericLatestEntities: state.genericLatestEntities,
isFetchingGenericLatest: state.isFetchingGenericLatest,
currentSuggestedSearches: Object.assign({}, suggestedSearches),
isFetchingSuggestedSearches: state.isFetchingSuggestedSearches,
entityByEmail: state.entityByEmail,
isFetchingEntityByEmail: state.isFetchingEntityByEmail,
};
case constants.entity.REQUEST_ENTITY_BY_EMAIL:
return {
entities: state.entities,
selectedEntity: state.selectedEntity,
isFetchingEntity: state.isFetchingEntity,
genericLatestEntities: state.genericLatestEntities,
isFetchingGenericLatest: state.isFetchingGenericLatest,
currentSuggestedSearches: state.currentSuggestedSearches,
isFetchingSuggestedSearches: state.isFetchingSuggestedSearches,
entityByEmail: state.entityByEmail,
isFetchingEntityByEmail: true,
};
case constants.entity.RECEIVE_ENTITY_BY_EMAIL:
return {
entities: state.entities,
selectedEntity: state.selectedEntity,
isFetchingEntity: state.isFetchingEntity,
genericLatestEntities: state.genericLatestEntities,
isFetchingGenericLatest: state.isFetchingGenericLatest,
currentSuggestedSearches: state.currentSuggestedSearches,
isFetchingSuggestedSearches: state.isFetchingSuggestedSearches,
entityByEmail: action.data.entity,
isFetchingEntityByEmail: false,
};
case constants.entity.RECEIVE_ENTITY_FOR_SALESFORCE:
return Object.assign({}, state, {
entityFromSalesForce: action.data.entity,
isFetchingEntityFromSalesForce: false,
});
default :
return state;
}
};