ruddy
Version:
Modularized state-management tools for modern front-end applications. Manage dispatched messages in a clean and predictable way for either small or large scale projects
31 lines (24 loc) • 853 B
JavaScript
;
exports.__esModule = true;
exports.resultHandler = undefined;
var _curry = require('ramda/src/curry');
var _curry2 = _interopRequireDefault(_curry);
var _is = require('../util/is');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var resultHandler = exports.resultHandler = (0, _curry2.default)(function (dispatch, action, result) {
if ((0, _is.isAction)(result) && action.type !== result.type) {
dispatch(result);
}
});
exports.default = (0, _curry2.default)(function (logger, effects, dispatch, action) {
var handleResult = resultHandler(dispatch, action);
effects.forEach(function (effect) {
var result = effect(action);
if ((0, _is.isPromise)(result)) {
result.then(handleResult);
} else {
handleResult(result);
}
});
return action;
});