@e-group/redux-modules
Version:
eGroup team react-redux modules that share across projects.
97 lines (72 loc) • 3.52 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.entities = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _toolkit = require("@reduxjs/toolkit");
var _immer = _interopRequireDefault(require("immer"));
var _warning = _interopRequireDefault(require("warning"));
var _lodash = _interopRequireDefault(require("lodash.assign"));
var _lodash2 = _interopRequireDefault(require("lodash.mergewith"));
var _getIn = _interopRequireDefault(require("@e-group/utils/getIn"));
var _setIn = _interopRequireDefault(require("@e-group/utils/setIn"));
var _types = require("./types");
var _merger = _interopRequireDefault(require("./merger"));
var _utils = require("../utils");
const initialState = {};
/**
* Reducer
*/
const entities = (0, _toolkit.createReducer)(initialState, {
[_types.SET_ENTITIES]: (0, _immer.default)((draft, action) => {
if (!action.payload) return;
if (action.meta) {
const _supportedTypes = (0, _utils.supportedTypes)(action.meta.path, ['array']),
_supportedTypes2 = (0, _slicedToArray2.default)(_supportedTypes, 2),
isSupported = _supportedTypes2[0],
type = _supportedTypes2[1];
if (!isSupported) {
(0, _warning.default)(false, "[@e-group/redux-modules] ERROR: Action \"setEntities\" is not supported \"".concat(type, "\" payload."));
return;
}
(0, _setIn.default)(draft, action.meta.path, (0, _lodash2.default)((0, _getIn.default)(draft, action.meta.path), action.payload, _merger.default));
} else {
const _supportedTypes3 = (0, _utils.supportedTypes)(action.payload, ['object']),
_supportedTypes4 = (0, _slicedToArray2.default)(_supportedTypes3, 2),
isSupported = _supportedTypes4[0],
type = _supportedTypes4[1];
if (!isSupported) {
(0, _warning.default)(false, "[@e-group/redux-modules] ERROR: Action \"setEntities\" is not supported \"".concat(type, "\" payload."));
return;
}
(0, _lodash2.default)(draft, action.payload, _merger.default);
}
}),
[_types.SET_ENTITIES_SHALLOW]: (0, _immer.default)((draft, action) => {
if (!action.payload) return;
if (action.meta) {
const _supportedTypes5 = (0, _utils.supportedTypes)(action.meta.path, ['array']),
_supportedTypes6 = (0, _slicedToArray2.default)(_supportedTypes5, 2),
isSupported = _supportedTypes6[0],
type = _supportedTypes6[1];
if (!isSupported) {
(0, _warning.default)(false, "[@e-group/redux-modules] ERROR: Action \"setEntitiesShallow\" is not supported \"".concat(type, "\" payload."));
return;
}
(0, _setIn.default)(draft, action.meta.path, (0, _lodash.default)((0, _getIn.default)(draft, action.meta.path), action.payload));
} else {
const _supportedTypes7 = (0, _utils.supportedTypes)(action.payload, ['object']),
_supportedTypes8 = (0, _slicedToArray2.default)(_supportedTypes7, 2),
isSupported = _supportedTypes8[0],
type = _supportedTypes8[1];
if (!isSupported) {
(0, _warning.default)(false, "[@e-group/redux-modules] ERROR: Action \"setEntities\" is not supported \"".concat(type, "\" payload."));
return;
}
(0, _lodash.default)(draft, action.payload);
}
})
});
exports.entities = entities;