UNPKG

redux-saga-thunk

Version:

Dispatching an action handled by redux-saga returns promise

44 lines (35 loc) 1.3 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _utils = require('./utils'); var middleware = function middleware() { var responses = {}; return function (next) { return function (action) { var error = action.error, payload = action.payload; if ((0, _utils.isThunkAction)(action) && !(0, _utils.isCleanAction)(action)) { if (!(0, _utils.hasKey)(action)) { var thunk = (0, _utils.generateThunk)(action); return new Promise(function (resolve, reject) { responses[thunk.key] = function (err, response) { return err ? reject(response) : resolve(response); }; next((0, _utils.createThunkAction)(action, thunk)); }); } var _getThunkMeta = (0, _utils.getThunkMeta)(action), key = _getThunkMeta.key; if (!responses[key]) { throw new Error('[redux-saga-thunk] ' + (0, _utils.getThunkName)(action) + ' should be dispatched before ' + action.type); } responses[key](error, payload); delete responses[key]; return next((0, _utils.createThunkAction)(action, (0, _utils.generateThunk)(action))); } return next(action); }; }; }; exports.default = middleware;