UNPKG

genji-core

Version:

The core lightweight library for genji, based on redux and redux-saga.

76 lines (63 loc) 2.11 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.run = run; exports.unlisten = unlisten; var _getIterator2 = _interopRequireDefault(require("@babel/runtime/core-js/get-iterator")); var _warning = _interopRequireDefault(require("warning")); var _utils = require("./utils"); var _prefixedDispatch = _interopRequireDefault(require("./prefixedDispatch")); function run(subs, model, app, onError) { var funcs = []; var nonFuncs = []; for (var key in subs) { if (Object.prototype.hasOwnProperty.call(subs, key)) { var sub = subs[key]; var unlistener = sub({ dispatch: (0, _prefixedDispatch.default)(app._store.dispatch, model), history: app._history }, onError); if ((0, _utils.isFunction)(unlistener)) { funcs.push(unlistener); } else { nonFuncs.push(key); } } } return { funcs: funcs, nonFuncs: nonFuncs }; } function unlisten(unlisteners, namespace) { if (!unlisteners[namespace]) return; var _unlisteners$namespac = unlisteners[namespace], funcs = _unlisteners$namespac.funcs, nonFuncs = _unlisteners$namespac.nonFuncs; (0, _warning.default)(nonFuncs.length === 0, "[app.unmodel] subscription should return unlistener function, check these subscriptions ".concat(nonFuncs.join(', '))); var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = (0, _getIterator2.default)(funcs), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var unlistener = _step.value; unlistener(); } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } delete unlisteners[namespace]; }