diff --git a/__tests__/__snapshots__/index.js.snap b/__tests__/__snapshots__/index.js.snap index 19789173..c33c8e2f 100644 --- a/__tests__/__snapshots__/index.js.snap +++ b/__tests__/__snapshots__/index.js.snap @@ -137,6 +137,7 @@ Object { "addUserTrait": [Function], "deleteUserTrait": [Function], "getAllUserTraits": [Function], + "modifyUserTraitInit": [Function], "updateUserTrait": [Function], }, "smp": Object { @@ -197,14 +198,17 @@ Object { "countReset": [Function], "debug": [Function], "dir": [Function], + "dirxml": [Function], "error": [Function], "group": [Function], "groupCollapsed": [Function], "groupEnd": [Function], "info": [Function], "log": [Function], + "table": [Function], "time": [Function], "timeEnd": [Function], + "timeLog": [Function], "trace": [Function], "warn": [Function], }, diff --git a/src/actions/settings.js b/src/actions/settings.js index 0524a4b9..f0f506f3 100644 --- a/src/actions/settings.js +++ b/src/actions/settings.js @@ -4,6 +4,7 @@ */ import { createActions } from 'redux-actions'; +import _ from 'lodash'; import { getService } from '../services/user-traits'; /** @@ -66,5 +67,6 @@ export default createActions({ ADD_USER_TRAIT: addUserTrait, DELETE_USER_TRAIT: deleteUserTrait, UPDATE_USER_TRAIT: updateUserTrait, + MODIFY_USER_TRAIT_INIT: _.noop, }, }); diff --git a/src/reducers/settings.js b/src/reducers/settings.js index 68564fdc..82dce952 100644 --- a/src/reducers/settings.js +++ b/src/reducers/settings.js @@ -29,6 +29,18 @@ function onGetAllUserTraits(state, { error, payload }) { }; } +/** + * Handles SETTINGS/MODIFY_USER_TRAIT_INIT action. + * @param {Object} state * + * @return {Object} New state. + */ +function onModifyUserTraitInit(state) { + return { + ...state, + traitRequestCount: state.traitRequestCount + 1, + }; +} + /** * Handles SETTINGS/ADD_USER_TRAIT action. * @param {Object} state @@ -39,12 +51,16 @@ function onAddUserTrait(state, { error, payload }) { if (error) { logger.error('Failed to add user trait', payload); fireErrorMessage('Failed to add user trait', ''); - return state; + return { + ...state, + traitRequestCount: state.traitRequestCount - 1, + }; } const newData = payload.result[0]; return { ...state, userTraits: [...state.userTraits, newData], + traitRequestCount: state.traitRequestCount - 1, }; } @@ -58,7 +74,10 @@ function onUpdateUserTrait(state, { error, payload }) { if (error) { logger.error('Failed to update user trait', payload); fireErrorMessage('Failed to update user trait', ''); - return state; + return { + ...state, + traitRequestCount: state.traitRequestCount - 1, + }; } const newData = payload.result[0]; const newUserTraits = state.userTraits.filter(trait => trait.traitId !== payload.traitId); @@ -67,6 +86,7 @@ function onUpdateUserTrait(state, { error, payload }) { return { ...state, userTraits: newUserTraits, + traitRequestCount: state.traitRequestCount - 1, }; } @@ -80,12 +100,16 @@ function onDeleteUserTrait(state, { error, payload }) { if (error) { logger.error('Failed to delete user trait', payload); fireErrorMessage('Failed to delete user trait', ''); - return state; + return { + ...state, + traitRequestCount: state.traitRequestCount - 1, + }; } const newUserTraits = state.userTraits.filter(trait => trait.traitId !== payload.traitId); return { ...state, userTraits: newUserTraits, + traitRequestCount: state.traitRequestCount - 1, }; } @@ -96,11 +120,13 @@ function onDeleteUserTrait(state, { error, payload }) { * @return {Function} userTraits reducer. */ function create(initialState = { + traitRequestCount: 0, userTraits: [], }) { const a = actions.settings; return handleActions({ [a.getAllUserTraits]: onGetAllUserTraits, + [a.modifyUserTraitInit]: onModifyUserTraitInit, [a.addUserTrait]: onAddUserTrait, [a.deleteUserTrait]: onDeleteUserTrait, [a.updateUserTrait]: onUpdateUserTrait,