UNPKG

redux-saga-watch-actions

Version:

Easily create watchers to map actions to sagas

42 lines (36 loc) 1.52 kB
import { all, fork, take, takeEvery } from 'redux-saga/effects'; export const combineSagas = function combineSagas() { for (var _len = arguments.length, sagas = new Array(_len), _key = 0; _key < _len; _key++) { sagas[_key] = arguments[_key]; } return function* () { for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; } yield all(sagas.map(saga => fork(saga, ...args))); }; }; export const watchNextAction = (actionType, saga) => function* () { const action = yield take(actionType); if (typeof saga === 'function') { for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { args[_key3] = arguments[_key3]; } yield fork(saga, ...args.concat(action)); } }; export const createWatcher = (actionType, saga) => function* () { for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { args[_key4] = arguments[_key4]; } yield takeEvery(actionType, saga, ...args); }; export const watchActions = function watchActions() { let sagaMap = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return function* () { for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { args[_key5] = arguments[_key5]; } yield all(Object.keys(sagaMap).map(actionType => createWatcher(actionType, sagaMap[actionType])(...args))); }; };