kea-socket.io
Version:
Socket.io binding for Kea store
92 lines (74 loc) • 3.48 kB
JavaScript
;
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 });
});
});
};