redux-saga-watch-actions
Version:
Easily create watchers to map actions to sagas
36 lines (25 loc) • 1.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.watchActions = exports.createWatcher = exports.watchNextAction = exports.combineSagas = void 0;
var _effects = require("redux-saga/effects");
const combineSagas = (...sagas) => function* (...args) {
yield (0, _effects.all)(sagas.map(saga => (0, _effects.fork)(saga, ...args)));
};
exports.combineSagas = combineSagas;
const watchNextAction = (actionType, saga) => function* (...args) {
const action = yield (0, _effects.take)(actionType);
if (typeof saga === 'function') {
yield (0, _effects.fork)(saga, ...args.concat(action));
}
};
exports.watchNextAction = watchNextAction;
const createWatcher = (actionType, saga) => function* (...args) {
yield (0, _effects.takeEvery)(actionType, saga, ...args);
};
exports.createWatcher = createWatcher;
const watchActions = (sagaMap = {}) => function* (...args) {
yield (0, _effects.all)(Object.keys(sagaMap).map(actionType => createWatcher(actionType, sagaMap[actionType])(...args)));
};
exports.watchActions = watchActions;