UNPKG

kea-socket.io

Version:
92 lines (74 loc) 3.48 kB
'use strict'; exports.__esModule = true; exports.addSystemObserve = exports.observe = undefined; var _kea = require('kea'); var _utils = require('./utils'); var callActions = function callActions(logic, currentPrefix, storeActionName, payload) { var currentName = currentPrefix ? (0, _utils.getCurrentName)(storeActionName, currentPrefix) : storeActionName; if (Object.keys(logic.actions).includes(currentName)) { /** call action */ var func = logic.actions[currentName]; if (typeof func === 'function') { func({ payload: payload }); } } }; var observe = exports.observe = function observe(_ref) { var type = _ref.type, payload = _ref.payload, socket = _ref.socket; /** error handle */ var _getPluginContext = (0, _kea.getPluginContext)('kea-socket.io'), _getPluginContext$opt = _getPluginContext.options, options = _getPluginContext$opt === undefined ? {} : _getPluginContext$opt; var errorHandler = options.errorHandler, _options$ERROR_EVENTS = options.ERROR_EVENTS, ERROR_EVENTS = _options$ERROR_EVENTS === undefined ? [] : _options$ERROR_EVENTS, _options$SYSTEM_EVENT = options.SYSTEM_EVENTS, SYSTEM_EVENTS = _options$SYSTEM_EVENT === undefined ? [] : _options$SYSTEM_EVENT, mapSocketEventToStore = options.mapSocketEventToStore, _options$prefix = options.prefix, prefix = _options$prefix === undefined ? '' : _options$prefix; if (ERROR_EVENTS.includes(type)) { errorHandler({ error: payload, getKeaContext: _kea.getContext, socket: socket }); } var keaContext = (0, _kea.getContext)(); var _keaContext$mount = keaContext.mount; _keaContext$mount = _keaContext$mount === undefined ? {} : _keaContext$mount; var _keaContext$mount$mou = _keaContext$mount.mounted, mounted = _keaContext$mount$mou === undefined ? {} : _keaContext$mount$mou; /** action type logic */ var namespace = (0, _utils.trimNamespace)(socket.nsp); var storeActionName = type; if (SYSTEM_EVENTS.includes(type)) { storeActionName = 'sys_' + storeActionName; } storeActionName = namespace ? namespace + '_' + storeActionName : storeActionName; storeActionName = prefix ? prefix + storeActionName : storeActionName; storeActionName = mapSocketEventToStore({ name: storeActionName }); /** find action */ Object.keys(mounted).forEach(function (logicKey) { var logic = mounted[logicKey]; if (logic) { var logicPrefix = typeof logic.socketPrefix === 'function' ? logic.socketPrefix({ socket: socket, nsp: namespace }) : logic.socketPrefix; /** make prefix look like array */ var prefixArray = Array.isArray(logicPrefix) ? logicPrefix : [logicPrefix]; prefixArray.forEach(function (item) { return callActions(logic, item, storeActionName, payload); }); } }); }; var addSystemObserve = exports.addSystemObserve = function addSystemObserve(socket) { var _getPluginContext2 = (0, _kea.getPluginContext)('kea-socket.io'), _getPluginContext2$op = _getPluginContext2.options, options = _getPluginContext2$op === undefined ? {} : _getPluginContext2$op; var _options$SYSTEM_EVENT2 = options.SYSTEM_EVENTS, SYSTEM_EVENTS = _options$SYSTEM_EVENT2 === undefined ? [] : _options$SYSTEM_EVENT2; SYSTEM_EVENTS.forEach(function (eventName) { var type = eventName; socket.on(type, function (payload) { observe({ type: type, payload: payload, socket: socket }); }); }); };