diff --git a/web/client/reducers/__tests__/widgets-test.js b/web/client/reducers/__tests__/widgets-test.js index ec38fe36c8..7bd6ad7e8c 100644 --- a/web/client/reducers/__tests__/widgets-test.js +++ b/web/client/reducers/__tests__/widgets-test.js @@ -176,6 +176,10 @@ describe('Test the widgets reducer', () => { const state = widgets(undefined, configureMap({widgetsConfig: {widgets: [{id: "1"}]}})); expect(state.containers[DEFAULT_TARGET].widgets.length).toBe(1); }); + it('configureMap with no widget', () => { + const state = widgets(undefined, configureMap({})); + expect(state.containers[DEFAULT_TARGET].widgets).toBeFalsy(); + }); it('changeLayout', () => { const L = {lg: []}; const AL = {md: []}; diff --git a/web/client/reducers/widgets.js b/web/client/reducers/widgets.js index 10f078706f..29adcae28e 100644 --- a/web/client/reducers/widgets.js +++ b/web/client/reducers/widgets.js @@ -169,10 +169,12 @@ function widgetsReducer(state = emptyState, action) { ...data }, state); case MAP_CONFIG_LOADED: - const { widgetsConfig } = (action.config || {}); - const updatedWidgetsConfig = convertToCompatibleWidgets(widgetsConfig); + let { widgetsConfig } = (action.config || {}); + if (widgetsConfig) { + widgetsConfig = convertToCompatibleWidgets(widgetsConfig); + } return set(`containers[${DEFAULT_TARGET}]`, { - ...updatedWidgetsConfig + ...widgetsConfig }, state); case CHANGE_LAYOUT: { return set(`containers[${action.target}].layout`, action.layout)(set(`containers[${action.target}].layouts`, action.allLayouts, state));