Skip to content

Commit

Permalink
feat: remove segment and use mixpanel directly (#72)
Browse files Browse the repository at this point in the history
  • Loading branch information
Chethan-Fyle authored Aug 30, 2024
1 parent 1ecb8c1 commit c839591
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 25 deletions.
1 change: 1 addition & 0 deletions run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ do
sed -i $SED_EXTRA_ARGS "s?{{SENTRY_ENV}}?${SENTRY_ENV}?g" $f;
sed -i $SED_EXTRA_ARGS "s?{{CLARITY_PROJECT_ID}}?${CLARITY_PROJECT_ID}?g" $f;
sed -i $SED_EXTRA_ARGS "s?{{SEGMENT_ID}}?${SEGMENT_ID}?g" $f;
sed -i $SED_EXTRA_ARGS "s?{{MIXPANEL_PROJECT_TOKEN}}?${MIXPANEL_PROJECT_TOKEN}?g" $f;
done

nginx -g "daemon off;"
7 changes: 5 additions & 2 deletions src/app/core/services/integration/tracking.service.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,12 @@ describe('TrackingService', () => {
beforeEach(() => {
TestBed.configureTestingModule({});
service = TestBed.inject(TrackingService);
(window as any).analytics = {
(window as any).mixpanel = {
track: () => undefined,
identify: () => undefined
identify: () => undefined,
people: {
set: () => undefined
}
};
});

Expand Down
48 changes: 31 additions & 17 deletions src/app/core/services/integration/tracking.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ export class TrackingService {
}

get tracking() {
return (window as any).analytics;
return (window as any).mixpanel;
}

eventTrack(action: string, properties: any = {}): void {
Expand All @@ -45,31 +45,45 @@ export class TrackingService {
...flattenedObject,
Asset: 'Partner Dashboard Web'
};
if (this.tracking) {
this.tracking.track(action, properties);
try {
if (this.tracking) {
this.tracking.track(action, properties);
}
} catch (e) {
console.error('Tracking error:', e);
}
}

onSignIn(email: string | undefined, partnerOrgId: number, partnerOrgName: string, orgId: string): void {
if (this.tracking) {
this.tracking.identify(email, {
partnerOrgId,
partnerOrgName,
orgId
});
this.identityEmail = email;
try {
if (this.tracking) {
this.tracking.identify(email);
this.tracking.people.set({
partnerOrgId,
partnerOrgName,
orgId
});
this.identityEmail = email;
}
} catch (e) {
console.error('Tracking error:', e);
}
this.eventTrack('Sign In');
}

onSignUp(email: string | undefined, partnerOrgId: number, partnerOrgName: string, orgId: string): void {
if (this.tracking) {
this.tracking.identify(email, {
partnerOrgId,
partnerOrgName,
orgId
});
this.identityEmail = email;
try {
if (this.tracking) {
this.tracking.identify(email);
this.tracking.people.set({
partnerOrgId,
partnerOrgName,
orgId
});
this.identityEmail = email;
}
} catch (e) {
console.error('Tracking error:', e);
}
this.eventTrack('Sign Up');
}
Expand Down
19 changes: 13 additions & 6 deletions src/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,22 @@
}
</script>

<!-- segment.io -->
<!-- Mixpanel -->
<script type="text/javascript">
if (window.location.hostname !== "localhost") {
const segmentId = '{{SEGMENT_ID}}';
try {
const MIXPANEL_PROJECT_TOKEN = '{{MIXPANEL_PROJECT_TOKEN}}';

!function(){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","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware"];analytics.factory=function(e){return function(){var t=Array.prototype.slice.call(arguments);t.unshift(e);analytics.push(t);return analytics}};for(var e=0;e<analytics.methods.length;e++){var key=analytics.methods[e];analytics[key]=analytics.factory(key)}analytics.load=function(key,e){var t=document.createElement("script");t.type="text/javascript";t.async=!0;t.src="https://cdn.segment.com/analytics.js/v1/" + key + "/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n);analytics._loadOptions=e};analytics._writeKey=segmentId;;analytics.SNIPPET_VERSION="4.15.3";
analytics.load(segmentId);
analytics.page();
}}();
(function (f, b) { if (!b.__SV) { var e, g, i, h; window.mixpanel = b; b._i = []; b.init = function (e, f, c) { function g(a, d) { var b = d.split("."); 2 == b.length && ((a = a[b[0]]), (d = b[1])); a[d] = function () { a.push([d].concat(Array.prototype.slice.call(arguments, 0))); }; } var a = b; "undefined" !== typeof c ? (a = b[c] = []) : (c = "mixpanel"); a.people = a.people || []; a.toString = function (a) { var d = "mixpanel"; "mixpanel" !== c && (d += "." + c); a || (d += " (stub)"); return d; }; a.people.toString = function () { return a.toString(1) + ".people (stub)"; }; i = "disable time_event track track_pageview track_links track_forms track_with_groups add_group set_group remove_group register register_once alias unregister identify name_tag set_config reset opt_in_tracking opt_out_tracking has_opted_in_tracking has_opted_out_tracking clear_opt_in_out_tracking start_batch_senders people.set people.set_once people.unset people.increment people.append people.union people.track_charge people.clear_charges people.delete_user people.remove".split( " "); for (h = 0; h < i.length; h++) g(a, i[h]); var j = "set set_once union unset remove delete".split(" "); a.get_group = function () { function b(c) { d[c] = function () { call2_args = arguments; call2 = [c].concat(Array.prototype.slice.call(call2_args, 0)); a.push([e, call2]); }; } for ( var d = {}, e = ["get_group"].concat( Array.prototype.slice.call(arguments, 0)), c = 0; c < j.length; c++) b(j[c]); return d; }; b._i.push([e, f, c]); }; b.__SV = 1.2; e = f.createElement("script"); e.type = "text/javascript"; e.async = !0; e.src = "undefined" !== typeof MIXPANEL_CUSTOM_LIB_URL ? MIXPANEL_CUSTOM_LIB_URL : "file:" === f.location.protocol && "//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js".match(/^\/\//) ? "https://cdn.mxpnl.com/libs/mixpanel-2-latest.min.js" : "//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js"; g = f.getElementsByTagName("script")[0]; g.parentNode.insertBefore(e, g); } })(document, window.mixpanel || []);

mixpanel.init(MIXPANEL_PROJECT_TOKEN, {
debug: false,
track_pageview: true,
persistence: 'localStorage'
});
} catch(e) {
console.error('Tracking error:', e);
}
}
</script>
</head>
Expand Down

0 comments on commit c839591

Please sign in to comment.