|
1 | 1 | #import "AsyncStorage.h" |
2 | 2 | #import "AsyncStorage-Swift.h" |
| 3 | +#import "RNCAsyncStorage.h" // legacy storage |
3 | 4 |
|
4 | 5 | @implementation AsyncStorage |
5 | 6 | RCT_EXPORT_MODULE(RNAsyncStorage) |
@@ -41,24 +42,106 @@ - (void)getKeys:(nonnull NSString *)dbName resolve:(nonnull RCTPromiseResolveBlo |
41 | 42 |
|
42 | 43 |
|
43 | 44 | - (void)legacy_multiGet:(nonnull NSArray *)keys resolve:(nonnull RCTPromiseResolveBlock)resolve reject:(nonnull RCTPromiseRejectBlock)reject { |
44 | | - resolve(nil); |
45 | | - |
| 45 | + RNCAsyncStorage *legacy = [RNCAsyncStorage sharedInstance]; |
| 46 | + |
| 47 | + |
| 48 | + dispatch_async([legacy methodQueue], ^{ |
| 49 | + NSError *error = nil; |
| 50 | + NSDictionary<NSString *, NSString *> *result = [legacy multiGet:keys error:&error]; |
| 51 | + if (error) { |
| 52 | + dispatch_async(dispatch_get_main_queue(), ^{ |
| 53 | + reject(@"AsyncStorageError", @"Failed to get values for keys", error); |
| 54 | + }); |
| 55 | + return; |
| 56 | + } |
| 57 | + |
| 58 | + NSMutableArray *formatted = [NSMutableArray arrayWithCapacity:keys.count]; |
| 59 | + for (NSString *key in keys) { |
| 60 | + id value = result[key]; |
| 61 | + if (value == [NSNull null] || value == nil) { |
| 62 | + value = (id)kCFNull; |
| 63 | + } |
| 64 | + [formatted addObject:@[key, value]]; |
| 65 | + } |
| 66 | + |
| 67 | + dispatch_async(dispatch_get_main_queue(), ^{ |
| 68 | + resolve(formatted); |
| 69 | + }); |
| 70 | + |
| 71 | + }); |
46 | 72 | } |
47 | 73 |
|
48 | 74 | - (void)legacy_multiSet:(nonnull NSArray *)kvPairs resolve:(nonnull RCTPromiseResolveBlock)resolve reject:(nonnull RCTPromiseRejectBlock)reject { |
49 | | - resolve(nil); |
| 75 | + RNCAsyncStorage *legacy = [RNCAsyncStorage sharedInstance]; |
| 76 | + |
| 77 | + dispatch_async([legacy methodQueue], ^{ |
| 78 | + NSError *error = nil; |
| 79 | + BOOL success = [legacy multiSet:kvPairs error:&error]; |
| 80 | + |
| 81 | + if (!success) { |
| 82 | + dispatch_async(dispatch_get_main_queue(), ^{ |
| 83 | + reject(@"AsyncStorageError", @"Failed to set key-value pairs", error); |
| 84 | + }); |
| 85 | + return; |
| 86 | + } |
| 87 | + |
| 88 | + dispatch_async(dispatch_get_main_queue(), ^{ |
| 89 | + resolve(nil); |
| 90 | + }); |
| 91 | + }); |
50 | 92 | } |
51 | 93 |
|
52 | 94 | - (void)legacy_multiRemove:(nonnull NSArray *)keys resolve:(nonnull RCTPromiseResolveBlock)resolve reject:(nonnull RCTPromiseRejectBlock)reject { |
53 | | - resolve(nil); |
| 95 | + RNCAsyncStorage *legacy = [RNCAsyncStorage sharedInstance]; |
| 96 | + |
| 97 | + dispatch_async([legacy methodQueue], ^{ |
| 98 | + NSError *error = nil; |
| 99 | + BOOL success = [legacy multiRemove:keys error:&error]; |
| 100 | + |
| 101 | + |
| 102 | + dispatch_async(dispatch_get_main_queue(), ^{ |
| 103 | + if (!success) { |
| 104 | + reject(@"AsyncStorageError", @"Failed to remove keys", error); |
| 105 | + } else { |
| 106 | + resolve(nil); |
| 107 | + } |
| 108 | + }); |
| 109 | + }); |
54 | 110 | } |
55 | 111 |
|
56 | | -- (void)legacy_getAllKeys:(nonnull RCTPromiseResolveBlock)resolve reject:(nonnull RCTPromiseRejectBlock)reject { |
57 | | - resolve(nil); |
| 112 | +- (void)legacy_getAllKeys:(nonnull RCTPromiseResolveBlock)resolve reject:(nonnull RCTPromiseRejectBlock)reject { |
| 113 | + RNCAsyncStorage *legacy = [RNCAsyncStorage sharedInstance]; |
| 114 | + |
| 115 | + dispatch_async([legacy methodQueue], ^{ |
| 116 | + NSError *error = nil; |
| 117 | + NSArray<NSString *> *keys = [legacy getAllKeys:&error]; |
| 118 | + |
| 119 | + dispatch_async(dispatch_get_main_queue(), ^{ |
| 120 | + if (!keys) { |
| 121 | + reject(@"AsyncStorageError", @"Failed to get all keys", error); |
| 122 | + } else { |
| 123 | + resolve(keys); |
| 124 | + } |
| 125 | + }); |
| 126 | + }); |
58 | 127 | } |
59 | 128 |
|
60 | 129 | - (void)legacy_clear:(nonnull RCTPromiseResolveBlock)resolve reject:(nonnull RCTPromiseRejectBlock)reject { |
61 | | - resolve(nil); |
| 130 | + |
| 131 | + RNCAsyncStorage *legacy = [RNCAsyncStorage sharedInstance]; |
| 132 | + |
| 133 | + dispatch_async([legacy methodQueue], ^{ |
| 134 | + NSError *error = nil; |
| 135 | + BOOL success = [legacy clear:&error]; |
| 136 | + |
| 137 | + dispatch_async(dispatch_get_main_queue(), ^{ |
| 138 | + if (!success) { |
| 139 | + reject(@"AsyncStorageError", @"Failed to clear storage", error); |
| 140 | + } else { |
| 141 | + resolve(nil); |
| 142 | + } |
| 143 | + }); |
| 144 | + }); |
62 | 145 | } |
63 | 146 |
|
64 | 147 | - (void)legacy_multiMerge:(nonnull NSArray *)kvPairs resolve:(nonnull RCTPromiseResolveBlock)resolve reject:(nonnull RCTPromiseRejectBlock)reject { |
|
0 commit comments