Skip to content

Commit 1c3e423

Browse files
committed
FirebaseApp was not stable...
1 parent c239c02 commit 1c3e423

File tree

8 files changed

+11
-10
lines changed

8 files changed

+11
-10
lines changed

src/auth/auth.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ export class AngularFireAuth {
4444
) {
4545
const scheduler = new FirebaseZoneScheduler(zone, platformId);
4646
this.auth = zone.runOutsideAngular(() => {
47-
const app = _firebaseAppFactory(options, nameOrConfig);
47+
const app = _firebaseAppFactory(options, zone, nameOrConfig);
4848
return app.auth();
4949
});
5050

src/core/firebase.app.module.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { InjectionToken, NgModule, Optional } from '@angular/core';
1+
import { InjectionToken, NgModule, Optional, NgZone } from '@angular/core';
22
import { auth, database, firestore, functions, messaging, storage } from 'firebase/app';
33
// @ts-ignore (https://github.com/firebase/firebase-js-sdk/pull/1206)
44
import firebase from 'firebase/app'; // once fixed can pull in as "default as firebase" above
@@ -32,22 +32,23 @@ export class FirebaseApp {
3232
functions: (region?: string) => FirebaseFunctions;
3333
}
3434

35-
export function _firebaseAppFactory(options: FirebaseOptions, nameOrConfig?: string|FirebaseAppConfig|null) {
35+
export function _firebaseAppFactory(options: FirebaseOptions, zone: NgZone, nameOrConfig?: string|FirebaseAppConfig|null) {
3636
const name = typeof nameOrConfig === 'string' && nameOrConfig || '[DEFAULT]';
3737
const config = typeof nameOrConfig === 'object' && nameOrConfig || {};
3838
config.name = config.name || name;
3939
// Added any due to some inconsistency between @firebase/app and firebase types
4040
const existingApp = firebase.apps.filter(app => app && app.name === config.name)[0] as any;
4141
// We support FirebaseConfig, initializeApp's public type only accepts string; need to cast as any
4242
// Could be solved with https://github.com/firebase/firebase-js-sdk/pull/1206
43-
return (existingApp || firebase.initializeApp(options, config as any)) as FirebaseApp;
43+
return (existingApp || zone.runOutsideAngular(() => firebase.initializeApp(options, config as any))) as FirebaseApp;
4444
}
4545

4646
const FirebaseAppProvider = {
4747
provide: FirebaseApp,
4848
useFactory: _firebaseAppFactory,
4949
deps: [
5050
FirebaseOptionsToken,
51+
NgZone,
5152
[new Optional(), FirebaseNameOrConfigToken]
5253
]
5354
};

src/database-deprecated/database.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export class AngularFireDatabase {
2222
zone: NgZone
2323
) {
2424
this.database = zone.runOutsideAngular(() => {
25-
const app = _firebaseAppFactory(options, nameOrConfig);
25+
const app = _firebaseAppFactory(options, zone, nameOrConfig);
2626
return app.database(databaseURL || undefined);
2727
});
2828
}

src/database/database.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export class AngularFireDatabase {
2020
) {
2121
this.scheduler = new FirebaseZoneScheduler(zone, platformId);
2222
this.database = zone.runOutsideAngular(() => {
23-
const app = _firebaseAppFactory(options, nameOrConfig);
23+
const app = _firebaseAppFactory(options, zone, nameOrConfig);
2424
return app.database(databaseURL || undefined);
2525
});
2626
}

src/firestore/firestore.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ export class AngularFirestore {
125125
) {
126126
this.scheduler = new FirebaseZoneScheduler(zone, platformId);
127127
this.firestore = zone.runOutsideAngular(() => {
128-
const app = _firebaseAppFactory(options, nameOrConfig);
128+
const app = _firebaseAppFactory(options, zone, nameOrConfig);
129129
const firestore = app.firestore();
130130
firestore.settings(settings || DefaultFirestoreSettings);
131131
return firestore;

src/functions/functions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export class AngularFireFunctions {
3030
this.scheduler = new FirebaseZoneScheduler(zone, platformId);
3131

3232
this.functions = zone.runOutsideAngular(() => {
33-
const app = _firebaseAppFactory(options, nameOrConfig);
33+
const app = _firebaseAppFactory(options, zone, nameOrConfig);
3434
return app.functions(region || undefined);
3535
});
3636

src/messaging/messaging.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export class AngularFireMessaging {
2727
const requireMessaging = from(import('firebase/messaging'));
2828

2929
this.messaging = requireMessaging.pipe(
30-
map(() => _firebaseAppFactory(options, nameOrConfig)),
30+
map(() => _firebaseAppFactory(options, zone, nameOrConfig)),
3131
map(app => app.messaging()),
3232
runOutsideAngular(zone)
3333
);

src/storage/storage.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export class AngularFireStorage {
2929
) {
3030
this.scheduler = new FirebaseZoneScheduler(zone, platformId);
3131
this.storage = zone.runOutsideAngular(() => {
32-
const app = _firebaseAppFactory(options, nameOrConfig);
32+
const app = _firebaseAppFactory(options, zone, nameOrConfig);
3333
return app.storage(storageBucket || undefined);
3434
});
3535
}

0 commit comments

Comments
 (0)