42 lines
919 B
JavaScript
42 lines
919 B
JavaScript
import * as Sentry from '@sentry/browser';
|
|
import getStandardContext from './get_standard_context';
|
|
|
|
export function dispatchSnowplowEvent(
|
|
category = document.body.dataset.page,
|
|
action = 'generic',
|
|
data = {},
|
|
) {
|
|
if (!category) {
|
|
/* eslint-disable-next-line @gitlab/require-i18n-strings */
|
|
throw new Error('Tracking: no category provided for tracking.');
|
|
}
|
|
|
|
const { label, property, extra = {} } = data;
|
|
let { value } = data;
|
|
|
|
const standardContext = getStandardContext({ extra });
|
|
const contexts = [standardContext];
|
|
|
|
if (data.context) {
|
|
contexts.push(data.context);
|
|
}
|
|
|
|
if (value !== undefined) {
|
|
value = Number(value);
|
|
}
|
|
|
|
try {
|
|
window.snowplow('trackStructEvent', {
|
|
category,
|
|
action,
|
|
label,
|
|
property,
|
|
value,
|
|
context: contexts,
|
|
});
|
|
return true;
|
|
} catch (error) {
|
|
Sentry.captureException(error);
|
|
return false;
|
|
}
|
|
}
|