redux-boost
Version:
68 lines (46 loc) • 2.06 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.dataReducer = undefined;
var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
var _createReducer;
var _reduxYo = require('redux-yo');
var _utils = require('../utils');
var _actions = require('../requests/actions');
var _actions2 = require('./actions');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var initialState = {};
var entitiesUpdate = function entitiesUpdate(state, entities) {
return Object.entries(entities).reduce(function (acc, _ref) {
var _ref2 = (0, _slicedToArray3.default)(_ref, 2),
key = _ref2[0],
value = _ref2[1];
var operation = state[key] ? '$merge' : '$set';
acc[key] = (0, _defineProperty3.default)({}, operation, value);
return acc;
}, {});
};
var dataReducer = exports.dataReducer = (0, _reduxYo.createReducer)((_createReducer = {}, (0, _defineProperty3.default)(_createReducer, _actions.requestActions.fetchSuccess, function (state, _ref3) {
var entities = _ref3.entities;
if (entities) {
return (0, _utils.update)(state, entitiesUpdate(state, entities));
}
return state;
}), (0, _defineProperty3.default)(_createReducer, _actions2.dataActions.setEntities, function (state, entities) {
return (0, _utils.update)(state, {
entities: entitiesUpdate(state, entities)
});
}), (0, _defineProperty3.default)(_createReducer, _actions2.dataActions.deleteEntities, function (state, entities) {
var updates = Object.entries(entities).reduce(function (acc, _ref4) {
var _ref5 = (0, _slicedToArray3.default)(_ref4, 2),
key = _ref5[0],
ids = _ref5[1];
acc[key] = { $unset: ids };
return acc;
}, {});
return (0, _utils.update)(state, updates);
}), _createReducer), initialState);
;