Skip to content

Commit 4bbc8f1

Browse files
authored
chore: Bring back appcues (#1202)
* Revert "fix: remove AppCues (#1043)" This reverts commit d3a7597. * chore: Bring back appcues * fixes * fixes
1 parent b3ad044 commit 4bbc8f1

File tree

9 files changed

+97
-3
lines changed

9 files changed

+97
-3
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,3 +78,5 @@ documentation.json
7878
.sentryclirc
7979

8080
commits.csv
81+
dependency-check-report.csv
82+
dependency-check-report.html

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@
5656
"@angular-eslint/eslint-plugin-template": "14.1.2",
5757
"@angular-eslint/schematics": "^18.4.3",
5858
"@angular-eslint/template-parser": "14.1.2",
59-
"@compodoc/compodoc": "^1.1.23",
6059
"@storybook/addon-docs": "^7.6.3",
6160
"@storybook/addon-essentials": "^7.6.3",
6261
"@storybook/addon-interactions": "^7.6.3",

src/app/app.component.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { SiAuthService } from './core/services/si/si-core/si-auth.service';
99
import { XeroAuthService } from './core/services/xero/xero-core/xero-auth.service';
1010
import { NetsuiteAuthService } from './core/services/netsuite/netsuite-core/netsuite-auth.service';
1111
import { StorageService } from './core/services/common/storage.service';
12-
import { Router } from '@angular/router';
12+
import { NavigationEnd, Router } from '@angular/router';
1313
import { IntegrationsService } from './core/services/common/integrations.service';
1414

1515
@Component({
@@ -89,6 +89,11 @@ export class AppComponent implements OnInit {
8989
}
9090

9191
ngOnInit(): void {
92+
this.router.events.subscribe((event) => {
93+
if (event instanceof NavigationEnd) {
94+
(window as any).Appcues && (window as any).Appcues.page();
95+
}
96+
});
9297
this.eventsService.receiveEvent();
9398
this.setupLoginWatcher();
9499
this.primengConfig.ripple = true;
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import { TestBed } from '@angular/core/testing';
2+
3+
import { AppcuesService } from './appcues.service';
4+
import { HttpClientTestingModule } from '@angular/common/http/testing';
5+
import { of } from 'rxjs';
6+
import { UserService } from '../misc/user.service';
7+
import { minimalUser } from '../../interceptor/jwt.fixture';
8+
9+
describe('AppcuesService', () => {
10+
let service: AppcuesService;
11+
12+
beforeEach(() => {
13+
const service2 = {
14+
getUserProfile: () => of(minimalUser)
15+
};
16+
TestBed.configureTestingModule({
17+
imports: [HttpClientTestingModule],
18+
providers: [AppcuesService,
19+
{ provide: UserService, useValue: service2 }
20+
]
21+
});
22+
service = TestBed.inject(AppcuesService);
23+
(window as any).Appcues = {
24+
identify: () => undefined
25+
};
26+
});
27+
28+
it('should be created', () => {
29+
expect(service).toBeTruthy();
30+
});
31+
32+
it('get function check', () => {
33+
expect(service.appcues).toBeDefined();
34+
});
35+
36+
it('initialiseAppcues function check', () => {
37+
// @ts-ignore: force this private property value for testing.
38+
expect(service.initialiseAppcues()).toBeUndefined();
39+
});
40+
});
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import { Injectable } from '@angular/core';
2+
import { UserService } from '../misc/user.service';
3+
import { AppName } from '../../models/enum/enum.model';
4+
import { SiWorkspaceService } from '../si/si-core/si-workspace.service';
5+
import { MinimalUser } from '../../models/db/user.model';
6+
import { IntacctWorkspace } from '../../models/intacct/db/workspaces.model';
7+
8+
@Injectable({
9+
providedIn: 'root'
10+
})
11+
export class AppcuesService {
12+
13+
user: MinimalUser = this.userService.getUserProfile();
14+
15+
constructor(
16+
private userService: UserService
17+
) { }
18+
19+
get appcues() {
20+
return (window as any).Appcues;
21+
}
22+
23+
initialiseAppcues(appName: AppName, workspace_created_at: Date): void {
24+
workspace_created_at = new Date(workspace_created_at);
25+
if (this.appcues) {
26+
const user = this.userService.getUserProfile();
27+
this.appcues.identify(user.user_id, {
28+
'Org ID': user.org_id,
29+
'User ID': user.user_id,
30+
source: 'Fyle Integrations App',
31+
'App Name': appName
32+
});
33+
}
34+
}
35+
}

src/app/integrations/intacct/intacct.component.spec.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,4 +120,5 @@ describe('IntacctComponent', () => {
120120

121121
expect(router.navigateByUrl).not.toHaveBeenCalled();
122122
});
123+
123124
});

src/app/integrations/intacct/intacct.component.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { IntacctWorkspace } from 'src/app/core/models/intacct/db/workspaces.mode
66
import { HelperService } from 'src/app/core/services/common/helper.service';
77
import { StorageService } from 'src/app/core/services/common/storage.service';
88
import { WindowService } from 'src/app/core/services/common/window.service';
9+
import { AppcuesService } from 'src/app/core/services/integration/appcues.service';
910
import { UserService } from 'src/app/core/services/misc/user.service';
1011
import { SiWorkspaceService } from 'src/app/core/services/si/si-core/si-workspace.service';
1112
import { SiAuthService } from 'src/app/core/services/si/si-core/si-auth.service';

src/app/integrations/qbd-direct/qbd-direct.component.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import { Component, OnInit } from '@angular/core';
22
import { Router, RouterModule } from '@angular/router';
33
import { MinimalUser } from 'src/app/core/models/db/user.model';
4-
import { AppUrl, QbdDirectOnboardingState } from 'src/app/core/models/enum/enum.model';
4+
import { AppName, AppUrl, QbdDirectOnboardingState } from 'src/app/core/models/enum/enum.model';
55
import { QbdDirectWorkspace } from 'src/app/core/models/qbd-direct/db/qbd-direct-workspaces.model';
66
import { HelperService } from 'src/app/core/services/common/helper.service';
77
import { IntegrationsUserService } from 'src/app/core/services/common/integrations-user.service';
88
import { StorageService } from 'src/app/core/services/common/storage.service';
99
import { WindowService } from 'src/app/core/services/common/window.service';
1010
import { WorkspaceService } from 'src/app/core/services/common/workspace.service';
11+
import { AppcuesService } from 'src/app/core/services/integration/appcues.service';
1112
import { QbdDirectHelperService } from 'src/app/core/services/qbd-direct/qbd-direct-core/qbd-direct-helper.service';
1213

1314
@Component({
@@ -28,6 +29,7 @@ export class QbdDirectComponent implements OnInit {
2829
windowReference: Window;
2930

3031
constructor(
32+
private appcuesService: AppcuesService,
3133
private helperService: HelperService,
3234
private qbdDirectHelperService: QbdDirectHelperService,
3335
private router: Router,
@@ -64,6 +66,7 @@ export class QbdDirectComponent implements OnInit {
6466
this.workspace = workspace;
6567
this.storageService.set('workspaceId', this.workspace.id);
6668
this.storageService.set('onboarding-state', this.workspace.onboarding_state);
69+
this.appcuesService.initialiseAppcues(AppName.QBD_DIRECT, this.workspace.created_at);
6770
this.workspaceService.importFyleAttributes(false).subscribe();
6871
this.qbdDirectHelperService.importQBDAttributes(false).subscribe();
6972
this.isLoading = false;

src/index.html

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,14 @@
2525
}
2626
</script>
2727

28+
<!-- appcues -->
29+
<script type="text/javascript">
30+
window.AppcuesSettings = {
31+
enableURLDetection: true
32+
};
33+
</script>
34+
<script src="https://fast.appcues.com/218944.js"></script>
35+
2836
<!-- refiner.io -->
2937
<script type="text/javascript">
3038
if (window.location.hostname !== "localhost") {

0 commit comments

Comments
 (0)