From 85c6b3972e66305321defebebc43fcd3b229f454 Mon Sep 17 00:00:00 2001 From: Mokhlas Hussein Date: Mon, 16 Aug 2021 13:32:20 +0200 Subject: [PATCH] improved iOS reject promise message --- ios/RNEncryptedStorage.m | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/ios/RNEncryptedStorage.m b/ios/RNEncryptedStorage.m index 9ad4b23..267df3e 100644 --- a/ios/RNEncryptedStorage.m +++ b/ios/RNEncryptedStorage.m @@ -30,32 +30,32 @@ + (BOOL)requiresMainQueueSetup RCT_EXPORT_METHOD(setItem:(NSString *)key withValue:(NSString *)value resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) { NSData* dataFromValue = [value dataUsingEncoding:NSUTF8StringEncoding]; - + if (dataFromValue == nil) { NSError* error = [NSError errorWithDomain:[[NSBundle mainBundle] bundleIdentifier] code:0 userInfo: nil]; - rejectPromise(@"An error occured while parsing value", error, reject); + rejectPromise([NSString stringWithFormat:@"An error occurred while parsing value for key: %@", key], error, reject); return; } - + // Prepares the insert query structure NSDictionary* storeQuery = @{ (__bridge id)kSecClass : (__bridge id)kSecClassGenericPassword, (__bridge id)kSecAttrAccount : key, (__bridge id)kSecValueData : dataFromValue }; - + // Deletes the existing item prior to inserting the new one SecItemDelete((__bridge CFDictionaryRef)storeQuery); - + OSStatus insertStatus = SecItemAdd((__bridge CFDictionaryRef)storeQuery, nil); - + if (insertStatus == noErr) { resolve(value); } - + else { NSError* error = [NSError errorWithDomain:[[NSBundle mainBundle] bundleIdentifier] code:insertStatus userInfo: nil]; - rejectPromise(@"An error occured while saving value", error, reject); + rejectPromise([NSString stringWithFormat:@"An error occurred while saving value for key: %@", key], error, reject); } } @@ -67,10 +67,10 @@ + (BOOL)requiresMainQueueSetup (__bridge id)kSecReturnData : (__bridge id)kCFBooleanTrue, (__bridge id)kSecMatchLimit : (__bridge id)kSecMatchLimitOne }; - + CFTypeRef dataRef = NULL; OSStatus getStatus = SecItemCopyMatching((__bridge CFDictionaryRef)getQuery, &dataRef); - + if (getStatus == errSecSuccess) { NSString* storedValue = [[NSString alloc] initWithData: (__bridge NSData*)dataRef encoding: NSUTF8StringEncoding]; resolve(storedValue); @@ -79,10 +79,10 @@ + (BOOL)requiresMainQueueSetup else if (getStatus == errSecItemNotFound) { resolve(nil); } - + else { NSError* error = [NSError errorWithDomain: [[NSBundle mainBundle] bundleIdentifier] code:getStatus userInfo:nil]; - rejectPromise(@"An error occured while retrieving value", error, reject); + rejectPromise([NSString stringWithFormat:@"An error occurred while retrieving value for key: %@", key], error, reject); } } @@ -93,16 +93,16 @@ + (BOOL)requiresMainQueueSetup (__bridge id)kSecAttrAccount : key, (__bridge id)kSecReturnData : (__bridge id)kCFBooleanTrue }; - + OSStatus removeStatus = SecItemDelete((__bridge CFDictionaryRef)removeQuery); - + if (removeStatus == noErr) { resolve(key); } - + else { NSError* error = [NSError errorWithDomain:[[NSBundle mainBundle] bundleIdentifier] code:removeStatus userInfo: nil]; - rejectPromise(@"An error occured while removing value", error, reject); + rejectPromise([NSString stringWithFormat:@"An error occurred while removing value for key: %@", key], error, reject); } } @@ -115,13 +115,13 @@ + (BOOL)requiresMainQueueSetup (__bridge id)kSecClassKey, (__bridge id)kSecClassIdentity ]; - + // Maps through all Keychain classes and deletes all items that match for (id secItemClass in secItemClasses) { NSDictionary *spec = @{(__bridge id)kSecClass: secItemClass}; SecItemDelete((__bridge CFDictionaryRef)spec); } - + resolve(nil); } -@end \ No newline at end of file +@end