1
1
import {
2
+ EnvironmentProviders ,
2
3
Inject ,
3
4
InjectionToken ,
4
5
Injector ,
5
- ModuleWithProviders ,
6
6
VERSION as NG_VERSION ,
7
7
NgModule ,
8
8
NgZone ,
9
9
Optional ,
10
10
PLATFORM_ID ,
11
+ makeEnvironmentProviders ,
11
12
} from '@angular/core' ;
12
13
import { VERSION , ɵAngularFireSchedulers } from '@angular/fire' ;
13
14
import { FirebaseApp as IFirebaseApp , getApp , registerVersion } from 'firebase/app' ;
@@ -44,6 +45,12 @@ const FIREBASE_APPS_PROVIDER = {
44
45
45
46
export function firebaseAppFactory ( fn : ( injector : Injector ) => IFirebaseApp ) {
46
47
return ( zone : NgZone , injector : Injector ) => {
48
+ const platformId = injector . get ( PLATFORM_ID ) ;
49
+ registerVersion ( 'angularfire' , VERSION . full , 'core' ) ;
50
+ registerVersion ( 'angularfire' , VERSION . full , 'app' ) ;
51
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
52
+ registerVersion ( 'angular' , NG_VERSION . full , platformId . toString ( ) ) ;
53
+
47
54
const app = zone . runOutsideAngular ( ( ) => fn ( injector ) ) ;
48
55
return new FirebaseApp ( app ) ;
49
56
} ;
@@ -68,10 +75,11 @@ export class FirebaseAppModule {
68
75
// Calling initializeApp({ ... }, 'name') multiple times will add more FirebaseApps into the FIREBASE_APPS
69
76
// injection scope. This allows developers to more easily work with multiple Firebase Applications. Downside
70
77
// is that DI for app name and options doesn't really make sense anymore.
71
- export function provideFirebaseApp ( fn : ( injector : Injector ) => IFirebaseApp , ...deps : any [ ] ) : ModuleWithProviders < FirebaseAppModule > {
72
- return {
73
- ngModule : FirebaseAppModule ,
74
- providers : [ {
78
+ export function provideFirebaseApp ( fn : ( injector : Injector ) => IFirebaseApp , ...deps : any [ ] ) : EnvironmentProviders {
79
+ return makeEnvironmentProviders ( [
80
+ DEFAULT_FIREBASE_APP_PROVIDER ,
81
+ FIREBASE_APPS_PROVIDER ,
82
+ {
75
83
provide : PROVIDED_FIREBASE_APPS ,
76
84
useFactory : firebaseAppFactory ( fn ) ,
77
85
multi : true ,
@@ -81,6 +89,6 @@ export function provideFirebaseApp(fn: (injector: Injector) => IFirebaseApp, ...
81
89
ɵAngularFireSchedulers ,
82
90
...deps ,
83
91
] ,
84
- } ] ,
85
- } ;
92
+ }
93
+ ] )
86
94
}
0 commit comments