cluedin-widget
Version:
This is the project for creating and managing widgets in CluedIn.
90 lines (79 loc) • 3.88 kB
JavaScript
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;
}
};