@stackend/api
Version:
JS bindings to api.stackend.com
64 lines • 2.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getExistingHandlerKey = exports.getKey = exports.unregisterExtraObjectHandler = exports.registerExtraObjectHandler = exports.applyExtraObjectHandlers = void 0;
var EXTRA_OBJECT_HANDLERS = {};
/**
* Apply all registered handlers for non IdAware objects
* @param extraObjects
*/
function applyExtraObjectHandlers(extraObjects) {
return function (dispatch) {
var handlerObjects = {};
// Get the objects
Object.keys(extraObjects).forEach(function (key) {
var o = extraObjects[key];
Object.keys(o).forEach(function (cc) {
var handlerKey = getExistingHandlerKey(key, cc);
if (handlerKey) {
handlerObjects[handlerKey] = o[cc];
}
});
});
// Apply the handlers
Object.keys(handlerObjects).forEach(function (handlerKey) {
var handler = EXTRA_OBJECT_HANDLERS[handlerKey];
if (handler) {
var objects = handlerObjects[handlerKey];
handler.onExtraObjectsReceived(objects, dispatch);
}
});
};
}
exports.applyExtraObjectHandlers = applyExtraObjectHandlers;
/**
* Add an extra object handler
* @param handler
*/
function registerExtraObjectHandler(handler) {
var key = getKey(handler);
EXTRA_OBJECT_HANDLERS[key] = handler;
}
exports.registerExtraObjectHandler = registerExtraObjectHandler;
/**
* Remove an extra object handler
* @param handler
*/
function unregisterExtraObjectHandler(handler) {
var key = getKey(handler);
delete EXTRA_OBJECT_HANDLERS[key];
}
exports.unregisterExtraObjectHandler = unregisterExtraObjectHandler;
function getKey(handler) {
return handler.key + ':' + (handler.context ? handler.context : '*');
}
exports.getKey = getKey;
function getExistingHandlerKey(key, context) {
var k = key + ':' + context;
if (EXTRA_OBJECT_HANDLERS[k]) {
return k;
}
k = key + ':*';
return EXTRA_OBJECT_HANDLERS[k] ? k : null;
}
exports.getExistingHandlerKey = getExistingHandlerKey;
//# sourceMappingURL=extraObjectActions.js.map