@@ -1640,41 +1640,36 @@ class Query implements QueryBase {
16401640 this . query = this . dbRef ;
16411641 }
16421642
1643- on ( eventType : string , callback : ( a : any , b ?: string ) => any ) : Promise < any > {
1643+ on ( eventType : string , callback : ( a : any , b ?: string ) => any ) : Function {
16441644 const onValueEvent = result => {
1645- callback ( result ) ;
1645+ callback ( result ) ;
16461646 } ;
16471647
1648- return new Promise ( ( resolve , reject ) => {
1649- try {
1650- if ( firebase . instance === null ) {
1651- reject ( "Run init() first!" ) ;
1652- return ;
1653- }
1654- const listener = this . createEventListener ( eventType , onValueEvent ) ;
1648+ try {
1649+ if ( firebase . instance === null ) {
1650+ throw new Error ( "Run init() first!" ) ;
1651+ }
1652+ const listener = this . createEventListener ( eventType , onValueEvent ) ;
16551653
1656- if ( eventType === "value" ) {
1657- this . query . addValueEventListener ( listener as com . google . firebase . database . ValueEventListener ) ;
1658- } else if ( eventType === "child_added" || eventType === "child_changed" || eventType === "child_removed" || eventType === "child_moved" ) {
1659- this . query . addChildEventListener ( listener as com . google . firebase . database . ChildEventListener ) ;
1660- } else {
1661- callback ( {
1662- error : "Invalid eventType. Use one of the following: 'value', 'child_added', 'child_changed', 'child_removed', or 'child_moved'"
1663- } ) ;
1664- reject ( "Invalid eventType. Use one of the following: 'value', 'child_added', 'child_changed', 'child_removed', or 'child_moved'" ) ;
1665- return ;
1666- }
1667- // Add listener to our map which keeps track of eventType: child/value events
1668- if ( ! Query . eventListenerMap . has ( eventType ) ) {
1669- Query . eventListenerMap . set ( eventType , [ ] ) ;
1670- }
1671- Query . eventListenerMap . get ( eventType ) . push ( listener ) ; // We need to keep track of the listeners to fully remove them when calling off
1672- resolve ( ) ;
1673- } catch ( ex ) {
1674- console . log ( "Error in firebase.on: " + ex ) ;
1675- reject ( ex ) ;
1654+ if ( eventType === "value" ) {
1655+ this . query . addValueEventListener ( listener as com . google . firebase . database . ValueEventListener ) ;
1656+ } else if ( eventType === "child_added" || eventType === "child_changed" || eventType === "child_removed" || eventType === "child_moved" ) {
1657+ this . query . addChildEventListener ( listener as com . google . firebase . database . ChildEventListener ) ;
1658+ } else {
1659+ callback ( {
1660+ error : "Invalid eventType. Use one of the following: 'value', 'child_added', 'child_changed', 'child_removed', or 'child_moved'"
1661+ } ) ;
16761662 }
1677- } ) ;
1663+ // Add listener to our map which keeps track of eventType: child/value events
1664+ if ( ! Query . eventListenerMap . has ( eventType ) ) {
1665+ Query . eventListenerMap . set ( eventType , [ ] ) ;
1666+ }
1667+ Query . eventListenerMap . get ( eventType ) . push ( listener ) ; // We need to keep track of the listeners to fully remove them when calling off
1668+ } catch ( ex ) {
1669+ console . error ( "Error in firebase.on: " + ex ) ;
1670+ } finally {
1671+ return callback ;
1672+ }
16781673 }
16791674
16801675 once ( eventType : string ) : Promise < DataSnapshot > {
@@ -2116,6 +2111,9 @@ firebase.transaction = (path: string, transactionUpdate: (currentState) => any,
21162111 } ) ;
21172112} ;
21182113
2114+ function nativeRefToWebRef ( ref : com . google . firebase . database . DatabaseReference ) {
2115+
2116+ }
21192117// Converts Android DataSnapshot into Web Datasnapshot
21202118function nativeSnapshotToWebSnapshot ( snapshot : com . google . firebase . database . DataSnapshot ) : DataSnapshot {
21212119 function forEach ( action : ( datasnapshot : DataSnapshot ) => any ) : boolean {
@@ -2131,7 +2129,7 @@ function nativeSnapshotToWebSnapshot(snapshot: com.google.firebase.database.Data
21312129
21322130 return {
21332131 key : snapshot . getKey ( ) ,
2134- ref : snapshot . getRef ( ) ,
2132+ // ref: snapshot.getRef(), TODO: Convert native ref to webRef
21352133 child : ( path : string ) => nativeSnapshotToWebSnapshot ( snapshot . child ( path ) ) ,
21362134 exists : ( ) => snapshot . exists ( ) ,
21372135 forEach : ( func : ( datasnapshot ) => any ) => forEach ( func ) ,
0 commit comments