From dacbb098900bf2e2a952566c83f9beff2bb6e444 Mon Sep 17 00:00:00 2001 From: anandtiwary <52081890+anandtiwary@users.noreply.github.com> Date: Wed, 29 Sep 2021 13:19:16 -0700 Subject: [PATCH 1/2] fix: running telemetry methods on initialized list only --- .../telemetry/user-telemetry-impl.service.ts | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/projects/common/src/telemetry/user-telemetry-impl.service.ts b/projects/common/src/telemetry/user-telemetry-impl.service.ts index b45a867e3..c4e5a7598 100644 --- a/projects/common/src/telemetry/user-telemetry-impl.service.ts +++ b/projects/common/src/telemetry/user-telemetry-impl.service.ts @@ -7,7 +7,8 @@ import { UserTelemetryService } from './user-telemetry.service'; @Injectable({ providedIn: 'root' }) export class UserTelemetryImplService extends UserTelemetryService { - private telemetryProviders: UserTelemetryInternalConfig[] = []; + private allTelemetryProviders: UserTelemetryInternalConfig[] = []; + private initializedTelemetryProviders: UserTelemetryInternalConfig[] = []; public constructor(private readonly injector: Injector, @Optional() private readonly router?: Router) { super(); @@ -17,7 +18,7 @@ export class UserTelemetryImplService extends UserTelemetryService { public register(...configs: UserTelemetryRegistrationConfig[]): void { try { const providers = configs.map(config => this.buildTelemetryProvider(config)); - this.telemetryProviders = [...this.telemetryProviders, ...providers]; + this.allTelemetryProviders = [...this.allTelemetryProviders, ...providers]; } catch (error) { /** * Fail silently @@ -29,31 +30,32 @@ export class UserTelemetryImplService extends UserTelemetryService { } public initialize(): void { - this.telemetryProviders.forEach(provider => provider.telemetryProvider.initialize(provider.initConfig)); + this.allTelemetryProviders.forEach(provider => provider.telemetryProvider.initialize(provider.initConfig)); + this.initializedTelemetryProviders = [...this.allTelemetryProviders]; } public identify(userTraits: UserTraits): void { - this.telemetryProviders.forEach(provider => provider.telemetryProvider.identify(userTraits)); + this.initializedTelemetryProviders.forEach(provider => provider.telemetryProvider.identify(userTraits)); } public shutdown(): void { - this.telemetryProviders.forEach(provider => provider.telemetryProvider.shutdown?.()); + this.initializedTelemetryProviders.forEach(provider => provider.telemetryProvider.shutdown?.()); } public trackEvent(name: string, data: Dictionary): void { - this.telemetryProviders + this.initializedTelemetryProviders .filter(provider => provider.enableEventTracking) .forEach(provider => provider.telemetryProvider.trackEvent?.(name, data)); } public trackPageEvent(url: string, data: Dictionary): void { - this.telemetryProviders + this.initializedTelemetryProviders .filter(provider => provider.enablePageTracking) .forEach(provider => provider.telemetryProvider.trackPage?.(url, data)); } public trackErrorEvent(error: string, data: Dictionary): void { - this.telemetryProviders + this.initializedTelemetryProviders .filter(provider => provider.enableErrorTracking) .forEach(provider => provider.telemetryProvider.trackError?.(`Error: ${error}`, data)); } From f24a6e7678ea9668c89a73a67ab7ab072256d01a Mon Sep 17 00:00:00 2001 From: anandtiwary <52081890+anandtiwary@users.noreply.github.com> Date: Wed, 29 Sep 2021 13:56:26 -0700 Subject: [PATCH 2/2] fix: clearing initalized list on shutdown --- projects/common/src/telemetry/user-telemetry-impl.service.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/common/src/telemetry/user-telemetry-impl.service.ts b/projects/common/src/telemetry/user-telemetry-impl.service.ts index c4e5a7598..69ded973b 100644 --- a/projects/common/src/telemetry/user-telemetry-impl.service.ts +++ b/projects/common/src/telemetry/user-telemetry-impl.service.ts @@ -40,6 +40,7 @@ export class UserTelemetryImplService extends UserTelemetryService { public shutdown(): void { this.initializedTelemetryProviders.forEach(provider => provider.telemetryProvider.shutdown?.()); + this.initializedTelemetryProviders = []; } public trackEvent(name: string, data: Dictionary): void {