@@ -98,10 +98,10 @@ firebase.toHashMap = obj => {
9898 if ( obj [ property ] === null ) {
9999 node . put ( property , null ) ;
100100 } else {
101- if ( obj [ property ] instanceof Date ) {
102- node . put ( property , new java . util . Date ( obj [ property ] . getTime ( ) ) ) ;
103- } else if ( Array . isArray ( obj [ property ] ) ) {
104- node . put ( property , firebase . toJavaArray ( obj [ property ] ) ) ;
101+ if ( obj [ property ] instanceof Date ) {
102+ node . put ( property , new java . util . Date ( obj [ property ] . getTime ( ) ) ) ;
103+ } else if ( Array . isArray ( obj [ property ] ) ) {
104+ node . put ( property , firebase . toJavaArray ( obj [ property ] ) ) ;
105105 } else {
106106 switch ( typeof obj [ property ] ) {
107107 case 'object' :
@@ -128,8 +128,8 @@ firebase.toHashMap = obj => {
128128} ;
129129
130130firebase . toJavaArray = val => {
131- var javaArray = new java . util . ArrayList ( ) ;
132- for ( var i = 0 ; i < val . length ; i ++ ) {
131+ const javaArray = new java . util . ArrayList ( ) ;
132+ for ( let i = 0 ; i < val . length ; i ++ ) {
133133 javaArray . add ( firebase . toValue ( val [ i ] ) ) ;
134134 }
135135 return javaArray ;
@@ -139,10 +139,10 @@ firebase.toValue = val => {
139139 let returnVal = null ;
140140 if ( val !== null ) {
141141
142- if ( val instanceof Date ) {
142+ if ( val instanceof Date ) {
143143 return new java . util . Date ( val . getTime ( ) ) ;
144144 }
145- if ( Array . isArray ( val ) ) {
145+ if ( Array . isArray ( val ) ) {
146146 return firebase . toJavaArray ( val ) ;
147147 }
148148
@@ -220,6 +220,11 @@ firebase.authStateListener = null;
220220
221221firebase . init = arg => {
222222 return new Promise ( ( resolve , reject ) => {
223+ if ( firebase . initialized ) {
224+ reject ( "Firebase already initialized" ) ;
225+ }
226+ firebase . initialized = true ;
227+
223228 const runInit = ( ) => {
224229 arg = arg || { } ;
225230
@@ -230,18 +235,24 @@ firebase.init = arg => {
230235
231236 const fDatabase = com . google . firebase . database . FirebaseDatabase ;
232237 if ( arg . persist ) {
233- fDatabase . getInstance ( ) . setPersistenceEnabled ( true ) ;
238+ try {
239+ fDatabase . getInstance ( ) . setPersistenceEnabled ( true ) ;
240+ } catch ( ignore ) {
241+ }
234242 }
235243 firebase . instance = fDatabase . getInstance ( ) . getReference ( ) ;
236244 }
237245
238246 if ( typeof ( com . google . firebase . firestore ) !== "undefined" ) {
239247 // Firestore has offline persistence enabled by default
240248 if ( ! arg . persist ) {
241- com . google . firebase . firestore . FirebaseFirestore . getInstance ( ) . setFirestoreSettings (
242- new com . google . firebase . firestore . FirebaseFirestoreSettings . Builder ( )
243- . setPersistenceEnabled ( false )
244- . build ( ) ) ;
249+ try {
250+ com . google . firebase . firestore . FirebaseFirestore . getInstance ( ) . setFirestoreSettings (
251+ new com . google . firebase . firestore . FirebaseFirestoreSettings . Builder ( )
252+ . setPersistenceEnabled ( false )
253+ . build ( ) ) ;
254+ } catch ( ignore ) {
255+ }
245256 }
246257 }
247258
@@ -2230,7 +2241,8 @@ firebase.firestore.collection = (collectionPath: string): firestore.CollectionRe
22302241 get : ( ) => firebase . firestore . get ( collectionPath ) ,
22312242 where : ( fieldPath : string , opStr : firestore . WhereFilterOp , value : any ) => firebase . firestore . where ( collectionPath , fieldPath , opStr , value ) ,
22322243 orderBy : ( fieldPath : string , directionStr : firestore . OrderByDirection ) : firestore . Query => firebase . firestore . orderBy ( collectionPath , fieldPath , directionStr , collectionRef ) ,
2233- limit : ( limit : number ) : firestore . Query => firebase . firestore . limit ( collectionPath , limit , collectionRef )
2244+ limit : ( limit : number ) : firestore . Query => firebase . firestore . limit ( collectionPath , limit , collectionRef ) ,
2245+ onSnapshot : ( callback : ( snapshot : QuerySnapshot ) => void ) => firebase . firestore . onCollectionSnapshot ( collectionRef , callback )
22342246 } ;
22352247
22362248 } catch ( ex ) {
@@ -2239,7 +2251,7 @@ firebase.firestore.collection = (collectionPath: string): firestore.CollectionRe
22392251 }
22402252} ;
22412253
2242- firebase . firestore . onSnapshot = ( docRef : com . google . firebase . firestore . DocumentReference , callback : ( doc : DocumentSnapshot ) => void ) : ( ) => void => {
2254+ firebase . firestore . onDocumentSnapshot = ( docRef : com . google . firebase . firestore . DocumentReference , callback : ( doc : DocumentSnapshot ) => void ) : ( ) => void => {
22432255 const listener = docRef . addSnapshotListener ( new com . google . firebase . firestore . EventListener ( {
22442256 onEvent : ( ( snapshot : com . google . firebase . firestore . DocumentSnapshot , exception ) => {
22452257 if ( exception !== null ) {
@@ -2256,6 +2268,28 @@ firebase.firestore.onSnapshot = (docRef: com.google.firebase.firestore.DocumentR
22562268 return ( ) => listener . remove ( ) ;
22572269} ;
22582270
2271+ firebase . firestore . onCollectionSnapshot = ( colRef : com . google . firebase . firestore . CollectionReference , callback : ( snapshot : QuerySnapshot ) => void ) : ( ) => void => {
2272+ const listener = colRef . addSnapshotListener ( new com . google . firebase . firestore . EventListener ( {
2273+ onEvent : ( ( snapshot : com . google . firebase . firestore . QuerySnapshot , exception ) => {
2274+ if ( exception !== null ) {
2275+ return ;
2276+ }
2277+
2278+ const docSnapshots : Array < firestore . DocumentSnapshot > = [ ] ;
2279+ for ( let i = 0 ; i < snapshot . size ( ) ; i ++ ) {
2280+ const documentSnapshot : com . google . firebase . firestore . DocumentSnapshot = snapshot . getDocuments ( ) . get ( i ) ;
2281+ docSnapshots . push ( new DocumentSnapshot ( documentSnapshot . getId ( ) , true , ( ) => firebase . toJsObject ( documentSnapshot . getData ( ) ) ) ) ;
2282+ }
2283+ const snap = new QuerySnapshot ( ) ;
2284+ snap . docSnapshots = docSnapshots ;
2285+ callback ( snap ) ;
2286+ } )
2287+ } )
2288+ ) ;
2289+
2290+ return ( ) => listener . remove ( ) ;
2291+ } ;
2292+
22592293firebase . firestore . doc = ( collectionPath : string , documentPath ?: string ) : firestore . DocumentReference => {
22602294 try {
22612295
@@ -2275,7 +2309,7 @@ firebase.firestore.doc = (collectionPath: string, documentPath?: string): firest
22752309 get : ( ) => firebase . firestore . getDocument ( collectionPath , docRef . getId ( ) ) ,
22762310 update : ( data : any ) => firebase . firestore . update ( collectionPath , docRef . getId ( ) , data ) ,
22772311 delete : ( ) => firebase . firestore . delete ( collectionPath , docRef . getId ( ) ) ,
2278- onSnapshot : ( callback : ( doc : DocumentSnapshot ) => void ) => firebase . firestore . onSnapshot ( docRef , callback )
2312+ onSnapshot : ( callback : ( doc : DocumentSnapshot ) => void ) => firebase . firestore . onDocumentSnapshot ( docRef , callback )
22792313 } ;
22802314
22812315 } catch ( ex ) {
@@ -2304,7 +2338,7 @@ firebase.firestore.add = (collectionPath: string, document: any): Promise<firest
23042338 get : ( ) => firebase . firestore . getDocument ( collectionPath , docRef . getId ( ) ) ,
23052339 update : ( data : any ) => firebase . firestore . update ( collectionPath , docRef . getId ( ) , data ) ,
23062340 delete : ( ) => firebase . firestore . delete ( collectionPath , docRef . getId ( ) ) ,
2307- onSnapshot : ( callback : ( doc : DocumentSnapshot ) => void ) => firebase . firestore . onSnapshot ( docRef , callback )
2341+ onSnapshot : ( callback : ( doc : DocumentSnapshot ) => void ) => firebase . firestore . onDocumentSnapshot ( docRef , callback )
23082342 } ) ;
23092343 }
23102344 } ) ;
@@ -2548,7 +2582,8 @@ firebase.firestore._getQuery = (collectionPath: string, query: com.google.fireba
25482582 } ) ,
25492583 where : ( fp : string , os : firestore . WhereFilterOp , v : any ) => firebase . firestore . where ( collectionPath , fp , os , v , query ) ,
25502584 orderBy : ( fp : string , directionStr : firestore . OrderByDirection ) : firestore . Query => firebase . firestore . orderBy ( collectionPath , fp , directionStr , query ) ,
2551- limit : ( limit : number ) : firestore . Query => firebase . firestore . limit ( collectionPath , limit , query )
2585+ limit : ( limit : number ) : firestore . Query => firebase . firestore . limit ( collectionPath , limit , query ) ,
2586+ onSnapshot : ( callback : ( snapshot : QuerySnapshot ) => void ) => firebase . firestore . onCollectionSnapshot ( query , callback )
25522587 } ;
25532588} ;
25542589
0 commit comments