@@ -6,63 +6,68 @@ import FirebaseDatabase
66import Flutter
77
88@objc class FLTFirebaseDatabaseObserveStreamHandler : NSObject , FlutterStreamHandler {
9- private var databaseHandle : DatabaseHandle = 0
10- private let databaseQuery : DatabaseQuery
11- private let disposeBlock : ( ) -> Void
12-
13- init ( databaseQuery: DatabaseQuery , disposeBlock: @escaping ( ) -> Void ) {
14- self . databaseQuery = databaseQuery
15- self . disposeBlock = disposeBlock
16- super. init ( )
9+ private var databaseHandle : DatabaseHandle = 0
10+ private let databaseQuery : DatabaseQuery
11+ private let disposeBlock : ( ) -> Void
12+
13+ init ( databaseQuery: DatabaseQuery , disposeBlock: @escaping ( ) -> Void ) {
14+ self . databaseQuery = databaseQuery
15+ self . disposeBlock = disposeBlock
16+ super. init ( )
17+ }
18+
19+ func onListen( withArguments arguments: Any ? , eventSink events: @escaping FlutterEventSink )
20+ -> FlutterError ?
21+ {
22+ guard let args = arguments as? [ String : Any ] ,
23+ let eventTypeString = args [ " eventType " ] as? String
24+ else {
25+ return nil
1726 }
18-
19- func onListen( withArguments arguments: Any ? , eventSink events: @escaping FlutterEventSink ) -> FlutterError ? {
20- guard let args = arguments as? [ String : Any ] ,
21- let eventTypeString = args [ " eventType " ] as? String else {
22- return nil
23- }
24-
25- let observeBlock : ( DataSnapshot , String ? ) -> Void = { [ weak self] snapshot, previousChildKey in
26- var eventDictionary : [ String : Any ] = [
27- " eventType " : eventTypeString
28- ]
29-
30- let snapshotDict = FLTFirebaseDatabaseUtils . dictionary ( from: snapshot, withPreviousChildKey: previousChildKey)
31- eventDictionary. merge ( snapshotDict) { _, new in new }
32-
33- DispatchQueue . main. async {
34- events ( eventDictionary)
35- }
36- }
37-
38- let cancelBlock : ( Error ) -> Void = { [ weak self] error in
39- let codeAndMessage = FLTFirebaseDatabaseUtils . codeAndMessage ( from: error)
40- let code = codeAndMessage [ 0 ]
41- let message = codeAndMessage [ 1 ]
42- let details : [ String : Any ] = [
43- " code " : code,
44- " message " : message
45- ]
46-
47- DispatchQueue . main. async {
48- let flutterError = FlutterError (
49- code: code,
50- message: message,
51- details: details
52- )
53- events ( flutterError)
54- }
55- }
56-
57- let eventType = FLTFirebaseDatabaseUtils . eventType ( from: eventTypeString)
58- databaseHandle = databaseQuery. observe ( eventType, andPreviousSiblingKeyWith: observeBlock, withCancel: cancelBlock)
59-
60- return nil
27+
28+ let observeBlock : ( DataSnapshot , String ? ) -> Void = { [ weak self] snapshot, previousChildKey in
29+ var eventDictionary : [ String : Any ] = [
30+ " eventType " : eventTypeString
31+ ]
32+
33+ let snapshotDict = FLTFirebaseDatabaseUtils . dictionary (
34+ from: snapshot, withPreviousChildKey: previousChildKey)
35+ eventDictionary. merge ( snapshotDict) { _, new in new }
36+
37+ DispatchQueue . main. async {
38+ events ( eventDictionary)
39+ }
6140 }
62-
63- func onCancel( withArguments arguments: Any ? ) -> FlutterError ? {
64- disposeBlock ( )
65- databaseQuery. removeObserver ( withHandle: databaseHandle)
66- return nil
41+
42+ let cancelBlock : ( Error ) -> Void = { [ weak self] error in
43+ let codeAndMessage = FLTFirebaseDatabaseUtils . codeAndMessage ( from: error)
44+ let code = codeAndMessage [ 0 ]
45+ let message = codeAndMessage [ 1 ]
46+ let details : [ String : Any ] = [
47+ " code " : code,
48+ " message " : message,
49+ ]
50+
51+ DispatchQueue . main. async {
52+ let flutterError = FlutterError (
53+ code: code,
54+ message: message,
55+ details: details
56+ )
57+ events ( flutterError)
58+ }
6759 }
60+
61+ let eventType = FLTFirebaseDatabaseUtils . eventType ( from: eventTypeString)
62+ databaseHandle = databaseQuery. observe (
63+ eventType, andPreviousSiblingKeyWith: observeBlock, withCancel: cancelBlock)
64+
65+ return nil
66+ }
67+
68+ func onCancel( withArguments arguments: Any ? ) -> FlutterError ? {
69+ disposeBlock ( )
70+ databaseQuery. removeObserver ( withHandle: databaseHandle)
71+ return nil
72+ }
6873}
0 commit comments