UNPKG

redux-saga-routines

Version:

Routines for redux-saga also useful with redux-form

85 lines (67 loc) 2.91 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.handleRoutinePromiseAction = handleRoutinePromiseAction; exports["default"] = routinePromiseWatcherSaga; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _effects = require("redux-saga/effects"); var _constants = require("./constants"); var _marked = /*#__PURE__*/_regenerator["default"].mark(handleRoutinePromiseAction), _marked2 = /*#__PURE__*/_regenerator["default"].mark(routinePromiseWatcherSaga); var getPayload = function getPayload(data) { return data && data.payload || data; }; function handleRoutinePromiseAction(action) { var payload, _action$meta, routine, noSuccessPayload, _action$meta$defer, resolve, reject, _yield$all, _yield$all2, _yield$all2$, success, failure; return _regenerator["default"].wrap(function handleRoutinePromiseAction$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: payload = action.payload, _action$meta = action.meta, routine = _action$meta.routine, noSuccessPayload = _action$meta.noSuccessPayload, _action$meta$defer = _action$meta.defer, resolve = _action$meta$defer.resolve, reject = _action$meta$defer.reject; _context.next = 3; return (0, _effects.all)([(0, _effects.race)({ success: (0, _effects.take)(routine.SUCCESS), failure: (0, _effects.take)(routine.FAILURE) }), (0, _effects.put)(routine.trigger(payload))]); case 3: _yield$all = _context.sent; _yield$all2 = (0, _slicedToArray2["default"])(_yield$all, 1); _yield$all2$ = _yield$all2[0]; success = _yield$all2$.success; failure = _yield$all2$.failure; if (!success) { _context.next = 13; break; } _context.next = 11; return noSuccessPayload ? (0, _effects.call)(resolve) : (0, _effects.call)(resolve, getPayload(success)); case 11: _context.next = 15; break; case 13: _context.next = 15; return (0, _effects.call)(reject, getPayload(failure)); case 15: case "end": return _context.stop(); } } }, _marked); } function routinePromiseWatcherSaga() { return _regenerator["default"].wrap(function routinePromiseWatcherSaga$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _context2.next = 2; return (0, _effects.takeEvery)(_constants.ROUTINE_PROMISE_ACTION, handleRoutinePromiseAction); case 2: case "end": return _context2.stop(); } } }, _marked2); }