@@ -7,7 +7,8 @@ import { UserTelemetryService } from './user-telemetry.service';
7
7
8
8
@Injectable ( { providedIn : 'root' } )
9
9
export class UserTelemetryImplService extends UserTelemetryService {
10
- private telemetryProviders : UserTelemetryInternalConfig [ ] = [ ] ;
10
+ private allTelemetryProviders : UserTelemetryInternalConfig [ ] = [ ] ;
11
+ private initializedTelemetryProviders : UserTelemetryInternalConfig [ ] = [ ] ;
11
12
12
13
public constructor ( private readonly injector : Injector , @Optional ( ) private readonly router ?: Router ) {
13
14
super ( ) ;
@@ -17,7 +18,7 @@ export class UserTelemetryImplService extends UserTelemetryService {
17
18
public register ( ...configs : UserTelemetryRegistrationConfig < unknown > [ ] ) : void {
18
19
try {
19
20
const providers = configs . map ( config => this . buildTelemetryProvider ( config ) ) ;
20
- this . telemetryProviders = [ ...this . telemetryProviders , ...providers ] ;
21
+ this . allTelemetryProviders = [ ...this . allTelemetryProviders , ...providers ] ;
21
22
} catch ( error ) {
22
23
/**
23
24
* Fail silently
@@ -29,31 +30,33 @@ export class UserTelemetryImplService extends UserTelemetryService {
29
30
}
30
31
31
32
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 ] ;
33
35
}
34
36
35
37
public identify ( userTraits : UserTraits ) : void {
36
- this . telemetryProviders . forEach ( provider => provider . telemetryProvider . identify ( userTraits ) ) ;
38
+ this . initializedTelemetryProviders . forEach ( provider => provider . telemetryProvider . identify ( userTraits ) ) ;
37
39
}
38
40
39
41
public shutdown ( ) : void {
40
- this . telemetryProviders . forEach ( provider => provider . telemetryProvider . shutdown ?.( ) ) ;
42
+ this . initializedTelemetryProviders . forEach ( provider => provider . telemetryProvider . shutdown ?.( ) ) ;
43
+ this . initializedTelemetryProviders = [ ] ;
41
44
}
42
45
43
46
public trackEvent ( name : string , data : Dictionary < unknown > ) : void {
44
- this . telemetryProviders
47
+ this . initializedTelemetryProviders
45
48
. filter ( provider => provider . enableEventTracking )
46
49
. forEach ( provider => provider . telemetryProvider . trackEvent ?.( name , data ) ) ;
47
50
}
48
51
49
52
public trackPageEvent ( url : string , data : Dictionary < unknown > ) : void {
50
- this . telemetryProviders
53
+ this . initializedTelemetryProviders
51
54
. filter ( provider => provider . enablePageTracking )
52
55
. forEach ( provider => provider . telemetryProvider . trackPage ?.( url , data ) ) ;
53
56
}
54
57
55
58
public trackErrorEvent ( error : string , data : Dictionary < unknown > ) : void {
56
- this . telemetryProviders
59
+ this . initializedTelemetryProviders
57
60
. filter ( provider => provider . enableErrorTracking )
58
61
. forEach ( provider => provider . telemetryProvider . trackError ?.( `Error: ${ error } ` , data ) ) ;
59
62
}
0 commit comments