@react-native-firebase/database 26.3.3 → 27.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/RNFBDatabase.podspec +10 -2
  3. package/android/build.gradle +7 -0
  4. package/android/src/main/java/io/invertase/firebase/database/DatabaseAbortable.java +22 -0
  5. package/android/src/main/java/io/invertase/firebase/database/DatabaseQueryHandle.java +24 -0
  6. package/android/src/main/java/io/invertase/firebase/database/RNFBDatabaseKeepSyncedRegistry.java +106 -0
  7. package/android/src/main/java/io/invertase/firebase/database/RNFBDatabaseListenerRegistry.kt +133 -0
  8. package/android/src/main/java/io/invertase/firebase/database/RNFBDatabaseQueryRegistry.kt +76 -0
  9. package/android/src/main/java/io/invertase/firebase/database/RNFBDatabaseTransactionRegistry.kt +67 -0
  10. package/android/src/main/java/io/invertase/firebase/database/UniversalFirebaseDatabaseOnDisconnectModule.java +102 -9
  11. package/android/src/reactnative/java/io/invertase/firebase/database/NativeRNFBTurboDatabaseOnDisconnect.java +6 -11
  12. package/android/src/reactnative/java/io/invertase/firebase/database/NativeRNFBTurboDatabaseQuery.java +111 -24
  13. package/android/src/reactnative/java/io/invertase/firebase/database/NativeRNFBTurboDatabaseTransaction.java +12 -25
  14. package/android/src/reactnative/java/io/invertase/firebase/database/ReactNativeFirebaseDatabaseQuery.java +30 -33
  15. package/android/src/reactnative/java/io/invertase/firebase/database/ReactNativeFirebaseDatabaseTransactionHandler.java +3 -3
  16. package/android/src/reactnative/java/io/invertase/firebase/database/generated/java/com/facebook/fbreact/specs/NativeRNFBTurboDatabaseQuerySpec.java +4 -0
  17. package/android/src/reactnative/java/io/invertase/firebase/database/generated/jni/RNFBDatabaseTurboModules-generated.cpp +6 -0
  18. package/android/src/reactnative/java/io/invertase/firebase/database/generated/jni/react/renderer/components/RNFBDatabaseTurboModules/RNFBDatabaseTurboModulesJSI.h +12 -0
  19. package/android/src/test/java/io/invertase/firebase/database/RNFBDatabaseKeepSyncedRegistryTest.java +174 -0
  20. package/android/src/test/java/io/invertase/firebase/database/RNFBDatabaseListenerRegistryTest.java +191 -0
  21. package/android/src/test/java/io/invertase/firebase/database/RNFBDatabaseQueryRegistryTest.java +489 -0
  22. package/android/src/test/java/io/invertase/firebase/database/RNFBDatabaseTransactionRegistryTest.java +199 -0
  23. package/android/src/test/java/io/invertase/firebase/database/UniversalFirebaseDatabaseOnDisconnectCancelErrorTest.java +137 -0
  24. package/dist/module/DatabaseQuery.js +52 -1
  25. package/dist/module/DatabaseQuery.js.map +1 -1
  26. package/dist/module/DatabaseSyncTree.js +1 -1
  27. package/dist/module/DatabaseSyncTree.js.map +1 -1
  28. package/dist/module/index.js +1 -2
  29. package/dist/module/index.js.map +1 -1
  30. package/dist/module/modular/query.js +1 -1
  31. package/dist/module/modular/query.js.map +1 -1
  32. package/dist/module/version.js +1 -1
  33. package/dist/module/web/RNFBDatabaseModule.js +7 -0
  34. package/dist/module/web/RNFBDatabaseModule.js.map +1 -1
  35. package/dist/typescript/lib/DatabaseQuery.d.ts +25 -0
  36. package/dist/typescript/lib/DatabaseQuery.d.ts.map +1 -1
  37. package/dist/typescript/lib/index.d.ts +1 -1
  38. package/dist/typescript/lib/types/internal.d.ts +2 -0
  39. package/dist/typescript/lib/types/internal.d.ts.map +1 -1
  40. package/dist/typescript/lib/version.d.ts +1 -1
  41. package/dist/typescript/lib/web/RNFBDatabaseModule.d.ts.map +1 -1
  42. package/ios/RNFBDatabase/RNFBDatabaseListenerRegistry.h +37 -0
  43. package/ios/RNFBDatabase/RNFBDatabaseListenerRegistry.m +91 -0
  44. package/ios/RNFBDatabase/RNFBDatabaseListenerRegistryStorage.swift +81 -0
  45. package/ios/RNFBDatabase/RNFBDatabaseNullSentinelDecoder.h +36 -0
  46. package/ios/RNFBDatabase/RNFBDatabaseNullSentinelDecoder.m +48 -0
  47. package/ios/RNFBDatabase/RNFBDatabaseOnDisconnectHelper.m +29 -26
  48. package/ios/RNFBDatabase/RNFBDatabaseQuery.h +3 -2
  49. package/ios/RNFBDatabase/RNFBDatabaseQuery.m +14 -13
  50. package/ios/RNFBDatabase/RNFBDatabaseQueryHelper.h +7 -0
  51. package/ios/RNFBDatabase/RNFBDatabaseQueryHelper.m +44 -21
  52. package/ios/RNFBDatabase/RNFBDatabaseQueryModule.mm +14 -0
  53. package/ios/RNFBDatabase/RNFBDatabaseQueryRegistry.h +37 -0
  54. package/ios/RNFBDatabase/RNFBDatabaseQueryRegistry.m +79 -0
  55. package/ios/RNFBDatabase/RNFBDatabaseQueryRegistryStorage.swift +104 -0
  56. package/ios/RNFBDatabase/RNFBDatabaseReferenceHelper.m +14 -12
  57. package/ios/RNFBDatabase/RNFBDatabaseTransactionHelper.m +3 -1
  58. package/ios/RNFBDatabase.xcodeproj/project.pbxproj +12 -0
  59. package/ios/RNFBDatabaseUnitTests/RNFBDatabaseListenerRegistryStorageTests.swift +86 -0
  60. package/ios/RNFBDatabaseUnitTests/RNFBDatabaseListenerRegistryTests.m +90 -0
  61. package/ios/RNFBDatabaseUnitTests/RNFBDatabaseNullSentinelDecodeTests.m +118 -0
  62. package/ios/RNFBDatabaseUnitTests/RNFBDatabaseQueryRegistryStorageTests.swift +181 -0
  63. package/ios/RNFBDatabaseUnitTests/RNFBDatabaseQueryRegistryTests.m +390 -0
  64. package/ios/RNFBDatabaseUnitTests/RNFBDatabaseUnitTests.xcodeproj/project.pbxproj +303 -0
  65. package/ios/RNFBDatabaseUnitTests/RNFBDatabaseUnitTests.xcodeproj/xcshareddata/xcschemes/RNFBDatabaseUnitTests.xcscheme +69 -0
  66. package/ios/generated/RNFBDatabaseTurboModules/RNFBDatabaseTurboModules-generated.mm +7 -0
  67. package/ios/generated/RNFBDatabaseTurboModules/RNFBDatabaseTurboModules.h +6 -0
  68. package/ios/generated/RNFBDatabaseTurboModulesJSI.h +12 -0
  69. package/lib/DatabaseQuery.ts +56 -0
  70. package/lib/DatabaseSyncTree.ts +1 -1
  71. package/lib/index.ts +1 -1
  72. package/lib/modular/query.ts +1 -1
  73. package/lib/types/internal.ts +2 -0
  74. package/lib/version.ts +1 -1
  75. package/lib/web/RNFBDatabaseModule.ts +13 -0
  76. package/package.json +5 -4
  77. package/specs/NativeRNFBTurboDatabaseQuery.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../../lib/types/internal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../../lib/types/internal.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const version = "26.3.3";
1
+ export declare const version = "27.0.0";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RNFBDatabaseModule.d.ts","sourceRoot":"","sources":["../../../../lib/web/RNFBDatabaseModule.ts"],"names":[],"mappings":"AA+HA,QAAA,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAgZnD,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"RNFBDatabaseModule.d.ts","sourceRoot":"","sources":["../../../../lib/web/RNFBDatabaseModule.ts"],"names":[],"mappings":"AA+HA,QAAA,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CA6ZnD,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Copyright (c) 2016-present Invertase Limited & Contributors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this library except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ */
17
+
18
+ #import <Foundation/Foundation.h>
19
+
20
+ NS_ASSUME_NONNULL_BEGIN
21
+
22
+ /**
23
+ * Per-query listener handle map. Unique `put`; callers `take` or `takeAll` then remove the SDK
24
+ * observer outside the HandleMap lock. Values are typically NSNumber observer handles.
25
+ */
26
+ @interface RNFBDatabaseListenerRegistry : NSObject
27
+
28
+ - (BOOL)put:(id)key value:(id)value error:(NSError *_Nullable *_Nullable)error;
29
+ - (nullable id)get:(id)key;
30
+ - (nullable id)take:(id)key;
31
+ - (NSArray *)takeAll;
32
+ - (BOOL)hasEventListener:(id)key;
33
+ - (BOOL)hasListeners;
34
+
35
+ @end
36
+
37
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Copyright (c) 2016-present Invertase Limited & Contributors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this library except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ */
17
+
18
+ #import "RNFBDatabaseListenerRegistry.h"
19
+
20
+ #if __has_include("RNFBHandleMap.h")
21
+ #import "RNFBHandleMap.h"
22
+ #else
23
+ #import "RNFBApp/RNFBHandleMap.h"
24
+ #endif
25
+
26
+ #if __has_include(<RNFBDatabase/RNFBDatabase-Swift.h>)
27
+ #import <RNFBDatabase/RNFBDatabase-Swift.h>
28
+ #elif __has_include("RNFBDatabase-Swift.h")
29
+ #import "RNFBDatabase-Swift.h"
30
+ #elif __has_include("RNFBHandleMapStorage-Swift.inc")
31
+ #import "RNFBHandleMapStorage-Swift.inc"
32
+ #else
33
+ #error "RNFBDatabaseListenerRegistryStorage Swift interface not found"
34
+ #endif
35
+
36
+ @interface RNFBDatabaseListenerRegistry ()
37
+ @property(nonatomic, strong) RNFBDatabaseListenerRegistryStorage *storage;
38
+ @end
39
+
40
+ @implementation RNFBDatabaseListenerRegistry
41
+
42
+ - (instancetype)init {
43
+ self = [super init];
44
+ if (self) {
45
+ _storage = [[RNFBDatabaseListenerRegistryStorage alloc] init];
46
+ }
47
+ return self;
48
+ }
49
+
50
+ - (BOOL)put:(id)key value:(id)value error:(NSError **)error {
51
+ @synchronized(self) {
52
+ if ([self.storage putIfAbsent:key value:value]) {
53
+ return YES;
54
+ }
55
+ if (error != nil) {
56
+ NSString *message = [NSString stringWithFormat:@"Handle id already registered: %@", key];
57
+ *error = [NSError errorWithDomain:RNFBHandleMapErrorDomain
58
+ code:RNFBHandleMapErrorCollision
59
+ userInfo:@{NSLocalizedDescriptionKey : message}];
60
+ }
61
+ return NO;
62
+ }
63
+ }
64
+
65
+ - (id)get:(id)key {
66
+ return [self.storage get:key];
67
+ }
68
+
69
+ - (id)take:(id)key {
70
+ @synchronized(self) {
71
+ return [self.storage take:key];
72
+ }
73
+ }
74
+
75
+ - (NSArray *)takeAll {
76
+ @synchronized(self) {
77
+ return [self.storage takeAll];
78
+ }
79
+ }
80
+
81
+ - (BOOL)hasEventListener:(id)key {
82
+ return [self.storage hasEventListener:key];
83
+ }
84
+
85
+ - (BOOL)hasListeners {
86
+ @synchronized(self) {
87
+ return [self.storage hasListeners];
88
+ }
89
+ }
90
+
91
+ @end
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Copyright (c) 2016-present Invertase Limited & Contributors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this library except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import Foundation
18
+
19
+ #if canImport(RNFBApp)
20
+ import RNFBApp
21
+ #endif
22
+
23
+ /// Per-query listener handle map storage. Composes `RNFBHandleMapStorage` and tracks
24
+ /// occupancy for `hasListeners`. Unique-put collision errors stay on the ObjC façade.
25
+ @objc(RNFBDatabaseListenerRegistryStorage)
26
+ public final class RNFBDatabaseListenerRegistryStorage: NSObject {
27
+ private let storage = RNFBHandleMapStorage()
28
+ private let lock = NSRecursiveLock()
29
+ private var occupancy = 0
30
+
31
+ /// First-wins store. Increments occupancy only on success.
32
+ @objc(putIfAbsent:value:)
33
+ public func putIfAbsent(_ key: AnyObject, value: AnyObject) -> Bool {
34
+ lock.withLock {
35
+ guard storage.putIfAbsent(key, value: value) else {
36
+ return false
37
+ }
38
+ occupancy += 1
39
+ return true
40
+ }
41
+ }
42
+
43
+ @objc(get:)
44
+ public func get(_ key: AnyObject) -> AnyObject? {
45
+ storage.get(key)
46
+ }
47
+
48
+ /// Removes and returns the value. Decrements occupancy when non-nil.
49
+ @objc(take:)
50
+ public func take(_ key: AnyObject) -> AnyObject? {
51
+ lock.withLock {
52
+ let value = storage.take(key)
53
+ if value != nil {
54
+ occupancy -= 1
55
+ }
56
+ return value
57
+ }
58
+ }
59
+
60
+ /// Snapshot then clear. Decrements occupancy by `remaining.count`.
61
+ @objc
62
+ public func takeAll() -> [AnyObject] {
63
+ lock.withLock {
64
+ let remaining = storage.takeAll()
65
+ occupancy -= remaining.count
66
+ return remaining
67
+ }
68
+ }
69
+
70
+ @objc(hasEventListener:)
71
+ public func hasEventListener(_ key: AnyObject) -> Bool {
72
+ storage.get(key) != nil
73
+ }
74
+
75
+ @objc
76
+ public var hasListeners: Bool {
77
+ lock.withLock {
78
+ occupancy > 0
79
+ }
80
+ }
81
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Copyright (c) 2016-present Invertase Limited & Contributors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this library except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ */
17
+
18
+ #import <Foundation/Foundation.h>
19
+
20
+ /**
21
+ * Decodes New Architecture null sentinels before Realtime Database writes. Used by the
22
+ * reference, onDisconnect and transaction helpers. Foundation only so unit tests can compile it
23
+ * without the Firebase SDK.
24
+ */
25
+ @interface RNFBDatabaseNullSentinelDecoder : NSObject
26
+
27
+ /** Top-level set(null) arrives as props.value = { __rnfbNull: true }. */
28
+ + (id)decodedValueFromProps:(NSDictionary *)props;
29
+
30
+ + (id)decodedValuesFromProps:(NSDictionary *)props;
31
+
32
+ + (id)decodedPriorityFromProps:(NSDictionary *)props;
33
+
34
+ + (id)decodedTransactionValue:(id)value;
35
+
36
+ @end
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Copyright (c) 2016-present Invertase Limited & Contributors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this library except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ *
16
+ */
17
+
18
+ #import "RNFBDatabaseNullSentinelDecoder.h"
19
+
20
+ #if __has_include(<RNFBApp/RNFBApp-Swift.h>)
21
+ #import <RNFBApp/RNFBApp-Swift.h>
22
+ #elif __has_include("RNFBApp-Swift.h")
23
+ #import "RNFBApp-Swift.h"
24
+ #elif __has_include("RNFBHandleMapStorage-Swift.inc")
25
+ #import "RNFBHandleMapStorage-Swift.inc"
26
+ #else
27
+ #error "RNFBApp Swift interface not found"
28
+ #endif
29
+
30
+ @implementation RNFBDatabaseNullSentinelDecoder
31
+
32
+ + (id)decodedValueFromProps:(NSDictionary *)props {
33
+ return [RNFBNullSentinelDecoder decodeNullSentinels:[props valueForKey:@"value"]];
34
+ }
35
+
36
+ + (id)decodedValuesFromProps:(NSDictionary *)props {
37
+ return [RNFBNullSentinelDecoder decodeNullSentinels:[props valueForKey:@"values"]];
38
+ }
39
+
40
+ + (id)decodedPriorityFromProps:(NSDictionary *)props {
41
+ return [RNFBNullSentinelDecoder decodeNullSentinels:[props valueForKey:@"priority"]];
42
+ }
43
+
44
+ + (id)decodedTransactionValue:(id)value {
45
+ return [RNFBNullSentinelDecoder decodeNullSentinels:value];
46
+ }
47
+
48
+ @end
@@ -24,6 +24,7 @@
24
24
 
25
25
  #import "RNFBApp/RCTConvert+FIRApp.h"
26
26
  #import "RNFBDatabaseCommon.h"
27
+ #import "RNFBDatabaseNullSentinelDecoder.h"
27
28
  #import "RNFBDatabaseOnDisconnectHelper.h"
28
29
 
29
30
  @implementation RNFBDatabaseOnDisconnectHelper
@@ -79,14 +80,15 @@
79
80
  FIRDatabaseReference *firDatabaseReference =
80
81
  [RNFBDatabaseCommon getReferenceForDatabase:firDatabase path:path];
81
82
 
82
- [firDatabaseReference onDisconnectSetValue:[props valueForKey:@"value"]
83
- withCompletionBlock:^(NSError *error, FIRDatabaseReference *ref) {
84
- if (error != nil) {
85
- [RNFBDatabaseCommon promiseRejectDatabaseException:reject error:error];
86
- } else {
87
- resolve([NSNull null]);
88
- }
89
- }];
83
+ [firDatabaseReference
84
+ onDisconnectSetValue:[RNFBDatabaseNullSentinelDecoder decodedValueFromProps:props]
85
+ withCompletionBlock:^(NSError *error, FIRDatabaseReference *ref) {
86
+ if (error != nil) {
87
+ [RNFBDatabaseCommon promiseRejectDatabaseException:reject error:error];
88
+ } else {
89
+ resolve([NSNull null]);
90
+ }
91
+ }];
90
92
  }
91
93
 
92
94
  + (void)onDisconnectSetWithPriority:(NSString *)app
@@ -100,15 +102,16 @@
100
102
  FIRDatabaseReference *firDatabaseReference =
101
103
  [RNFBDatabaseCommon getReferenceForDatabase:firDatabase path:path];
102
104
 
103
- [firDatabaseReference onDisconnectSetValue:[props valueForKey:@"value"]
104
- andPriority:[props valueForKey:@"priority"]
105
- withCompletionBlock:^(NSError *error, FIRDatabaseReference *ref) {
106
- if (error != nil) {
107
- [RNFBDatabaseCommon promiseRejectDatabaseException:reject error:error];
108
- } else {
109
- resolve([NSNull null]);
110
- }
111
- }];
105
+ [firDatabaseReference
106
+ onDisconnectSetValue:[RNFBDatabaseNullSentinelDecoder decodedValueFromProps:props]
107
+ andPriority:[RNFBDatabaseNullSentinelDecoder decodedPriorityFromProps:props]
108
+ withCompletionBlock:^(NSError *error, FIRDatabaseReference *ref) {
109
+ if (error != nil) {
110
+ [RNFBDatabaseCommon promiseRejectDatabaseException:reject error:error];
111
+ } else {
112
+ resolve([NSNull null]);
113
+ }
114
+ }];
112
115
  }
113
116
 
114
117
  + (void)onDisconnectUpdate:(NSString *)app
@@ -122,15 +125,15 @@
122
125
  FIRDatabaseReference *firDatabaseReference =
123
126
  [RNFBDatabaseCommon getReferenceForDatabase:firDatabase path:path];
124
127
 
125
- [firDatabaseReference onDisconnectUpdateChildValues:[props valueForKey:@"values"]
126
- withCompletionBlock:^(NSError *error, FIRDatabaseReference *ref) {
127
- if (error != nil) {
128
- [RNFBDatabaseCommon promiseRejectDatabaseException:reject
129
- error:error];
130
- } else {
131
- resolve([NSNull null]);
132
- }
133
- }];
128
+ [firDatabaseReference
129
+ onDisconnectUpdateChildValues:[RNFBDatabaseNullSentinelDecoder decodedValuesFromProps:props]
130
+ withCompletionBlock:^(NSError *error, FIRDatabaseReference *ref) {
131
+ if (error != nil) {
132
+ [RNFBDatabaseCommon promiseRejectDatabaseException:reject error:error];
133
+ } else {
134
+ resolve([NSNull null]);
135
+ }
136
+ }];
134
137
  }
135
138
 
136
139
  @end
@@ -28,10 +28,11 @@
28
28
  @import FirebaseDatabaseInternal;
29
29
  #endif
30
30
  #import <React/RCTBridgeModule.h>
31
+ #import "RNFBDatabaseListenerRegistry.h"
31
32
 
32
33
  @interface RNFBDatabaseQuery : NSObject
33
34
  @property FIRDatabaseQuery *query;
34
- @property NSMutableDictionary *listeners;
35
+ @property(nonatomic, strong, readonly) RNFBDatabaseListenerRegistry *listeners;
35
36
 
36
37
  - (RNFBDatabaseQuery *)initWithReferenceAndModifiers:(FIRDatabaseReference *)reference
37
38
  modifiers:(NSArray *)modifiers;
@@ -40,7 +41,7 @@
40
41
 
41
42
  - (BOOL)hasListeners;
42
43
 
43
- - (void)addEventListener:(NSString *)eventRegistrationKey handle:(FIRDatabaseHandle)handle;
44
+ - (BOOL)addEventListener:(NSString *)eventRegistrationKey handle:(FIRDatabaseHandle)handle;
44
45
 
45
46
  - (void)removeEventListener:(NSString *)eventRegistrationKey;
46
47
 
@@ -17,6 +17,7 @@
17
17
  */
18
18
 
19
19
  #import "RNFBDatabaseQuery.h"
20
+ #import "RNFBDatabaseListenerRegistry.h"
20
21
 
21
22
  @implementation RNFBDatabaseQuery
22
23
 
@@ -26,7 +27,7 @@
26
27
 
27
28
  if (self) {
28
29
  _query = [self buildQueryWithModifiers:reference modifiers:modifiers];
29
- _listeners = [NSMutableDictionary dictionary];
30
+ _listeners = [[RNFBDatabaseListenerRegistry alloc] init];
30
31
  }
31
32
 
32
33
  return self;
@@ -112,32 +113,32 @@
112
113
  }
113
114
  }
114
115
 
115
- - (void)addEventListener:(NSString *)eventRegistrationKey handle:(FIRDatabaseHandle)handle {
116
- _listeners[eventRegistrationKey] = @(handle);
116
+ - (BOOL)addEventListener:(NSString *)eventRegistrationKey handle:(FIRDatabaseHandle)handle {
117
+ NSError *error = nil;
118
+ return [_listeners put:eventRegistrationKey value:@(handle) error:&error];
117
119
  }
118
120
 
119
121
  - (void)removeEventListener:(NSString *)eventRegistrationKey {
120
- FIRDatabaseHandle handle = (FIRDatabaseHandle)[_listeners[eventRegistrationKey] integerValue];
121
- if (handle) {
122
- [_query removeObserverWithHandle:handle];
123
- [_listeners removeObjectForKey:eventRegistrationKey];
122
+ NSNumber *handleNumber = [_listeners take:eventRegistrationKey];
123
+ if (handleNumber != nil) {
124
+ [_query removeObserverWithHandle:(FIRDatabaseHandle)[handleNumber integerValue]];
124
125
  }
125
126
  }
126
127
 
127
128
  - (void)removeAllEventListeners {
128
- NSArray *eventRegistrationKeys = [_listeners allKeys];
129
-
130
- for (NSString *eventRegistrationKey in eventRegistrationKeys) {
131
- [self removeEventListener:eventRegistrationKey];
129
+ NSArray *handles = [_listeners takeAll];
130
+ for (NSNumber *handleNumber in handles) {
131
+ FIRDatabaseHandle handle = (FIRDatabaseHandle)[handleNumber integerValue];
132
+ [_query removeObserverWithHandle:handle];
132
133
  }
133
134
  }
134
135
 
135
136
  - (BOOL)hasEventListener:(NSString *)eventRegistrationKey {
136
- return _listeners[eventRegistrationKey] != nil;
137
+ return [_listeners hasEventListener:eventRegistrationKey];
137
138
  }
138
139
 
139
140
  - (BOOL)hasListeners {
140
- return [[_listeners allKeys] count] > 0;
141
+ return [_listeners hasListeners];
141
142
  }
142
143
 
143
144
  @end
@@ -31,6 +31,13 @@
31
31
  resolve:(RCTPromiseResolveBlock)resolve
32
32
  reject:(RCTPromiseRejectBlock)reject;
33
33
 
34
+ + (void)get:(NSString *)app
35
+ dbURL:(NSString *)dbURL
36
+ path:(NSString *)path
37
+ modifiers:(NSArray *)modifiers
38
+ resolve:(RCTPromiseResolveBlock)resolve
39
+ reject:(RCTPromiseRejectBlock)reject;
40
+
34
41
  + (void)on:(NSString *)app dbURL:(NSString *)dbURL props:(NSDictionary *)props;
35
42
 
36
43
  + (void)off:(NSString *)queryKey eventRegistrationKey:(NSString *)eventRegistrationKey;
@@ -26,29 +26,24 @@
26
26
  #import "RNFBDatabaseCommon.h"
27
27
  #import "RNFBDatabaseQuery.h"
28
28
  #import "RNFBDatabaseQueryHelper.h"
29
+ #import "RNFBDatabaseQueryRegistry.h"
29
30
  #import "RNFBRCTEventEmitter.h"
30
31
 
31
- static __strong NSMutableDictionary *queryDictionary;
32
+ static RNFBDatabaseQueryRegistry *queryRegistry;
32
33
  static NSString *const RNFB_DATABASE_SYNC = @"database_sync_event";
33
34
 
34
35
  @implementation RNFBDatabaseQueryHelper
35
36
 
36
- + (NSMutableDictionary *)queryDictionary {
37
+ + (RNFBDatabaseQueryRegistry *)queryRegistry {
37
38
  static dispatch_once_t onceToken;
38
39
  dispatch_once(&onceToken, ^{
39
- queryDictionary = [[NSMutableDictionary alloc] init];
40
+ queryRegistry = [[RNFBDatabaseQueryRegistry alloc] init];
40
41
  });
41
- return queryDictionary;
42
+ return queryRegistry;
42
43
  }
43
44
 
44
45
  + (void)invalidate {
45
- NSMutableDictionary *queries = [self queryDictionary];
46
- NSArray *queryKeys = [queries allKeys];
47
- for (NSString *key in queryKeys) {
48
- RNFBDatabaseQuery *query = queries[key];
49
- [query removeAllEventListeners];
50
- [queries removeObjectForKey:key];
51
- }
46
+ [[self queryRegistry] removeAll];
52
47
  }
53
48
 
54
49
  + (RNFBDatabaseQuery *)getDatabaseQueryInstance:(FIRDatabaseReference *)reference
@@ -59,17 +54,23 @@ static NSString *const RNFB_DATABASE_SYNC = @"database_sync_event";
59
54
  + (RNFBDatabaseQuery *)getDatabaseQueryInstance:(NSString *)key
60
55
  reference:(FIRDatabaseReference *)reference
61
56
  modifiers:(NSArray *)modifiers {
62
- NSMutableDictionary *queries = [self queryDictionary];
63
- RNFBDatabaseQuery *cachedQuery = queries[key];
57
+ RNFBDatabaseQueryRegistry *queries = [self queryRegistry];
58
+ id cachedQuery = [queries get:key];
64
59
 
65
- if (cachedQuery != nil) {
60
+ if ([cachedQuery isKindOfClass:[RNFBDatabaseQuery class]]) {
66
61
  return cachedQuery;
67
62
  }
68
63
 
69
64
  RNFBDatabaseQuery *query = [[RNFBDatabaseQuery alloc] initWithReferenceAndModifiers:reference
70
65
  modifiers:modifiers];
71
66
 
72
- queries[key] = query;
67
+ NSError *error = nil;
68
+ if (![queries put:key value:query error:&error]) {
69
+ id winner = [queries get:key];
70
+ if ([winner isKindOfClass:[RNFBDatabaseQuery class]]) {
71
+ return winner;
72
+ }
73
+ }
73
74
  return query;
74
75
  }
75
76
 
@@ -167,7 +168,9 @@ static NSString *const RNFB_DATABASE_SYNC = @"database_sync_event";
167
168
  FIRDatabaseHandle handle = [databaseQuery.query observeEventType:firDataEventType
168
169
  andPreviousSiblingKeyWithBlock:andPreviousSiblingKeyWithBlock
169
170
  withCancelBlock:errorBlock];
170
- [databaseQuery addEventListener:eventRegistrationKey handle:handle];
171
+ if (![databaseQuery addEventListener:eventRegistrationKey handle:handle]) {
172
+ [databaseQuery.query removeObserverWithHandle:handle];
173
+ }
171
174
  }
172
175
  }
173
176
 
@@ -188,6 +191,26 @@ static NSString *const RNFB_DATABASE_SYNC = @"database_sync_event";
188
191
  [self addOnceEventListener:databaseQuery eventType:eventType resolve:resolve reject:reject];
189
192
  }
190
193
 
194
+ + (void)get:(NSString *)app
195
+ dbURL:(NSString *)dbURL
196
+ path:(NSString *)path
197
+ modifiers:(NSArray *)modifiers
198
+ resolve:(RCTPromiseResolveBlock)resolve
199
+ reject:(RCTPromiseRejectBlock)reject {
200
+ // A single-event observer, not getDataWithCompletionBlock:. FirebaseDatabase's getData
201
+ // returns a covering ancestor's whole node for a child path (firebase/firebase-ios-sdk#12168),
202
+ // never completes a get in flight when the socket drops (firebase/firebase-ios-sdk#16717)
203
+ // and crashes on an error reply without a reason (firebase/firebase-ios-sdk#16718).
204
+ // Switch this to getData once the SDK RNFB depends on fixes all three.
205
+ [self once:app
206
+ dbURL:dbURL
207
+ path:path
208
+ modifiers:modifiers
209
+ eventType:@"value"
210
+ resolve:resolve
211
+ reject:reject];
212
+ }
213
+
191
214
  + (void)on:(NSString *)app dbURL:(NSString *)dbURL props:(NSDictionary *)props {
192
215
  NSString *key = [props valueForKey:@"key"];
193
216
  NSString *path = [props valueForKey:@"path"];
@@ -206,14 +229,14 @@ static NSString *const RNFB_DATABASE_SYNC = @"database_sync_event";
206
229
  }
207
230
 
208
231
  + (void)off:(NSString *)queryKey eventRegistrationKey:(NSString *)eventRegistrationKey {
209
- NSMutableDictionary *queries = [self queryDictionary];
210
- RNFBDatabaseQuery *databaseQuery = queries[queryKey];
232
+ RNFBDatabaseQueryRegistry *queries = [self queryRegistry];
233
+ id cached = [queries get:queryKey];
211
234
 
212
- if (databaseQuery != nil) {
235
+ if ([cached isKindOfClass:[RNFBDatabaseQuery class]]) {
236
+ RNFBDatabaseQuery *databaseQuery = cached;
213
237
  [databaseQuery removeEventListener:eventRegistrationKey];
214
238
 
215
- if (![databaseQuery hasListeners]) {
216
- [queries removeObjectForKey:queryKey];
239
+ if ([queries takeIfIdle:queryKey] != nil) {
217
240
  [RNFBDatabaseCommon removeReferenceByKey:queryKey];
218
241
  }
219
242
  }