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.

99 lines (91 loc) 3.34 kB
import constants from '../constants'; import iso from '../../iso'; const initialState = { insights: [], isFetchingInsights: false, searches: [], isFetchingSearches: false, showNotification: false, }; export default function update(state = initialState, action = {}) { switch (action.type) { case constants.insights.RESET_NOTIFICATION_FOR_SEARCH: return Object.assign({}, { insights: state.insights, isFetchingInsights: state.isFetchingInsights, searches: state.searches, isFetchingSearches: state.isFetchingSearches, showNotification: false, }); case constants.insights.REQUEST_ALL_INSIGHTS: return Object.assign({}, { insights: state.insights, isFetchingInsights: true, searches: state.searches, isFetchingSearches: state.isFetchingSearches, showNotification: state.showNotification, }); case constants.insights.RECEIVE_ALL_INSIGHTS: return Object.assign({}, { insights: action.data.insights, isFetchingInsights: false, searches: state.searches, isFetchingSearches: state.isFetchingSearches, showNotification: state.showNotification, }); case constants.insights.RECEIVE_ALL_SEARCHES: return Object.assign({}, { insights: state.insights, isFetchingInsights: state.isFetchingInsights, searches: action.data.searches, isFetchingSearches: false, showNotification: state.showNotification, }); case constants.insights.REQUEST_ALL_SEARCHES: return Object.assign({}, { insights: state.insights, isFetchingInsights: state.isFetchingInsights, searches: state.searches, isFetchingSearches: true, showNotification: state.showNotification, }); case constants.insights.RECEIVE_CLEAR_COUNT: let concernedInsight = iso.collection.find(state.insights, (insight) => { return action.data.id === insight.Entity.EntityId; }); concernedInsight.Count = 0; return Object.assign({}, { insights: [...state.insights], isFetchingInsights: state.isFetchingInsights, searches: state.searches, isFetchingSearches: state.isFetchingSearches, }); case constants.insights.RECEIVE_SUBSCRIBE_SEARCH: let newSaveSearch = { Query: action.data.q, Count: 0, Name: iso.string.hasStartAsLastCharacter(action.data.q) ? iso.string.removeLastCharacter(action.data.q) : action.data.q, }; return Object.assign({}, { insights: state.insights, isFetchingInsights: state.isFetchingInsights, searches: [newSaveSearch, ...state.searches], isFetchingSearches: state.isFetchingSearches, showNotification: true, }); case constants.insights.RECEIVE_UNSUBSCRIBE_SEARCH: let q = action.data.q; let filteredSearches = iso.collection.filter(state.searches || [], (s) => { return s.Query !== q; }); return Object.assign({}, { insights: [], isFetchingInsights: state.isFetchingInsights, searches: [...filteredSearches], isFetchingSearches: state.isFetchingSearches, showNotification: state.showNotification, }); default : return state; } };