import { getSetting, Utils } from 'meteor/vulcan:core'; import { addPageFunction, addInitFunction, addIdentifyFunction, addTrackFunction, } from 'meteor/vulcan:events'; /* Track Page */ function segmentTrackPage(route) { const { name, path } = route; const properties = { url: Utils.getSiteUrl().slice(0, -1) + path, path, }; window.analytics.page(null, name, properties); return {}; } addPageFunction(segmentTrackPage); /* Identify User */ function segmentIdentify(currentUser) { window.analytics.identify(currentUser._id, { email: currentUser.email, pageUrl: currentUser.pageUrl, }); } addIdentifyFunction(segmentIdentify); /* Track Event */ function segmentTrack(eventName, eventProperties) { window.analytics.track(eventName, eventProperties); } addTrackFunction(segmentTrack); /* Init Snippet */ function segmentInit() { !(function() { var analytics = (window.analytics = window.analytics || []); if (!analytics.initialize) if (analytics.invoked) // eslint-disable-next-line no-console window.console && // eslint-disable-next-line no-console console.error && // eslint-disable-next-line no-console console.error('Segment snippet included twice.'); else { analytics.invoked = !0; analytics.methods = [ 'trackSubmit', 'trackClick', 'trackLink', 'trackForm', 'pageview', 'identify', 'reset', 'group', 'track', 'ready', 'alias', 'debug', 'page', 'once', 'off', 'on', ]; analytics.factory = function(t) { return function() { var e = Array.prototype.slice.call(arguments); e.unshift(t); analytics.push(e); return analytics; }; }; for (var t = 0; t < analytics.methods.length; t++) { var e = analytics.methods[t]; analytics[e] = analytics.factory(e); } analytics.load = function(t) { var e = document.createElement('script'); e.type = 'text/javascript'; e.async = !0; e.src = ('https:' === document.location.protocol ? 'https://' : 'http://') + 'cdn.segment.com/analytics.js/v1/' + t + '/analytics.min.js'; var n = document.getElementsByTagName('script')[0]; n.parentNode.insertBefore(e, n); }; analytics.SNIPPET_VERSION = '4.0.0'; analytics.load(getSetting('segment.clientKey')); } })(); } addInitFunction(segmentInit);