@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.
- package/CHANGELOG.md +27 -0
- package/RNFBDatabase.podspec +10 -2
- package/android/build.gradle +7 -0
- package/android/src/main/java/io/invertase/firebase/database/DatabaseAbortable.java +22 -0
- package/android/src/main/java/io/invertase/firebase/database/DatabaseQueryHandle.java +24 -0
- package/android/src/main/java/io/invertase/firebase/database/RNFBDatabaseKeepSyncedRegistry.java +106 -0
- package/android/src/main/java/io/invertase/firebase/database/RNFBDatabaseListenerRegistry.kt +133 -0
- package/android/src/main/java/io/invertase/firebase/database/RNFBDatabaseQueryRegistry.kt +76 -0
- package/android/src/main/java/io/invertase/firebase/database/RNFBDatabaseTransactionRegistry.kt +67 -0
- package/android/src/main/java/io/invertase/firebase/database/UniversalFirebaseDatabaseOnDisconnectModule.java +102 -9
- package/android/src/reactnative/java/io/invertase/firebase/database/NativeRNFBTurboDatabaseOnDisconnect.java +6 -11
- package/android/src/reactnative/java/io/invertase/firebase/database/NativeRNFBTurboDatabaseQuery.java +111 -24
- package/android/src/reactnative/java/io/invertase/firebase/database/NativeRNFBTurboDatabaseTransaction.java +12 -25
- package/android/src/reactnative/java/io/invertase/firebase/database/ReactNativeFirebaseDatabaseQuery.java +30 -33
- package/android/src/reactnative/java/io/invertase/firebase/database/ReactNativeFirebaseDatabaseTransactionHandler.java +3 -3
- package/android/src/reactnative/java/io/invertase/firebase/database/generated/java/com/facebook/fbreact/specs/NativeRNFBTurboDatabaseQuerySpec.java +4 -0
- package/android/src/reactnative/java/io/invertase/firebase/database/generated/jni/RNFBDatabaseTurboModules-generated.cpp +6 -0
- package/android/src/reactnative/java/io/invertase/firebase/database/generated/jni/react/renderer/components/RNFBDatabaseTurboModules/RNFBDatabaseTurboModulesJSI.h +12 -0
- package/android/src/test/java/io/invertase/firebase/database/RNFBDatabaseKeepSyncedRegistryTest.java +174 -0
- package/android/src/test/java/io/invertase/firebase/database/RNFBDatabaseListenerRegistryTest.java +191 -0
- package/android/src/test/java/io/invertase/firebase/database/RNFBDatabaseQueryRegistryTest.java +489 -0
- package/android/src/test/java/io/invertase/firebase/database/RNFBDatabaseTransactionRegistryTest.java +199 -0
- package/android/src/test/java/io/invertase/firebase/database/UniversalFirebaseDatabaseOnDisconnectCancelErrorTest.java +137 -0
- package/dist/module/DatabaseQuery.js +52 -1
- package/dist/module/DatabaseQuery.js.map +1 -1
- package/dist/module/DatabaseSyncTree.js +1 -1
- package/dist/module/DatabaseSyncTree.js.map +1 -1
- package/dist/module/index.js +1 -2
- package/dist/module/index.js.map +1 -1
- package/dist/module/modular/query.js +1 -1
- package/dist/module/modular/query.js.map +1 -1
- package/dist/module/version.js +1 -1
- package/dist/module/web/RNFBDatabaseModule.js +7 -0
- package/dist/module/web/RNFBDatabaseModule.js.map +1 -1
- package/dist/typescript/lib/DatabaseQuery.d.ts +25 -0
- package/dist/typescript/lib/DatabaseQuery.d.ts.map +1 -1
- package/dist/typescript/lib/index.d.ts +1 -1
- package/dist/typescript/lib/types/internal.d.ts +2 -0
- package/dist/typescript/lib/types/internal.d.ts.map +1 -1
- package/dist/typescript/lib/version.d.ts +1 -1
- package/dist/typescript/lib/web/RNFBDatabaseModule.d.ts.map +1 -1
- package/ios/RNFBDatabase/RNFBDatabaseListenerRegistry.h +37 -0
- package/ios/RNFBDatabase/RNFBDatabaseListenerRegistry.m +91 -0
- package/ios/RNFBDatabase/RNFBDatabaseListenerRegistryStorage.swift +81 -0
- package/ios/RNFBDatabase/RNFBDatabaseNullSentinelDecoder.h +36 -0
- package/ios/RNFBDatabase/RNFBDatabaseNullSentinelDecoder.m +48 -0
- package/ios/RNFBDatabase/RNFBDatabaseOnDisconnectHelper.m +29 -26
- package/ios/RNFBDatabase/RNFBDatabaseQuery.h +3 -2
- package/ios/RNFBDatabase/RNFBDatabaseQuery.m +14 -13
- package/ios/RNFBDatabase/RNFBDatabaseQueryHelper.h +7 -0
- package/ios/RNFBDatabase/RNFBDatabaseQueryHelper.m +44 -21
- package/ios/RNFBDatabase/RNFBDatabaseQueryModule.mm +14 -0
- package/ios/RNFBDatabase/RNFBDatabaseQueryRegistry.h +37 -0
- package/ios/RNFBDatabase/RNFBDatabaseQueryRegistry.m +79 -0
- package/ios/RNFBDatabase/RNFBDatabaseQueryRegistryStorage.swift +104 -0
- package/ios/RNFBDatabase/RNFBDatabaseReferenceHelper.m +14 -12
- package/ios/RNFBDatabase/RNFBDatabaseTransactionHelper.m +3 -1
- package/ios/RNFBDatabase.xcodeproj/project.pbxproj +12 -0
- package/ios/RNFBDatabaseUnitTests/RNFBDatabaseListenerRegistryStorageTests.swift +86 -0
- package/ios/RNFBDatabaseUnitTests/RNFBDatabaseListenerRegistryTests.m +90 -0
- package/ios/RNFBDatabaseUnitTests/RNFBDatabaseNullSentinelDecodeTests.m +118 -0
- package/ios/RNFBDatabaseUnitTests/RNFBDatabaseQueryRegistryStorageTests.swift +181 -0
- package/ios/RNFBDatabaseUnitTests/RNFBDatabaseQueryRegistryTests.m +390 -0
- package/ios/RNFBDatabaseUnitTests/RNFBDatabaseUnitTests.xcodeproj/project.pbxproj +303 -0
- package/ios/RNFBDatabaseUnitTests/RNFBDatabaseUnitTests.xcodeproj/xcshareddata/xcschemes/RNFBDatabaseUnitTests.xcscheme +69 -0
- package/ios/generated/RNFBDatabaseTurboModules/RNFBDatabaseTurboModules-generated.mm +7 -0
- package/ios/generated/RNFBDatabaseTurboModules/RNFBDatabaseTurboModules.h +6 -0
- package/ios/generated/RNFBDatabaseTurboModulesJSI.h +12 -0
- package/lib/DatabaseQuery.ts +56 -0
- package/lib/DatabaseSyncTree.ts +1 -1
- package/lib/index.ts +1 -1
- package/lib/modular/query.ts +1 -1
- package/lib/types/internal.ts +2 -0
- package/lib/version.ts +1 -1
- package/lib/web/RNFBDatabaseModule.ts +13 -0
- package/package.json +5 -4
- 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 = "
|
|
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,
|
|
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
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
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
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
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
|
|
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
|
-
- (
|
|
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 = [
|
|
30
|
+
_listeners = [[RNFBDatabaseListenerRegistry alloc] init];
|
|
30
31
|
}
|
|
31
32
|
|
|
32
33
|
return self;
|
|
@@ -112,32 +113,32 @@
|
|
|
112
113
|
}
|
|
113
114
|
}
|
|
114
115
|
|
|
115
|
-
- (
|
|
116
|
-
|
|
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
|
-
|
|
121
|
-
if (
|
|
122
|
-
[_query removeObserverWithHandle:
|
|
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 *
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
[
|
|
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
|
|
137
|
+
return [_listeners hasEventListener:eventRegistrationKey];
|
|
137
138
|
}
|
|
138
139
|
|
|
139
140
|
- (BOOL)hasListeners {
|
|
140
|
-
return [
|
|
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
|
|
32
|
+
static RNFBDatabaseQueryRegistry *queryRegistry;
|
|
32
33
|
static NSString *const RNFB_DATABASE_SYNC = @"database_sync_event";
|
|
33
34
|
|
|
34
35
|
@implementation RNFBDatabaseQueryHelper
|
|
35
36
|
|
|
36
|
-
+ (
|
|
37
|
+
+ (RNFBDatabaseQueryRegistry *)queryRegistry {
|
|
37
38
|
static dispatch_once_t onceToken;
|
|
38
39
|
dispatch_once(&onceToken, ^{
|
|
39
|
-
|
|
40
|
+
queryRegistry = [[RNFBDatabaseQueryRegistry alloc] init];
|
|
40
41
|
});
|
|
41
|
-
return
|
|
42
|
+
return queryRegistry;
|
|
42
43
|
}
|
|
43
44
|
|
|
44
45
|
+ (void)invalidate {
|
|
45
|
-
|
|
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
|
-
|
|
63
|
-
|
|
57
|
+
RNFBDatabaseQueryRegistry *queries = [self queryRegistry];
|
|
58
|
+
id cachedQuery = [queries get:key];
|
|
64
59
|
|
|
65
|
-
if (cachedQuery
|
|
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
|
-
|
|
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
|
-
|
|
210
|
-
|
|
232
|
+
RNFBDatabaseQueryRegistry *queries = [self queryRegistry];
|
|
233
|
+
id cached = [queries get:queryKey];
|
|
211
234
|
|
|
212
|
-
if (
|
|
235
|
+
if ([cached isKindOfClass:[RNFBDatabaseQuery class]]) {
|
|
236
|
+
RNFBDatabaseQuery *databaseQuery = cached;
|
|
213
237
|
[databaseQuery removeEventListener:eventRegistrationKey];
|
|
214
238
|
|
|
215
|
-
if (
|
|
216
|
-
[queries removeObjectForKey:queryKey];
|
|
239
|
+
if ([queries takeIfIdle:queryKey] != nil) {
|
|
217
240
|
[RNFBDatabaseCommon removeReferenceByKey:queryKey];
|
|
218
241
|
}
|
|
219
242
|
}
|