@atlaskit/analytics-listeners
Version:
Fabric analytics listeners to be used by the products
63 lines (62 loc) • 2.23 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.sendEvent = void 0;
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _excluded = ["eventType"];
var isPromise = function isPromise(c) {
return typeof c.then === 'function';
};
var sendEvent = exports.sendEvent = function sendEvent(logger, client) {
return function (event) {
if (client) {
var eventType = event.eventType,
gasEvent = (0, _objectWithoutProperties2.default)(event, _excluded);
var withClient = function withClient(cb) {
if (isPromise(client)) {
client.then(cb).catch(function (e) {
return logger.warn('There was an error sending the event', e);
});
} else {
try {
cb(client);
} catch (e) {
logger.warn('There was an error sending the event', e);
}
}
};
switch (event.eventType) {
case 'ui':
logger.debug('Sending UI Event via analytics client', gasEvent);
withClient(function (client) {
return client.sendUIEvent(gasEvent);
});
break;
case 'operational':
logger.debug('Sending Operational Event via analytics client', gasEvent);
withClient(function (client) {
return client.sendOperationalEvent(gasEvent);
});
break;
case 'track':
logger.debug('Sending Track Event via analytics client', gasEvent);
withClient(function (client) {
return client.sendTrackEvent(gasEvent);
});
break;
case 'screen':
logger.debug('Sending Screen Event via analytics client', gasEvent);
withClient(function (client) {
return client.sendScreenEvent(gasEvent);
});
break;
default:
logger.error("cannot map eventType ".concat(event.eventType, " to an analytics-web-client function"));
}
} else {
logger.warn('AnalyticsWebClient instance is not provided');
}
};
};