summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/tracking/dispatch_snowplow_event.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/tracking/dispatch_snowplow_event.js')
-rw-r--r--app/assets/javascripts/tracking/dispatch_snowplow_event.js23
1 files changed, 23 insertions, 0 deletions
diff --git a/app/assets/javascripts/tracking/dispatch_snowplow_event.js b/app/assets/javascripts/tracking/dispatch_snowplow_event.js
new file mode 100644
index 00000000000..bc9d7384ea4
--- /dev/null
+++ b/app/assets/javascripts/tracking/dispatch_snowplow_event.js
@@ -0,0 +1,23 @@
+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, value, extra = {} } = data;
+
+ const standardContext = getStandardContext({ extra });
+ const contexts = [standardContext];
+
+ if (data.context) {
+ contexts.push(data.context);
+ }
+
+ return window.snowplow('trackStructEvent', category, action, label, property, value, contexts);
+}