diff options
Diffstat (limited to 'app/assets/javascripts/tracking/dispatch_snowplow_event.js')
-rw-r--r-- | app/assets/javascripts/tracking/dispatch_snowplow_event.js | 23 |
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); +} |