11import { InjectionToken , NgZone , PLATFORM_ID } from '@angular/core' ;
2- import { FirebaseFirestore , CollectionReference , DocumentReference } from '@firebase/firestore-types' ;
2+ import { FirebaseFirestore , CollectionReference , DocumentReference , Settings } from '@firebase/firestore-types' ;
33
44import { Observable , Subscriber } from 'rxjs' ;
55import { map , catchError } from 'rxjs/operators' ;
@@ -18,7 +18,9 @@ import { FirebaseAppConfigToken, FirebaseOptionsToken, FirebaseAppNameToken, _fi
1818 * The value of this token determines whether or not the firestore will have persistance enabled
1919 */
2020export const EnablePersistenceToken = new InjectionToken < boolean > ( 'angularfire2.enableFirestorePersistence' ) ;
21+ export const FirestoreSettingsToken = new InjectionToken < Settings > ( 'angularfire2.firestore.settings' ) ;
2122
23+ export const DefaultFirestoreSettings = { timestampsInSnapshots : true } as Settings ;
2224
2325/**
2426 * A utility methods for associating a collection reference with
@@ -110,13 +112,16 @@ export class AngularFirestore {
110112 @Optional ( ) @Inject ( FirebaseAppConfigToken ) config :FirebaseAppConfig ,
111113 @Optional ( ) @Inject ( FirebaseAppNameToken ) name :string ,
112114 @Optional ( ) @Inject ( EnablePersistenceToken ) shouldEnablePersistence : boolean ,
115+ @Optional ( ) @Inject ( FirestoreSettingsToken ) settings : Settings ,
113116 @Inject ( PLATFORM_ID ) platformId : Object ,
114117 zone : NgZone
115118 ) {
116119 this . scheduler = new FirebaseZoneScheduler ( zone , platformId ) ;
117120 this . firestore = zone . runOutsideAngular ( ( ) => {
118- const app = _firebaseAppFactory ( options , name , config ) ;
119- return app . firestore ( ) ;
121+ const app = _firebaseAppFactory ( config , name ) ;
122+ const firestore = app . firestore ( ) ;
123+ firestore . settings ( settings || DefaultFirestoreSettings ) ;
124+ return firestore ;
120125 } ) ;
121126
122127 this . persistenceEnabled$ = zone . runOutsideAngular ( ( ) =>
0 commit comments