@@ -10,16 +10,16 @@ public class PersistentStorage: NSObject {
1010 private let db : SharedStorage
1111
1212 init ( databaseName: String ) {
13- db = SharedStorage . companion . create ( context: PlatformContext . Instance ( ) , databaseName: databaseName)
13+ db = SharedStorage ( context: PlatformContext . Instance ( ) , databaseName: databaseName)
1414 }
1515
1616 @objc
1717 public func get(
1818 keys: [ String ] ,
1919 resolver: @escaping RCTPromiseResolveBlock ,
20- rejecter _ : @escaping RCTPromiseRejectBlock
20+ rejecter: @escaping RCTPromiseRejectBlock
2121 ) {
22- Task {
22+ runWithReject ( rejecter ) {
2323 let result = try await self . db. getValues ( keys: keys)
2424 resolver ( result. map { $0. toRNValue ( ) } )
2525 }
@@ -29,9 +29,9 @@ public class PersistentStorage: NSObject {
2929 public func set(
3030 values: [ [ String : String ] ] ,
3131 resolver: @escaping RCTPromiseResolveBlock ,
32- rejecter _ : @escaping RCTPromiseRejectBlock
32+ rejecter: @escaping RCTPromiseRejectBlock
3333 ) {
34- Task {
34+ runWithReject ( rejecter ) {
3535 let entries = values. map { entry in Entry . fromRNValue ( rnValue: entry) }
3636 let result = try await self . db. setValues ( entries: entries)
3737 resolver ( result. map { entry in entry. toRNValue ( ) } )
@@ -42,9 +42,9 @@ public class PersistentStorage: NSObject {
4242 public func remove(
4343 keys: [ String ] ,
4444 resolver: @escaping RCTPromiseResolveBlock ,
45- rejecter _ : @escaping RCTPromiseRejectBlock
45+ rejecter: @escaping RCTPromiseRejectBlock
4646 ) {
47- Task {
47+ runWithReject ( rejecter ) {
4848 try await self . db. removeValues ( keys: keys)
4949 resolver ( nil )
5050 }
@@ -53,9 +53,9 @@ public class PersistentStorage: NSObject {
5353 @objc
5454 public func allKeys(
5555 resolver: @escaping RCTPromiseResolveBlock ,
56- rejecter _ : @escaping RCTPromiseRejectBlock
56+ rejecter: @escaping RCTPromiseRejectBlock
5757 ) {
58- Task {
58+ runWithReject ( rejecter ) {
5959 let keys = try await self . db. getKeys ( )
6060 resolver ( keys)
6161 }
@@ -64,9 +64,9 @@ public class PersistentStorage: NSObject {
6464 @objc
6565 public func clear(
6666 resolver: @escaping RCTPromiseResolveBlock ,
67- rejecter _ : @escaping RCTPromiseRejectBlock
67+ rejecter: @escaping RCTPromiseRejectBlock
6868 ) {
69- Task {
69+ runWithReject ( rejecter ) {
7070 try await self . db. clear ( )
7171 resolver ( nil )
7272 }
@@ -86,3 +86,16 @@ extension Entry {
8686 return Entry ( key: key, value: value)
8787 }
8888}
89+
90+ func runWithReject( _ reject: @escaping RCTPromiseRejectBlock , block: @escaping ( ) async throws -> Void ) {
91+ Task {
92+ do {
93+ try await block ( )
94+ } catch {
95+ if error is CancellationError {
96+ throw error
97+ }
98+ reject ( " AsyncStorageError " , error. localizedDescription, error)
99+ }
100+ }
101+ }
0 commit comments