Skip to content

Commit b65d383

Browse files
authored
fix: running telemetry methods on initialized list only (#1163)
* fix: running telemetry methods on initialized list only * fix: clearing initalized list on shutdown
1 parent acc8cc4 commit b65d383

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

projects/common/src/telemetry/user-telemetry-impl.service.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import { UserTelemetryService } from './user-telemetry.service';
77

88
@Injectable({ providedIn: 'root' })
99
export class UserTelemetryImplService extends UserTelemetryService {
10-
private telemetryProviders: UserTelemetryInternalConfig[] = [];
10+
private allTelemetryProviders: UserTelemetryInternalConfig[] = [];
11+
private initializedTelemetryProviders: UserTelemetryInternalConfig[] = [];
1112

1213
public constructor(private readonly injector: Injector, @Optional() private readonly router?: Router) {
1314
super();
@@ -17,7 +18,7 @@ export class UserTelemetryImplService extends UserTelemetryService {
1718
public register(...configs: UserTelemetryRegistrationConfig<unknown>[]): void {
1819
try {
1920
const providers = configs.map(config => this.buildTelemetryProvider(config));
20-
this.telemetryProviders = [...this.telemetryProviders, ...providers];
21+
this.allTelemetryProviders = [...this.allTelemetryProviders, ...providers];
2122
} catch (error) {
2223
/**
2324
* Fail silently
@@ -29,31 +30,33 @@ export class UserTelemetryImplService extends UserTelemetryService {
2930
}
3031

3132
public initialize(): void {
32-
this.telemetryProviders.forEach(provider => provider.telemetryProvider.initialize(provider.initConfig));
33+
this.allTelemetryProviders.forEach(provider => provider.telemetryProvider.initialize(provider.initConfig));
34+
this.initializedTelemetryProviders = [...this.allTelemetryProviders];
3335
}
3436

3537
public identify(userTraits: UserTraits): void {
36-
this.telemetryProviders.forEach(provider => provider.telemetryProvider.identify(userTraits));
38+
this.initializedTelemetryProviders.forEach(provider => provider.telemetryProvider.identify(userTraits));
3739
}
3840

3941
public shutdown(): void {
40-
this.telemetryProviders.forEach(provider => provider.telemetryProvider.shutdown?.());
42+
this.initializedTelemetryProviders.forEach(provider => provider.telemetryProvider.shutdown?.());
43+
this.initializedTelemetryProviders = [];
4144
}
4245

4346
public trackEvent(name: string, data: Dictionary<unknown>): void {
44-
this.telemetryProviders
47+
this.initializedTelemetryProviders
4548
.filter(provider => provider.enableEventTracking)
4649
.forEach(provider => provider.telemetryProvider.trackEvent?.(name, data));
4750
}
4851

4952
public trackPageEvent(url: string, data: Dictionary<unknown>): void {
50-
this.telemetryProviders
53+
this.initializedTelemetryProviders
5154
.filter(provider => provider.enablePageTracking)
5255
.forEach(provider => provider.telemetryProvider.trackPage?.(url, data));
5356
}
5457

5558
public trackErrorEvent(error: string, data: Dictionary<unknown>): void {
56-
this.telemetryProviders
59+
this.initializedTelemetryProviders
5760
.filter(provider => provider.enableErrorTracking)
5861
.forEach(provider => provider.telemetryProvider.trackError?.(`Error: ${error}`, data));
5962
}

0 commit comments

Comments
 (0)