added segment integration
This commit is contained in:
parent
e3ee07d158
commit
7acfc149ad
59
app/client/src/utils/AnalyticsUtil.tsx
Normal file
59
app/client/src/utils/AnalyticsUtil.tsx
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
|
||||||
|
export type EventName = "PAGE_VIEW" | "ADD_COMPONENT" | "DELETE_COMPONENT" | "RESIZE_COMPONENT"
|
||||||
|
export type Gender = "MALE" | "FEMALE"
|
||||||
|
export interface User {
|
||||||
|
userId: string
|
||||||
|
name: string
|
||||||
|
email: string
|
||||||
|
gender: Gender
|
||||||
|
}
|
||||||
|
|
||||||
|
class AnalyticsUtil {
|
||||||
|
|
||||||
|
static initializeHotjar(id: string, sv: string) {
|
||||||
|
(function init(h: any, o: any, t: any, j: any, a?: any, r?: any) {
|
||||||
|
h.hj =
|
||||||
|
h.hj ||
|
||||||
|
function() {
|
||||||
|
(h.hj.q = h.hj.q || []).push(arguments);
|
||||||
|
};
|
||||||
|
h._hjSettings = { hjid: id, hjsv: sv };
|
||||||
|
a = o.getElementsByTagName('head')[0];
|
||||||
|
r = o.createElement('script');
|
||||||
|
r.async = 1;
|
||||||
|
r.src = t + h._hjSettings.hjid + j + h._hjSettings.hjsv;
|
||||||
|
a.appendChild(r);
|
||||||
|
})(window, document, '//static.hotjar.com/c/hotjar-', '.js?sv=');
|
||||||
|
};
|
||||||
|
|
||||||
|
static initializeSegment() {
|
||||||
|
(function init(window: any){
|
||||||
|
var analytics=window.analytics=window.analytics||[];
|
||||||
|
if(!analytics.initialize) {
|
||||||
|
if(analytics.invoked) {
|
||||||
|
window.console&&console.error&&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: any){return function(){var e=Array.prototype.slice.call(arguments);e.unshift(t);analytics.push(e);return analytics}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
for(var t: any=0;t<analytics.methods.length;t++){var e=analytics.methods[t];analytics[e]=analytics.factory(e)}analytics.load=function(t: any,e: any){var n=document.createElement("script");n.type="text/javascript";n.async=!0;n.src="https://cdn.segment.com/analytics.js/v1/"+t+"/analytics.min.js";var a: any=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(n,a);analytics._loadOptions=e};analytics.SNIPPET_VERSION="4.1.0";
|
||||||
|
analytics.load("O7rsLdWq7fhJI9rYsj1eatGAjuULTmfP");
|
||||||
|
analytics.page();
|
||||||
|
}
|
||||||
|
})(window)
|
||||||
|
}
|
||||||
|
|
||||||
|
static logEvent(eventName: EventName, eventData: any) {
|
||||||
|
const windowDoc: any = window
|
||||||
|
windowDoc.analytics.track(eventName, eventData);
|
||||||
|
}
|
||||||
|
|
||||||
|
static identifyUser(userId: string, userData: User) {
|
||||||
|
const windowDoc: any = window
|
||||||
|
windowDoc.analytics.identify(userId, userData);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export default AnalyticsUtil
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import { ReduxAction } from "../constants/ActionConstants"
|
import { ReduxAction } from "../constants/ActionConstants"
|
||||||
import { SENTRY_PROD_CONFIG, SENTRY_STAGE_CONFIG, HOTJAR_PROD_HJID, HOTJAR_PROD_HJSV } from "../constants/ThirdPartyConstants";
|
import { SENTRY_PROD_CONFIG, SENTRY_STAGE_CONFIG, HOTJAR_PROD_HJID, HOTJAR_PROD_HJSV } from "../constants/ThirdPartyConstants";
|
||||||
import * as Sentry from '@sentry/browser';
|
import * as Sentry from '@sentry/browser';
|
||||||
import HotjarUtil from "./HotjarUtil"
|
import AnalyticsUtil from "./AnalyticsUtil"
|
||||||
|
|
||||||
export const createReducer = (
|
export const createReducer = (
|
||||||
initialState: any,
|
initialState: any,
|
||||||
|
|
@ -20,13 +20,13 @@ export const appInitializer = () => {
|
||||||
switch (process.env.REACT_APP_ENVIRONMENT) {
|
switch (process.env.REACT_APP_ENVIRONMENT) {
|
||||||
case "PRODUCTION":
|
case "PRODUCTION":
|
||||||
Sentry.init(SENTRY_PROD_CONFIG);
|
Sentry.init(SENTRY_PROD_CONFIG);
|
||||||
HotjarUtil.initializeHotjar(HOTJAR_PROD_HJID, HOTJAR_PROD_HJSV);
|
AnalyticsUtil.initializeHotjar(HOTJAR_PROD_HJID, HOTJAR_PROD_HJSV);
|
||||||
|
AnalyticsUtil.initializeSegment();
|
||||||
break;
|
break;
|
||||||
case "STAGING":
|
case "STAGING":
|
||||||
Sentry.init(SENTRY_STAGE_CONFIG);
|
Sentry.init(SENTRY_STAGE_CONFIG);
|
||||||
break
|
break
|
||||||
case "LOCAL":
|
case "LOCAL":
|
||||||
HotjarUtil.initializeHotjar(HOTJAR_PROD_HJID, HOTJAR_PROD_HJSV);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
class HotjarUtil {
|
|
||||||
|
|
||||||
static initializeHotjar(id: string, sv: string) {
|
|
||||||
(function init(h: any, o: any, t: any, j: any, a?: any, r?: any) {
|
|
||||||
h.hj =
|
|
||||||
h.hj ||
|
|
||||||
function() {
|
|
||||||
(h.hj.q = h.hj.q || []).push(arguments);
|
|
||||||
};
|
|
||||||
h._hjSettings = { hjid: id, hjsv: sv };
|
|
||||||
a = o.getElementsByTagName('head')[0];
|
|
||||||
r = o.createElement('script');
|
|
||||||
r.async = 1;
|
|
||||||
r.src = t + h._hjSettings.hjid + j + h._hjSettings.hjsv;
|
|
||||||
a.appendChild(r);
|
|
||||||
})(window, document, '//static.hotjar.com/c/hotjar-', '.js?sv=');
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
export default HotjarUtil
|
|
||||||
Loading…
Reference in New Issue
Block a user