@@ -5,7 +5,9 @@ import { map, observeOn, shareReplay, switchMap, tap } from 'rxjs/operators';
5
5
import { FIREBASE_APP_NAME , FIREBASE_OPTIONS , FirebaseAppConfig , FirebaseOptions , ɵAngularFireSchedulers , ɵfirebaseAppFactory , ɵlazySDKProxy , ɵPromiseProxy } from '@angular/fire' ;
6
6
import { analytics } from 'firebase' ;
7
7
8
- export interface Config { [ key : string ] : any ; }
8
+ export interface Config {
9
+ [ key : string ] : any ;
10
+ }
9
11
10
12
export const COLLECTION_ENABLED = new InjectionToken < boolean > ( 'angularfire2.analytics.analyticsCollectionEnabled' ) ;
11
13
export const APP_VERSION = new InjectionToken < string > ( 'angularfire2.analytics.appVersion' ) ;
@@ -21,11 +23,12 @@ const GTAG_CONFIG_COMMAND = 'config';
21
23
const GTAG_FUNCTION_NAME = 'gtag' ;
22
24
const DATA_LAYER_NAME = 'dataLayer' ;
23
25
24
- export interface AngularFireAnalytics extends ɵPromiseProxy < analytics . Analytics > { }
26
+ export interface AngularFireAnalytics extends ɵPromiseProxy < analytics . Analytics > {
27
+ }
25
28
26
29
let gtag : ( ...args : any [ ] ) => void ;
27
30
let analyticsInitialized : Promise < void > ;
28
- const analyticsInstanceCache : { [ key : string ] : Observable < analytics . Analytics > } = { } ;
31
+ const analyticsInstanceCache : { [ key : string ] : Observable < analytics . Analytics > } = { } ;
29
32
30
33
@Injectable ( {
31
34
providedIn : 'any'
@@ -39,30 +42,36 @@ export class AngularFireAnalytics {
39
42
40
43
constructor (
41
44
@Inject ( FIREBASE_OPTIONS ) private options : FirebaseOptions ,
42
- @Optional ( ) @Inject ( FIREBASE_APP_NAME ) nameOrConfig : string | FirebaseAppConfig | null | undefined ,
43
- @Optional ( ) @Inject ( COLLECTION_ENABLED ) analyticsCollectionEnabled : boolean | null ,
44
- @Optional ( ) @Inject ( APP_VERSION ) providedAppVersion : string | null ,
45
- @Optional ( ) @Inject ( APP_NAME ) providedAppName : string | null ,
46
- @Optional ( ) @Inject ( DEBUG_MODE ) debugModeEnabled : boolean | null ,
47
- @Optional ( ) @Inject ( CONFIG ) providedConfig : Config | null ,
45
+ @Optional ( ) @Inject ( FIREBASE_APP_NAME ) nameOrConfig : string | FirebaseAppConfig | null | undefined ,
46
+ @Optional ( ) @Inject ( COLLECTION_ENABLED ) analyticsCollectionEnabled : boolean | null ,
47
+ @Optional ( ) @Inject ( APP_VERSION ) providedAppVersion : string | null ,
48
+ @Optional ( ) @Inject ( APP_NAME ) providedAppName : string | null ,
49
+ @Optional ( ) @Inject ( DEBUG_MODE ) debugModeEnabled : boolean | null ,
50
+ @Optional ( ) @Inject ( CONFIG ) providedConfig : Config | null ,
51
+ // tslint:disable-next-line:ban-types
48
52
@Inject ( PLATFORM_ID ) platformId : Object ,
49
53
zone : NgZone
50
54
) {
51
55
52
56
if ( ! analyticsInitialized ) {
53
57
if ( isPlatformBrowser ( platformId ) ) {
54
- gtag = window [ GTAG_FUNCTION_NAME ] || function ( ) { window [ DATA_LAYER_NAME ] . push ( arguments ) ; } ;
58
+ gtag = window [ GTAG_FUNCTION_NAME ] || ( ( ) => {
59
+ window [ DATA_LAYER_NAME ] . push ( arguments ) ;
60
+ } ) ;
55
61
window [ DATA_LAYER_NAME ] = window [ DATA_LAYER_NAME ] || [ ] ;
56
62
analyticsInitialized = zone . runOutsideAngular ( ( ) =>
57
63
new Promise ( resolve => {
58
64
window [ GTAG_FUNCTION_NAME ] = ( ...args : any [ ] ) => {
59
- if ( args [ 0 ] == 'js' ) { resolve ( ) ; }
65
+ if ( args [ 0 ] === 'js' ) {
66
+ resolve ( ) ;
67
+ }
60
68
gtag ( ...args ) ;
61
69
} ;
62
70
} )
63
71
) ;
64
72
} else {
65
- gtag = ( ) => { } ;
73
+ gtag = ( ) => {
74
+ } ;
66
75
analyticsInitialized = Promise . resolve ( ) ;
67
76
}
68
77
}
@@ -75,17 +84,27 @@ export class AngularFireAnalytics {
75
84
map ( ( ) => ɵfirebaseAppFactory ( options , zone , nameOrConfig ) ) ,
76
85
map ( app => app . analytics ( ) ) ,
77
86
tap ( analytics => {
78
- if ( analyticsCollectionEnabled === false ) { analytics . setAnalyticsCollectionEnabled ( false ) ; }
87
+ if ( analyticsCollectionEnabled === false ) {
88
+ analytics . setAnalyticsCollectionEnabled ( false ) ;
89
+ }
79
90
} ) ,
80
- shareReplay ( { bufferSize : 1 , refCount : false } ) ,
91
+ shareReplay ( { bufferSize : 1 , refCount : false } )
81
92
) ;
82
93
analyticsInstanceCache [ options [ ANALYTICS_ID_FIELD ] ] = analytics ;
83
94
}
84
95
85
- if ( providedConfig ) { this . updateConfig ( providedConfig ) ; }
86
- if ( providedAppName ) { this . updateConfig ( { [ APP_NAME_KEY ] : providedAppName } ) ; }
87
- if ( providedAppVersion ) { this . updateConfig ( { [ APP_VERSION_KEY ] : providedAppVersion } ) ; }
88
- if ( debugModeEnabled ) { this . updateConfig ( { [ DEBUG_MODE_KEY ] : 1 } ) ; }
96
+ if ( providedConfig ) {
97
+ this . updateConfig ( providedConfig ) ;
98
+ }
99
+ if ( providedAppName ) {
100
+ this . updateConfig ( { [ APP_NAME_KEY ] : providedAppName } ) ;
101
+ }
102
+ if ( providedAppVersion ) {
103
+ this . updateConfig ( { [ APP_VERSION_KEY ] : providedAppVersion } ) ;
104
+ }
105
+ if ( debugModeEnabled ) {
106
+ this . updateConfig ( { [ DEBUG_MODE_KEY ] : 1 } ) ;
107
+ }
89
108
90
109
return ɵlazySDKProxy ( this , analytics , zone ) ;
91
110
0 commit comments