UNPKG

redux-boost

Version:
52 lines (38 loc) 1.54 kB
import _defineProperty from 'babel-runtime/helpers/defineProperty'; import _slicedToArray from 'babel-runtime/helpers/slicedToArray'; var _createReducer; import { createReducer } from 'redux-yo'; import { update } from '../utils'; import { requestActions } from '../requests/actions'; import { dataActions } from './actions'; var initialState = {}; var entitiesUpdate = function entitiesUpdate(state, entities) { return Object.entries(entities).reduce(function (acc, _ref) { var _ref2 = _slicedToArray(_ref, 2), key = _ref2[0], value = _ref2[1]; var operation = state[key] ? '$merge' : '$set'; acc[key] = _defineProperty({}, operation, value); return acc; }, {}); }; export var dataReducer = createReducer((_createReducer = {}, _defineProperty(_createReducer, requestActions.fetchSuccess, function (state, _ref3) { var entities = _ref3.entities; if (entities) { return update(state, entitiesUpdate(state, entities)); } return state; }), _defineProperty(_createReducer, dataActions.setEntities, function (state, entities) { return update(state, { entities: entitiesUpdate(state, entities) }); }), _defineProperty(_createReducer, dataActions.deleteEntities, function (state, entities) { var updates = Object.entries(entities).reduce(function (acc, _ref4) { var _ref5 = _slicedToArray(_ref4, 2), key = _ref5[0], ids = _ref5[1]; acc[key] = { $unset: ids }; return acc; }, {}); return update(state, updates); }), _createReducer), initialState);