| 205 | _handles: Map<(a: DataSnapshot, b: string) => void, com.google.firebase.database.ValueEventListener | com.google.firebase.database.ChildEventListener> = new Map(); |
| 206 | |
| 207 | on(eventType: EventType, callback: (data: DataSnapshot, previousChildKey: string) => void, cancelCallbackOrContext?: (a: FirebaseError) => void | Record<string, any>, context?: Record<string, any>): (a: DataSnapshot, b: string) => void { |
| 208 | let handle; |
| 209 | if (eventType === 'value') { |
| 210 | handle = this.native.addValueEventListener( |
| 211 | new com.google.firebase.database.ValueEventListener({ |
| 212 | onDataChange(param0: com.google.firebase.database.DataSnapshot) { |
| 213 | callback?.(DataSnapshot.fromNative(param0), null); |
| 214 | }, |
| 215 | onCancelled(param0: com.google.firebase.database.DatabaseError) { |
| 216 | const err = FirebaseError.fromNative(param0); |
| 217 | cancelCallbackOrContext?.(err); |
| 218 | }, |
| 219 | }) |
| 220 | ); |
| 221 | } else { |
| 222 | handle = this.native.addChildEventListener( |
| 223 | new com.google.firebase.database.ChildEventListener({ |
| 224 | onChildAdded(param0: com.google.firebase.database.DataSnapshot, param1: string) { |
| 225 | if (eventType === 'child_added') { |
| 226 | callback?.(DataSnapshot.fromNative(param0), param1); |
| 227 | } |
| 228 | }, |
| 229 | onChildChanged(param0: com.google.firebase.database.DataSnapshot, param1: string) { |
| 230 | if (eventType === 'child_changed') { |
| 231 | callback?.(DataSnapshot.fromNative(param0), param1); |
| 232 | } |
| 233 | }, |
| 234 | onChildRemoved(param0: com.google.firebase.database.DataSnapshot) { |
| 235 | if (eventType === 'child_removed') { |
| 236 | callback?.(DataSnapshot.fromNative(param0), null); |
| 237 | } |
| 238 | }, |
| 239 | onChildMoved(param0: com.google.firebase.database.DataSnapshot, param1: string) { |
| 240 | if (eventType === 'child_moved') { |
| 241 | callback?.(DataSnapshot.fromNative(param0), param1); |
| 242 | } |
| 243 | }, |
| 244 | onCancelled(param0: com.google.firebase.database.DatabaseError) { |
| 245 | const err = FirebaseError.fromNative(param0); |
| 246 | cancelCallbackOrContext?.(err); |
| 247 | }, |
| 248 | }) |
| 249 | ); |
| 250 | } |
| 251 | |
| 252 | callback['__fbHandle'] = handle; |
| 253 | callback['__fbEventType'] = eventType; |
| 254 | callback['__fbContext'] = context; |
| 255 | |
| 256 | this._handles.set(callback, handle); |
| 257 | |
| 258 | return callback; |
| 259 | } |
| 260 | |
| 261 | once(eventType: EventType, successCallback?: (a: DataSnapshot, b: string) => any, failureCallbackContext?: (a: FirebaseError) => void | Record<string, any>): Promise<DataSnapshot> { |
| 262 | return new Promise((resolve, reject) => { |