UNPKG

redux-boost

Version:
126 lines (99 loc) 5.75 kB
import _regeneratorRuntime from 'babel-runtime/regenerator'; import _toConsumableArray from 'babel-runtime/helpers/toConsumableArray'; import _asyncToGenerator from 'babel-runtime/helpers/asyncToGenerator'; var _this = this; import { requestActions } from '../requests/actions'; import { noop, identity } from '../utils'; function applyMethodToExecutor(executor, payload, method) { return executor.get ? executor[method.toLowerCase()] : executor; } var defaultConfig = { method: 'get', serialize: identity, serializeError: identity, executor: global.fetch, prepareExecutor: applyMethodToExecutor, onError: identity, onSuccess: identity, saveRequestResult: true, logError: true /* * config: { * name, * payload, * method: 'get' * serialize: identity, * executor: global.fetch, * prepareExecutor: fn, * onSuccess: noop, * onError: noop, * } */ };export var createRequestMiddleware = function createRequestMiddleware(customConfig) { return function (_ref) { var dispatch = _ref.dispatch; // Apply default values to the custom config var config = Object.assign(defaultConfig, customConfig); return function (next) { return function () { var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(action) { var _action$payload, name, payload, _action$payload$metho, method, _action$payload$seria, serialize, _action$payload$seria2, serializeError, _action$payload$execu, executor, _action$payload$prepa, prepareExecutor, _action$payload$saveR, saveRequestResult, _action$payload$onErr, onError, _action$payload$onSuc, onSuccess, _action$meta, _action$meta$resolve, resolve, _action$meta$reject, reject, args, fetch, response, data, serialized, error; return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: if (!(action.type !== requestActions.fetchStart.type)) { _context.next = 2; break; } return _context.abrupt('return', next(action)); case 2: next(action); _action$payload = action.payload; _action$payload = _action$payload === undefined ? {} : _action$payload; name = _action$payload.name, payload = _action$payload.payload, _action$payload$metho = _action$payload.method, method = _action$payload$metho === undefined ? config.method : _action$payload$metho, _action$payload$seria = _action$payload.serialize, serialize = _action$payload$seria === undefined ? config.serialize : _action$payload$seria, _action$payload$seria2 = _action$payload.serializeError, serializeError = _action$payload$seria2 === undefined ? config.serializeError : _action$payload$seria2, _action$payload$execu = _action$payload.executor, executor = _action$payload$execu === undefined ? config.executor : _action$payload$execu, _action$payload$prepa = _action$payload.prepareExecutor, prepareExecutor = _action$payload$prepa === undefined ? config.prepareExecutor : _action$payload$prepa, _action$payload$saveR = _action$payload.saveRequestResult, saveRequestResult = _action$payload$saveR === undefined ? config.saveRequestResult : _action$payload$saveR, _action$payload$onErr = _action$payload.onError, onError = _action$payload$onErr === undefined ? config.onError : _action$payload$onErr, _action$payload$onSuc = _action$payload.onSuccess, onSuccess = _action$payload$onSuc === undefined ? config.onSuccess : _action$payload$onSuc, _action$meta = action.meta; _action$meta = _action$meta === undefined ? {} : _action$meta; _action$meta$resolve = _action$meta.resolve, resolve = _action$meta$resolve === undefined ? noop : _action$meta$resolve, _action$meta$reject = _action$meta.reject, reject = _action$meta$reject === undefined ? noop : _action$meta$reject; args = Array.isArray(payload) ? payload : [payload]; fetch = prepareExecutor(executor, action.payload, method); _context.prev = 10; _context.next = 13; return fetch.apply(undefined, _toConsumableArray(args)); case 13: response = _context.sent; data = response.data || response; serialized = serialize(data); resolve(serialized); dispatch(requestActions.fetchSuccess({ name: name, result: serialized, saveRequestResult: saveRequestResult })); onSuccess({ name: name, result: serialized }); return _context.abrupt('return', serialized); case 22: _context.prev = 22; _context.t0 = _context['catch'](10); error = serializeError(_context.t0); reject(error); dispatch(requestActions.fetchFail({ name: name, error: error })); onError({ name: name, error: error }); if (config.logError) { // eslint-disable-next-line no-console console.error(error); } return _context.abrupt('return', error); case 30: case 'end': return _context.stop(); } } }, _callee, _this, [[10, 22]]); })); return function (_x) { return _ref2.apply(this, arguments); }; }(); }; }; };