Skip to content

Commit 57906bd

Browse files
jamesdanielsdavideast
authored andcommitted
feat(): Support FirebaseAppConfig, clean up injection tokens (#1627)
1 parent 0c3b215 commit 57906bd

19 files changed

+97
-150
lines changed

package.json

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,19 +34,19 @@
3434
"@angular/core": "^5.0.0",
3535
"@angular/platform-browser": "^5.0.0",
3636
"@angular/platform-browser-dynamic": "^5.0.0",
37-
"@firebase/app": "^0.1.6",
38-
"@firebase/app-types": "^0.1.1",
39-
"@firebase/auth": "^0.3.2",
40-
"@firebase/auth-types": "^0.1.1",
41-
"@firebase/database": "^0.1.7",
42-
"@firebase/database-types": "^0.1.1",
43-
"@firebase/firestore": "^0.2.3",
44-
"@firebase/firestore-types": "^0.1.1",
45-
"@firebase/messaging-types": "^0.1.1",
46-
"@firebase/storage": "^0.1.6",
47-
"@firebase/storage-types": "^0.1.1",
37+
"@firebase/app": "^0.2.0",
38+
"@firebase/app-types": "^0.2.0",
39+
"@firebase/auth": "^0.4.2",
40+
"@firebase/auth-types": "^0.2.1",
41+
"@firebase/database": "^0.2.2",
42+
"@firebase/database-types": "^0.2.1",
43+
"@firebase/firestore": "^0.4.1",
44+
"@firebase/firestore-types": "^0.3.0",
45+
"@firebase/messaging-types": "^0.1.3",
46+
"@firebase/storage": "^0.1.9",
47+
"@firebase/storage-types": "^0.1.3",
4848
"bufferutil": "^3.0.3",
49-
"firebase": "^4.8.2",
49+
"firebase": "^4.13.0",
5050
"rxjs": "^5.5.4",
5151
"utf-8-validate": "^4.0.0",
5252
"ws": "^3.3.2",

src/auth/auth.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { User } from '@firebase/auth-types';
22
import { ReflectiveInjector, Provider } from '@angular/core';
33
import { Observable, Subject } from 'rxjs'
44
import { TestBed, inject } from '@angular/core/testing';
5-
import { FirebaseApp, FirebaseAppConfig, AngularFireModule, FirebaseAppName } from 'angularfire2';
5+
import { FirebaseApp, FirebaseOptionsToken, AngularFireModule, FirebaseAppNameToken } from 'angularfire2';
66
import { AngularFireAuth, AngularFireAuthModule } from 'angularfire2/auth';
77
import { COMMON_CONFIG } from './test-config';
88
import { take, skip } from 'rxjs/operators';
@@ -136,8 +136,8 @@ describe('AngularFireAuth with different app', () => {
136136
AngularFireAuthModule
137137
],
138138
providers: [
139-
{ provide: FirebaseAppName, useValue: FIREBASE_APP_NAME_TOO },
140-
{ provide: FirebaseAppConfig, useValue: COMMON_CONFIG }
139+
{ provide: FirebaseAppNameToken, useValue: FIREBASE_APP_NAME_TOO },
140+
{ provide: FirebaseOptionsToken, useValue: COMMON_CONFIG }
141141
]
142142
});
143143
inject([FirebaseApp, AngularFireAuth], (app_: FirebaseApp, _afAuth: AngularFireAuth) => {

src/auth/auth.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { FirebaseAuth, User } from '@firebase/auth-types';
2-
import { FirebaseOptions } from '@firebase/app-types';
2+
import { FirebaseOptions, FirebaseAppConfig } from '@firebase/app-types';
33
import { Injectable, Inject, Optional, NgZone, PLATFORM_ID } from '@angular/core';
44
import { Observable } from 'rxjs';
55
import { switchMap } from 'rxjs/operators';
66
import { of } from 'rxjs/observable/of';
77
import { from } from 'rxjs/observable/from';
88

9-
import { FirebaseAppConfig, FirebaseAppName, _firebaseAppFactory, FirebaseZoneScheduler } from 'angularfire2';
9+
import { FirebaseOptionsToken, FirebaseAppConfigToken, FirebaseAppNameToken, _firebaseAppFactory, FirebaseZoneScheduler } from 'angularfire2';
1010

1111

1212
@Injectable()
@@ -28,14 +28,15 @@ export class AngularFireAuth {
2828
public readonly idToken: Observable<string|null>;
2929

3030
constructor(
31-
@Inject(FirebaseAppConfig) config:FirebaseOptions,
32-
@Optional() @Inject(FirebaseAppName) name:string,
31+
@Inject(FirebaseOptionsToken) options:FirebaseOptions,
32+
@Optional() @Inject(FirebaseAppConfigToken) config:FirebaseAppConfig,
33+
@Optional() @Inject(FirebaseAppNameToken) name:string,
3334
@Inject(PLATFORM_ID) platformId: Object,
3435
private zone: NgZone
3536
) {
3637
const scheduler = new FirebaseZoneScheduler(zone, platformId);
3738
this.auth = zone.runOutsideAngular(() => {
38-
const app = _firebaseAppFactory(config, name);
39+
const app = _firebaseAppFactory(options, name, config);
3940
return app.auth();
4041
});
4142

src/core/angularfire2.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import { Reference } from '@firebase/database-types';
33
import { TestBed, inject, withModule, async } from '@angular/core/testing';
44
import { ReflectiveInjector, Provider, PlatformRef, NgModule, Compiler, ApplicationRef, CompilerFactory } from '@angular/core';
5-
import { FirebaseApp, FirebaseAppConfig, AngularFireModule } from 'angularfire2';
5+
import { FirebaseApp, AngularFireModule } from 'angularfire2';
66
import { Subscription } from 'rxjs';
77
import { COMMON_CONFIG } from './test-config';
88
import { BrowserModule } from '@angular/platform-browser';

src/core/angularfire2.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@ import { queue } from 'rxjs/scheduler/queue';
55
import { first } from 'rxjs/operators';
66

77
import firebase from '@firebase/app';
8-
import { FirebaseApp, FirebaseOptions } from '@firebase/app-types';
8+
import { FirebaseApp, FirebaseOptions, FirebaseAppConfig } from '@firebase/app-types';
99

1010
import {} from 'zone.js';
1111

12-
export const FirebaseAppName = new InjectionToken<string>('angularfire2.appName');
13-
export const FirebaseAppConfig = new InjectionToken<FirebaseOptions>('angularfire2.config');
12+
export const FirebaseAppNameToken = new InjectionToken<string|undefined>('angularfire2.app.name');
13+
export const FirebaseOptionsToken = new InjectionToken<FirebaseOptions>('angularfire2.app.options');
14+
export const FirebaseAppConfigToken = new InjectionToken<FirebaseAppConfig|undefined>('angularfire2.app.config');
1415

1516
// Put in database.ts when we drop database-depreciated
1617
export const RealtimeDatabaseURL = new InjectionToken<string>('angularfire2.realtimeDatabaseURL');

src/core/firebase.app.module.ts

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { InjectionToken, NgZone, NgModule } from '@angular/core';
22

3-
import { FirebaseAppConfig, FirebaseAppName } from './angularfire2';
3+
import { FirebaseOptionsToken, FirebaseAppNameToken, FirebaseAppConfigToken } from './angularfire2';
44

55
import firebase from '@firebase/app';
6-
import { FirebaseApp as _FirebaseApp, FirebaseOptions } from '@firebase/app-types';
6+
import { FirebaseApp as _FirebaseApp, FirebaseOptions, FirebaseAppConfig } from '@firebase/app-types';
77
import { FirebaseAuth } from '@firebase/auth-types';
88
import { FirebaseDatabase } from '@firebase/database-types';
99
import { FirebaseMessaging } from '@firebase/messaging-types';
@@ -22,29 +22,36 @@ export class FirebaseApp implements _FirebaseApp {
2222
firestore: () => FirebaseFirestore;
2323
}
2424

25-
export function _firebaseAppFactory(config: FirebaseOptions, name?: string): FirebaseApp {
26-
const appName = name || '[DEFAULT]';
27-
const existingApp = firebase.apps.filter(app => app.name == appName)[0] as FirebaseApp;
28-
return existingApp || firebase.initializeApp(config, appName) as FirebaseApp;
25+
export function _firebaseAppFactory(options: FirebaseOptions, name?: string, appConfig?: FirebaseAppConfig): FirebaseApp {
26+
const config = appConfig || {};
27+
if (name && config.name && config.name !== name) {
28+
console.warn('FirebaseAppNameToken and FirebaseAppConfigToken.name don\'t match, FirebaseAppNameToken takes precedence.');
29+
}
30+
config.name = name || config.name || '[DEFAULT]';
31+
const existingApp = firebase.apps.filter(app => app.name === config.name)[0];
32+
return (existingApp || firebase.initializeApp(options, config)) as FirebaseApp;
2933
}
3034

3135
const FirebaseAppProvider = {
3236
provide: FirebaseApp,
3337
useFactory: _firebaseAppFactory,
34-
deps: [ FirebaseAppConfig, FirebaseAppName ]
38+
deps: [ FirebaseOptionsToken, FirebaseAppNameToken, FirebaseAppConfigToken ]
3539
};
3640

3741
@NgModule({
3842
providers: [ FirebaseAppProvider ],
3943
})
4044
export class AngularFireModule {
41-
static initializeApp(config: FirebaseOptions, appName?: string) {
45+
static initializeApp(options: FirebaseOptions, appNameOrConfig?: string | FirebaseAppConfig) {
46+
const name = typeof appNameOrConfig === 'string' && appNameOrConfig || undefined
47+
const config = typeof appNameOrConfig === 'object' && appNameOrConfig || undefined
4248
return {
4349
ngModule: AngularFireModule,
4450
providers: [
45-
{ provide: FirebaseAppConfig, useValue: config },
46-
{ provide: FirebaseAppName, useValue: appName }
51+
{ provide: FirebaseOptionsToken, useValue: options },
52+
{ provide: FirebaseAppNameToken, useValue: name },
53+
{ provide: FirebaseAppConfigToken, useValue: config }
4754
]
4855
}
4956
}
50-
}
57+
}

src/database-deprecated/database.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import { FirebaseListFactoryOpts, FirebaseObjectFactoryOpts, PathReference } fro
66
import { FirebaseObjectFactory } from './firebase_object_factory';
77
import { FirebaseObjectObservable } from './firebase_object_observable';
88
import * as utils from './utils';
9-
import { FirebaseOptions } from '@firebase/app-types';
10-
import { FirebaseAppConfig, FirebaseAppName, RealtimeDatabaseURL, _firebaseAppFactory } from 'angularfire2';
9+
import { FirebaseOptions, FirebaseAppConfig } from '@firebase/app-types';
10+
import { FirebaseAppConfigToken, FirebaseOptionsToken, FirebaseAppNameToken, RealtimeDatabaseURL, _firebaseAppFactory } from 'angularfire2';
1111

1212
@Injectable()
1313
export class AngularFireDatabase {
@@ -18,8 +18,9 @@ export class AngularFireDatabase {
1818
database: FirebaseDatabase;
1919

2020
constructor(
21-
@Inject(FirebaseAppConfig) config:FirebaseOptions,
22-
@Optional() @Inject(FirebaseAppName) name:string,
21+
@Inject(FirebaseOptionsToken) options:FirebaseOptions,
22+
@Inject(FirebaseAppConfigToken) config:FirebaseAppConfig,
23+
@Optional() @Inject(FirebaseAppNameToken) name:string,
2324
@Optional() @Inject(RealtimeDatabaseURL) databaseURL:string,
2425
zone: NgZone
2526
) {

src/database/database.spec.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { FirebaseApp, FirebaseAppConfig, AngularFireModule, FirebaseAppName } from 'angularfire2';
1+
import { FirebaseApp, AngularFireModule, FirebaseOptionsToken, FirebaseAppNameToken } from 'angularfire2';
22
import { AngularFireDatabase, AngularFireDatabaseModule, RealtimeDatabaseURL } from 'angularfire2/database';
33
import { TestBed, inject } from '@angular/core/testing';
44
import { COMMON_CONFIG } from './test-config';
@@ -42,7 +42,7 @@ describe('AngularFireDatabase', () => {
4242
});
4343

4444
it('should accept a Firebase App in the constructor', () => {
45-
const __db = new AngularFireDatabase(app.options, app.name, null!, {}, zone);
45+
const __db = new AngularFireDatabase(app.options, undefined!, app.name, undefined!, {}, zone);
4646
expect(__db instanceof AngularFireDatabase).toEqual(true);
4747
});
4848

@@ -69,9 +69,9 @@ describe('AngularFireDatabase w/options', () => {
6969
AngularFireDatabaseModule
7070
],
7171
providers: [
72-
{ provide: FirebaseAppName, useValue: FIREBASE_APP_NAME_TOO },
73-
{ provide: FirebaseAppConfig, useValue: COMMON_CONFIG },
74-
{ provide: RealtimeDatabaseURL, useValue: FIREBASE_DB_NAME }
72+
{ provide: FirebaseAppNameToken, useValue: FIREBASE_APP_NAME_TOO },
73+
{ provide: FirebaseOptionsToken, useValue: COMMON_CONFIG },
74+
{ provide: RealtimeDatabaseURL, useValue: FIREBASE_DB_NAME }
7575
]
7676
});
7777
inject([FirebaseApp, AngularFireDatabase], (app_: FirebaseApp, _db: AngularFireDatabase) => {

src/database/database.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,27 @@ import { FirebaseDatabase } from '@firebase/database-types';
33
import { PathReference, DatabaseQuery, DatabaseReference, DatabaseSnapshot, ChildEvent, ListenEvent, QueryFn, AngularFireList, AngularFireObject } from './interfaces';
44
import { getRef } from './utils';
55
import { InjectionToken } from '@angular/core';
6-
import { FirebaseOptions } from '@firebase/app-types';
6+
import { FirebaseOptions, FirebaseAppConfig } from '@firebase/app-types';
77
import { createListReference } from './list/create-reference';
88
import { createObjectReference } from './object/create-reference';
9-
import { FirebaseAppConfig, FirebaseAppName, RealtimeDatabaseURL, _firebaseAppFactory, FirebaseZoneScheduler } from 'angularfire2';
9+
import { FirebaseOptionsToken, FirebaseAppConfigToken, FirebaseAppNameToken, RealtimeDatabaseURL, _firebaseAppFactory, FirebaseZoneScheduler } from 'angularfire2';
1010

1111
@Injectable()
1212
export class AngularFireDatabase {
1313
public readonly database: FirebaseDatabase;
1414
public readonly scheduler: FirebaseZoneScheduler;
1515

1616
constructor(
17-
@Inject(FirebaseAppConfig) config:FirebaseOptions,
18-
@Optional() @Inject(FirebaseAppName) name:string,
17+
@Inject(FirebaseOptionsToken) options:FirebaseOptions,
18+
@Optional() @Inject(FirebaseAppConfigToken) config:FirebaseAppConfig,
19+
@Optional() @Inject(FirebaseAppNameToken) name:string,
1920
@Optional() @Inject(RealtimeDatabaseURL) databaseURL:string,
2021
@Inject(PLATFORM_ID) platformId: Object,
2122
zone: NgZone
2223
) {
2324
this.scheduler = new FirebaseZoneScheduler(zone, platformId);
2425
this.database = zone.runOutsideAngular(() => {
25-
const app = _firebaseAppFactory(config, name);
26+
const app = _firebaseAppFactory(options, name, config);
2627
return app.database(databaseURL || undefined);
2728
});
2829
}

src/database/list/changes.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Reference } from '@firebase/database-types';
2-
import { FirebaseApp, FirebaseAppConfig, AngularFireModule } from 'angularfire2';
2+
import { FirebaseApp, AngularFireModule } from 'angularfire2';
33
import { AngularFireDatabase, AngularFireDatabaseModule, listChanges } from 'angularfire2/database';
44
import { TestBed, inject } from '@angular/core/testing';
55
import { COMMON_CONFIG } from '../test-config';

src/database/list/snapshot-changes.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Reference } from '@firebase/database-types';
2-
import { FirebaseApp, FirebaseAppConfig, AngularFireModule } from 'angularfire2';
2+
import { FirebaseApp, AngularFireModule } from 'angularfire2';
33
import { AngularFireDatabase, AngularFireDatabaseModule, snapshotChanges, ChildEvent } from 'angularfire2/database';
44
import { TestBed, inject } from '@angular/core/testing';
55
import { COMMON_CONFIG } from '../test-config';

src/database/list/state-changes.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Reference } from '@firebase/database-types';
2-
import { FirebaseApp, FirebaseAppConfig, AngularFireModule } from 'angularfire2';
2+
import { FirebaseApp, AngularFireModule } from 'angularfire2';
33
import { AngularFireDatabase, AngularFireDatabaseModule, stateChanges, ChildEvent } from 'angularfire2/database';
44
import { TestBed, inject } from '@angular/core/testing';
55
import { COMMON_CONFIG } from '../test-config';

src/firestore/collection/collection.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { FirebaseApp, FirebaseAppConfig, AngularFireModule } from 'angularfire2';
1+
import { FirebaseApp, AngularFireModule } from 'angularfire2';
22
import { AngularFirestore } from '../firestore';
33
import { AngularFirestoreModule } from '../firestore.module';
44
import { AngularFirestoreDocument } from '../document/document';

src/firestore/document/document.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { FirebaseApp, FirebaseAppConfig, AngularFireModule } from 'angularfire2';
1+
import { FirebaseApp, AngularFireModule } from 'angularfire2';
22
import { AngularFirestore } from '../firestore';
33
import { AngularFirestoreModule } from '../firestore.module';
44
import { AngularFirestoreDocument } from '../document/document';

src/firestore/firestore.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { FirebaseApp, FirebaseAppConfig, AngularFireModule, FirebaseAppName } from 'angularfire2';
1+
import { FirebaseApp, FirebaseOptionsToken, AngularFireModule, FirebaseAppNameToken } from 'angularfire2';
22
import { AngularFirestore } from './firestore';
33
import { AngularFirestoreModule } from './firestore.module';
44
import { AngularFirestoreDocument } from './document/document';
@@ -105,8 +105,8 @@ describe('AngularFirestore with different app', () => {
105105
AngularFirestoreModule
106106
],
107107
providers: [
108-
{ provide: FirebaseAppName, useValue: FIREBASE_APP_NAME_TOO },
109-
{ provide: FirebaseAppConfig, useValue: COMMON_CONFIG }
108+
{ provide: FirebaseAppNameToken, useValue: FIREBASE_APP_NAME_TOO },
109+
{ provide: FirebaseOptionsToken, useValue: COMMON_CONFIG }
110110
]
111111
});
112112
inject([FirebaseApp, AngularFirestore], (app_: FirebaseApp, _afs: AngularFirestore) => {

src/firestore/firestore.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ import { Observable, Subscriber } from 'rxjs';
55
import { map, catchError } from 'rxjs/operators';
66
import { of } from 'rxjs/observable/of';
77
import { from } from 'rxjs/observable/from';
8-
import { FirebaseOptions } from '@firebase/app-types';
8+
import { FirebaseOptions, FirebaseAppConfig } from '@firebase/app-types';
99
import { Injectable, Inject, Optional } from '@angular/core';
1010

1111
import { QueryFn, AssociatedReference } from './interfaces';
1212
import { AngularFirestoreDocument } from './document/document';
1313
import { AngularFirestoreCollection } from './collection/collection';
1414

15-
import { FirebaseAppConfig, FirebaseAppName, _firebaseAppFactory, FirebaseZoneScheduler } from 'angularfire2';
15+
import { FirebaseAppConfigToken, FirebaseOptionsToken, FirebaseAppNameToken, _firebaseAppFactory, FirebaseZoneScheduler } from 'angularfire2';
1616

1717
/**
1818
* The value of this token determines whether or not the firestore will have persistance enabled
@@ -106,15 +106,16 @@ export class AngularFirestore {
106106
* @param app
107107
*/
108108
constructor(
109-
@Inject(FirebaseAppConfig) config:FirebaseOptions,
110-
@Optional() @Inject(FirebaseAppName) name:string,
109+
@Inject(FirebaseOptionsToken) options:FirebaseOptions,
110+
@Optional() @Inject(FirebaseAppConfigToken) config:FirebaseAppConfig,
111+
@Optional() @Inject(FirebaseAppNameToken) name:string,
111112
@Optional() @Inject(EnablePersistenceToken) shouldEnablePersistence: boolean,
112113
@Inject(PLATFORM_ID) platformId: Object,
113114
zone: NgZone
114115
) {
115116
this.scheduler = new FirebaseZoneScheduler(zone, platformId);
116117
this.firestore = zone.runOutsideAngular(() => {
117-
const app = _firebaseAppFactory(config, name);
118+
const app = _firebaseAppFactory(options, name, config);
118119
return app.firestore();
119120
});
120121

src/storage/storage.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { Observable } from 'rxjs'
22
import { forkJoin } from 'rxjs/observable/forkJoin';
33
import { map, mergeMap, tap } from 'rxjs/operators';
44
import { TestBed, inject } from '@angular/core/testing';
5-
import { FirebaseApp, FirebaseAppConfig, AngularFireModule, FirebaseAppName } from 'angularfire2';
5+
import { FirebaseApp, FirebaseOptionsToken, AngularFireModule, FirebaseAppNameToken } from 'angularfire2';
66
import { AngularFireStorageModule, AngularFireStorage, AngularFireUploadTask, StorageBucket } from 'angularfire2/storage';
77
import { COMMON_CONFIG } from './test-config';
88

@@ -140,8 +140,8 @@ describe('AngularFireStorage w/options', () => {
140140
AngularFireStorageModule
141141
],
142142
providers: [
143-
{ provide: FirebaseAppName, useValue: FIREBASE_APP_NAME_TOO },
144-
{ provide: FirebaseAppConfig, useValue: COMMON_CONFIG },
143+
{ provide: FirebaseAppNameToken, useValue: FIREBASE_APP_NAME_TOO },
144+
{ provide: FirebaseOptionsToken, useValue: COMMON_CONFIG },
145145
{ provide: StorageBucket, useValue: FIREBASE_STORAGE_BUCKET }
146146
]
147147
});

src/storage/storage.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import { FirebaseStorage, UploadMetadata } from '@firebase/storage-types';
33
import { createStorageRef, AngularFireStorageReference } from './ref';
44
import { createUploadTask, AngularFireUploadTask } from './task';
55
import { Observable } from 'rxjs';
6-
import { FirebaseAppConfig, FirebaseAppName, FirebaseZoneScheduler, _firebaseAppFactory } from 'angularfire2';
7-
import { FirebaseOptions } from '@firebase/app-types';
6+
import { FirebaseAppConfigToken, FirebaseOptionsToken, FirebaseAppNameToken, FirebaseZoneScheduler, _firebaseAppFactory } from 'angularfire2';
7+
import { FirebaseOptions, FirebaseAppConfig } from '@firebase/app-types';
88

99
export const StorageBucket = new InjectionToken<string>('angularfire2.storageBucket');
1010

@@ -21,15 +21,16 @@ export class AngularFireStorage {
2121
public readonly scheduler: FirebaseZoneScheduler;
2222

2323
constructor(
24-
@Inject(FirebaseAppConfig) config:FirebaseOptions,
25-
@Optional() @Inject(FirebaseAppName) name:string,
24+
@Inject(FirebaseOptionsToken) options:FirebaseOptions,
25+
@Optional() @Inject(FirebaseAppConfigToken) config:FirebaseAppConfig,
26+
@Optional() @Inject(FirebaseAppNameToken) name:string,
2627
@Optional() @Inject(StorageBucket) storageBucket:string,
2728
@Inject(PLATFORM_ID) platformId: Object,
2829
zone: NgZone
2930
) {
3031
this.scheduler = new FirebaseZoneScheduler(zone, platformId);
3132
this.storage = zone.runOutsideAngular(() => {
32-
const app = _firebaseAppFactory(config, name);
33+
const app = _firebaseAppFactory(options, name, config);
3334
return app.storage(storageBucket || undefined);
3435
});
3536
}

0 commit comments

Comments
 (0)