@e-group/redux-modules
Version:
eGroup team react-redux modules that share across projects.
65 lines (50 loc) • 1.76 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.entities = void 0;
var _reduxActions = require("redux-actions");
var _immutable = require("@e-group/immutable");
var _merger = _interopRequireDefault(require("./merger"));
var _entities = require("../../entities");
const initialState = (0, _immutable.fromJS)({});
/**
* Reducer
*/
const entities = (0, _reduxActions.handleActions)({
[_entities.SET_ENTITIES]: (state, action) => {
if (action.payload) {
if (action.meta && typeof Array.isArray(action.meta.path)) {
return state.setIn(action.meta.path, state.getIn(action.meta.path, (0, _immutable.Map)()).mergeWith(_merger.default, action.payload));
}
return state.mergeWith(_merger.default, action.payload);
}
return state;
},
[_entities.SET_ENTITIES_SHALLOW]: (state, action) => {
if (action.payload) {
if (action.meta && typeof Array.isArray(action.meta.path)) {
return state.mergeIn(action.meta.path, action.payload);
}
return state.merge(action.payload);
}
return state;
},
[_entities.SET_ENTITIES_ARRAY_CONCAT]: (state, action) => {
if (action.payload) {
if (action.meta && typeof Array.isArray(action.meta.path)) {
return state.setIn(action.meta.path, state.getIn(action.meta.path, (0, _immutable.Map)()).mergeDeep(action.payload));
}
return state.mergeDeep(action.payload);
}
return state;
},
[_entities.DELETE_ENTITIES_IN]: (state, action) => {
if (action.payload) {
return state.deleteIn(action.payload);
}
return state;
}
}, initialState);
exports.entities = entities;