UNPKG

redux-boost

Version:
68 lines (46 loc) 2.06 kB
'use strict'; 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);