UNPKG

bdn-pocket

Version:

pocket tools for managing redux and redux-saga

146 lines (118 loc) 3.71 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _merge = require('ramda/src/merge'); var _merge2 = _interopRequireDefault(_merge); var _union = require('ramda/src/union'); var _union2 = _interopRequireDefault(_union); var _omit = require('ramda/src/omit'); var _omit2 = _interopRequireDefault(_omit); var _propOr = require('ramda/src/propOr'); var _propOr2 = _interopRequireDefault(_propOr); var _action = require('../action'); var _action2 = _interopRequireDefault(_action); var _def_state = require('./def_state'); var _def_state2 = _interopRequireDefault(_def_state); var _messenger = require('./messenger'); var _messenger2 = _interopRequireDefault(_messenger); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var REQ_MSG_REDUCERS = { request: function request(state) { return (0, _merge2.default)(state, { isFetching: true, ready: false }); }, success: function success(state, _ref) { var payload = _ref.payload; var result = payload.result, replace = payload.replace; var xtra = (0, _omit2.default)(['result', 'entities', 'replace'], payload); var isArray = Array.isArray(state.result) && Array.isArray(result); var mergeResult = !replace && isArray ? (0, _union2.default)(state.result, result) : result; return (0, _merge2.default)(state, { isFetching: false, ready: true, error: false, result: mergeResult, pageCount: (state.pageCount || 0) + 1, xtra: xtra }); }, error: function error(state) { return (0, _merge2.default)(state, { isFetching: false, ready: false, error: true }); }, reset: function reset() { return this.defaultState; }, ready: function ready(state) { return (0, _merge2.default)(state, { isFetching: false, ready: true, error: false }); } }; var MakeReqMessenger = _def_state2.default.defaultState({ isFetching: false, ready: false, error: false, pageCount: 0, result: [] }).props({ Action: _action2.default }).deepProps({ reqReducers: REQ_MSG_REDUCERS, reqActions: {} }).statics({ Messenger: _messenger2.default, mergeReducers: function mergeReducers(reqReducers) { return this.deepProps({ reqReducers: reqReducers }); }, mergeActions: function mergeActions(reqActions) { return this.deepProps({ reqActions: reqActions }); }, add: function add(_ref2) { var key = _ref2.key, action = _ref2.action, reducer = _ref2.reducer; return this.statics({ Messenger: this.Messenger.add({ key: key, action: action, reducer: reducer }) }); }, setup: function setup(name) { var Messenger = this.compose.staticProperties.Messenger; var _compose$deepProperti = this.compose.deepProperties, reqReducers = _compose$deepProperti.reqReducers, reqActions = _compose$deepProperti.reqActions, defaultState = _compose$deepProperti.defaultState; var Action = this.compose.properties.Action; var ReqMessenger = Messenger.defaultState(defaultState); Object.keys(reqReducers).forEach(function (key) { var ActionKey = (0, _propOr2.default)(Action, key, reqActions); ReqMessenger = ReqMessenger.add({ key: key, action: ActionKey.def(name + '/' + key), reducer: reqReducers[key] }); }); return ReqMessenger; } }).init(function (_ref3, _ref4) { var name = _ref3.name, schema = _ref3.schema; var stamp = _ref4.stamp; var msgr = stamp.setup(name).create(); msgr.schema = schema; return msgr; }); exports.default = MakeReqMessenger;