UNPKG

redux-saga-thunk

Version:

Dispatching an action handled by redux-saga returns promise

83 lines (60 loc) 3.54 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _utils = require('./utils'); var _selectors = require('./selectors'); function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var transformSubstate = function transformSubstate(substate, path, value) { var name = path[0]; var newValue = value; if (path.length === 2) { var id = path[1]; if (!value) { newValue = _extends({}, substate[name]); delete newValue[id]; } else { newValue = _extends({}, substate[name], _defineProperty({}, id, true)); } if (Object.keys(newValue).length === 0) { newValue = false; } } return _extends({}, substate, _defineProperty({}, name, newValue)); }; var omit = function omit(substate, path) { var name = path[0]; if (path.length === 1) { var newState = _extends({}, substate); delete newState[name]; return newState; } if (_typeof(substate[name]) !== 'object') { return substate; } return transformSubstate(substate, path, false); }; var cleanState = function cleanState(state, path) { var _extends4; return _extends({}, state, (_extends4 = {}, _defineProperty(_extends4, _selectors.PENDING, omit(state[_selectors.PENDING], path)), _defineProperty(_extends4, _selectors.REJECTED, omit(state[_selectors.REJECTED], path)), _defineProperty(_extends4, _selectors.FULFILLED, omit(state[_selectors.FULFILLED], path)), _defineProperty(_extends4, _selectors.DONE, omit(state[_selectors.DONE], path)), _extends4)); }; var transformState = function transformState(state, path, pending, rejected, fulfilled, done) { var _extends5; return _extends({}, state, (_extends5 = {}, _defineProperty(_extends5, _selectors.PENDING, transformSubstate(state[_selectors.PENDING], path, pending)), _defineProperty(_extends5, _selectors.REJECTED, transformSubstate(state[_selectors.REJECTED], path, rejected)), _defineProperty(_extends5, _selectors.FULFILLED, transformSubstate(state[_selectors.FULFILLED], path, fulfilled)), _defineProperty(_extends5, _selectors.DONE, transformSubstate(state[_selectors.DONE], path, done)), _extends5)); }; exports.default = function () { var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _selectors.initialState; var action = arguments[1]; if (!(0, _utils.isThunkAction)(action)) return state; var name = (0, _utils.getThunkName)(action); var path = (0, _utils.hasId)(action) ? [name, (0, _utils.getThunkId)(action)] : [name]; if ((0, _utils.isCleanAction)(action)) return cleanState(state, path); if ((0, _utils.isThunkRequestAction)(action)) { return transformState(state, path, true, false, false, false); } else if (action.error) { return transformState(state, path, false, true, false, true); } return transformState(state, path, false, false, true, true); };