UNPKG

cluedin-widget

Version:

This is the project for creating and managing widgets in CluedIn.

90 lines (79 loc) 3.88 kB
const constants = require( '../constants' ); const initialState = { entities: {}, selectedEntity: void 0, isFetchingEntity: true, genericLatestEntities: {}, isFetchingGenericLatest: {}, currentSuggestedSearches: {}, isFetchingSuggestedSearches: {} }; module.exports = 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: {} } ); 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 } ); 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 } ); 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 } ); 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 }; default : return state; } };