UNPKG

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.

145 lines (128 loc) 5.33 kB
import constants from '../constants'; const initialState = { entities: {}, selectedEntity: void 0, isFetchingEntity: true, genericLatestEntities: {}, isFetchingGenericLatest: {}, currentSuggestedSearches: {}, currentSuggestedSearchesPageNumber: {}, isFetchingSuggestedSearches: {}, entityByEmail: {}, isFetchingEntityByEmail: true, entityFromSalesForce: void 0, isFetchingEntityFromSalesForce: true, entityEmailNotFound: true, entitiesPerTimeStamp: {}, invalidSalesForceId: false, schema: void 0, isFetchingSchema: true, }; export default function update(state = initialState, action = {}) { switch (action.type) { case constants.entity.REQUEST_ENTITY_SCHEMA: return Object.assign({}, state, { isFetchingSchema: true, }) case constants.entity.RECEIVE_ENTITY_SCHEMA: return Object.assign({}, state, { schema: action.data.schema, isFetchingSchema: false, }); 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: let suggestedSearches; let suggestedPageNumberResult; if (state.currentSuggestedSearches[action.data.index]) { var suggestedExisting = {}; suggestedExisting[action.data.index] = [...state.currentSuggestedSearches[action.data.index], ...action.data.entities]; var suggestedPageNumberExisting = {}; suggestedPageNumberExisting[action.data.index] = action.data.pageNumber; suggestedSearches = Object.assign(state.currentSuggestedSearches, suggestedExisting); suggestedPageNumberResult = Object.assign(state.currentSuggestedSearchesPageNumber, suggestedPageNumberExisting); } else { var suggested = {}; suggested[action.data.index] = action.data.entities; var suggestedPageNumber = {}; suggestedPageNumber[action.data.index] = action.data.pageNumber || 1; suggestedSearches = Object.assign(state.currentSuggestedSearches, suggested); suggestedPageNumberResult = Object.assign(state.currentSuggestedSearchesPageNumber, suggestedPageNumber); } return Object.assign({}, state, { currentSuggestedSearches: Object.assign({}, suggestedSearches), currentSuggestedSearchesPageNumber: Object.assign({}, suggestedPageNumberResult), }); 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; } };