@@ -6,63 +6,68 @@ import FirebaseDatabase
6
6
import Flutter
7
7
8
8
@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
17
26
}
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
+ }
61
40
}
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
+ }
67
59
}
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
+ }
68
73
}
0 commit comments