redux-keen
Version:
Redux middleware for sending analytics to Keen.
44 lines (34 loc) • 1.33 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
exports['default'] = keenAnalytics;
function keenAnalytics(keenClient, getGlobals) {
if (!keenClient || !keenClient.addEvent) {
throw new TypeError('You must provide a keen-js client instance.');
}
var globals = {};
return function (store) {
return function (next) {
return function (action) {
if (!action.meta || !action.meta.analytics || !action.meta.analytics.collection) {
return next(action);
}
try {
if (typeof getGlobals === 'function') {
globals = getGlobals(store.getState());
}
var _action$meta$analytics = action.meta.analytics;
var collection = _action$meta$analytics.collection;
var _event = _action$meta$analytics.event;
keenClient.addEvent(collection, _extends({}, globals, _event));
} catch (error) {
console.error(error);
}
return next(action);
};
};
};
}
module.exports = exports['default'];