Skip to content

Commit 4fca4d0

Browse files
committed
feat: add and use ENABLE_MIXPANEL and USE_MIXPANEL_PROXY env variable (#3195)
1 parent d4924a9 commit 4fca4d0

File tree

5 files changed

+41
-14
lines changed

5 files changed

+41
-14
lines changed

hooks/utils/prod-environment.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export const environment = {
1717
LIVE_UPDATE_APP_VERSION: '${process.env.LIVE_UPDATE_APP_VERSION}',
1818
SMARTLOOK_API_KEY: '${process.env.SMARTLOOK_API_KEY}',
1919
MIXPANEL_PROJECT_TOKEN: '${process.env.MIXPANEL_PROJECT_TOKEN}',
20-
MIXPANEL_PROXY_URL: '${process.env.MIXPANEL_PROXY_URL}',
20+
USE_MIXPANEL_PROXY: '${process.env.USE_MIXPANEL_PROXY}',
21+
ENABLE_MIXPANEL: '${process.env.ENABLE_MIXPANEL}'
2122
};
2223
`

src/app/core/services/router-auth.service.spec.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import { apiAuthRes, authResData1 } from '../mock-data/auth-reponse.data';
1515
import { ExpenseAggregationService } from './expense-aggregation.service';
1616
import { SpenderService } from './platform/v1/spender/spender.service';
1717
import { ApproverService } from './platform/v1/approver/approver.service';
18+
import { TrackingService } from './tracking.service';
1819

1920
describe('RouterAuthService', () => {
2021
let routerAuthService: RouterAuthService;
@@ -31,6 +32,7 @@ describe('RouterAuthService', () => {
3132
let expenseAggregationService: jasmine.SpyObj<ExpenseAggregationService>;
3233
let spenderService: jasmine.SpyObj<SpenderService>;
3334
let approverService: jasmine.SpyObj<ApproverService>;
35+
let trackingService: jasmine.SpyObj<TrackingService>;
3436

3537
const access_token =
3638
'eyJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE2Nzk5MDQ0NTQsImlzcyI6IkZ5bGVBcHAiLCJ1c2VyX2lkIjoidXN2S0E0WDhVZ2NyIiwib3JnX3VzZXJfaWQiOiJvdVg4ZHdzYkxDTHYiLCJvcmdfaWQiOiJvck5WdGhUbzJaeW8iLCJyb2xlcyI6IltcIkFETUlOXCIsXCJBUFBST1ZFUlwiLFwiRllMRVJcIixcIkhPUFwiLFwiSE9EXCIsXCJPV05FUlwiXSIsInNjb3BlcyI6IltdIiwiYWxsb3dlZF9DSURScyI6IltdIiwidmVyc2lvbiI6IjMiLCJjbHVzdGVyX2RvbWFpbiI6IlwiaHR0cHM6Ly9zdGFnaW5nLmZ5bGUudGVjaFwiIiwiZXhwIjoxNjc5OTA4MDU0fQ.z3i-MqE3NNyxPEvWFCSr3q58rLXn3LZcIBskW9BLN48';
@@ -59,6 +61,7 @@ describe('RouterAuthService', () => {
5961
const expenseAggregationServiceSpy = jasmine.createSpyObj('ExpenseAggregationService', ['setRoot']);
6062
const spenderServiceSpy = jasmine.createSpyObj('SpenderService', ['setRoot']);
6163
const approverServiceSpy = jasmine.createSpyObj('ApproverService', ['setRoot']);
64+
const trackingServiceSpy = jasmine.createSpyObj('TrackingService', ['setRoot']);
6265

6366
TestBed.configureTestingModule({
6467
providers: [
@@ -115,6 +118,10 @@ describe('RouterAuthService', () => {
115118
provide: ApproverService,
116119
useValue: approverServiceSpy,
117120
},
121+
{
122+
provide: TrackingService,
123+
useValue: trackingServiceSpy,
124+
},
118125
],
119126
});
120127
routerAuthService = TestBed.inject(RouterAuthService);
@@ -135,6 +142,7 @@ describe('RouterAuthService', () => {
135142
expenseAggregationService = TestBed.inject(ExpenseAggregationService) as jasmine.SpyObj<ExpenseAggregationService>;
136143
spenderService = TestBed.inject(SpenderService) as jasmine.SpyObj<SpenderService>;
137144
approverService = TestBed.inject(ApproverService) as jasmine.SpyObj<ApproverService>;
145+
trackingService = TestBed.inject(TrackingService) as jasmine.SpyObj<TrackingService>;
138146
});
139147

140148
it('should be created', () => {
@@ -169,6 +177,7 @@ describe('RouterAuthService', () => {
169177
expect(expenseAggregationService.setRoot).toHaveBeenCalledOnceWith(domain);
170178
expect(spenderService.setRoot).toHaveBeenCalledOnceWith(domain);
171179
expect(approverService.setRoot).toHaveBeenCalledOnceWith(domain);
180+
expect(trackingService.setRoot).toHaveBeenCalledOnceWith(domain);
172181
done();
173182
});
174183
});

src/app/core/services/router-auth.service.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import { SpenderService } from './platform/v1/spender/spender.service';
1717
import { ApproverService } from './platform/v1/approver/approver.service';
1818
import { EmailExistsResponse } from '../models/email-exists-response.model';
1919
import { ResendEmailVerification } from '../models/resend-email-verification.model';
20+
import { TrackingService } from './tracking.service';
2021

2122
@Injectable({
2223
providedIn: 'root',
@@ -35,7 +36,8 @@ export class RouterAuthService {
3536
private spenderPlatformV1ApiService: SpenderPlatformV1ApiService,
3637
private expenseAggregationService: ExpenseAggregationService,
3738
private spenderService: SpenderService,
38-
private approverService: ApproverService
39+
private approverService: ApproverService,
40+
private trackingService: TrackingService
3941
) {}
4042

4143
checkEmailExists(email: string): Observable<EmailExistsResponse> {
@@ -66,6 +68,7 @@ export class RouterAuthService {
6668
this.expenseAggregationService.setRoot(domain);
6769
this.spenderService.setRoot(domain);
6870
this.approverService.setRoot(domain);
71+
this.trackingService.setRoot(domain);
6972

7073
await this.tokenService.setClusterDomain(domain);
7174
}

src/app/core/services/tracking.service.ts

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -46,19 +46,32 @@ import mixpanel, { Config } from 'mixpanel-browser';
4646
export class TrackingService {
4747
identityEmail = null;
4848

49-
constructor(private authService: AuthService, private deviceService: DeviceService) {
50-
try {
51-
const config: Partial<Config> = {
52-
debug: false,
53-
track_pageview: false,
54-
persistence: 'localStorage',
55-
};
49+
ROOT_ENDPOINT: string;
5650

57-
if (environment.MIXPANEL_PROXY_URL) {
58-
config.api_host = environment.MIXPANEL_PROXY_URL;
59-
}
51+
constructor(private authService: AuthService, private deviceService: DeviceService) {}
6052

61-
mixpanel.init(environment.MIXPANEL_PROJECT_TOKEN, config);
53+
setRoot(rootUrl: string): void {
54+
this.ROOT_ENDPOINT = rootUrl;
55+
this.initializeMixpanel();
56+
}
57+
58+
initializeMixpanel(): void {
59+
try {
60+
const enableMixpanel = environment.ENABLE_MIXPANEL;
61+
if (enableMixpanel === 'true') {
62+
const config: Partial<Config> = {
63+
debug: false,
64+
track_pageview: false,
65+
persistence: 'localStorage',
66+
};
67+
68+
const useMixpanelProxy = environment.USE_MIXPANEL_PROXY;
69+
if (useMixpanelProxy === 'true' && this.ROOT_ENDPOINT) {
70+
config.api_host = this.ROOT_ENDPOINT + '/mixpanel';
71+
}
72+
73+
mixpanel.init(environment.MIXPANEL_PROJECT_TOKEN, config);
74+
}
6275
} catch (e) {}
6376
}
6477

src/environments/environment.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ export const environment = {
1818
LIVE_UPDATE_APP_VERSION: '',
1919
SMARTLOOK_API_KEY: '',
2020
MIXPANEL_PROJECT_TOKEN: '',
21-
MIXPANEL_PROXY_URL: '',
21+
USE_MIXPANEL_PROXY: '',
22+
ENABLE_MIXPANEL: '',
2223
};
2324

2425
/*

0 commit comments

Comments
 (0)