From 30217ff1b55ea286ab830747290a289b72869e43 Mon Sep 17 00:00:00 2001 From: Joel Arvidsson Date: Thu, 28 May 2015 19:08:18 +0200 Subject: [PATCH] Fixed lack of conversion of NSErrors. --- RNKeychainManager/RNKeychainManager.m | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/RNKeychainManager/RNKeychainManager.m b/RNKeychainManager/RNKeychainManager.m index 52112bd..0ed29d6 100644 --- a/RNKeychainManager/RNKeychainManager.m +++ b/RNKeychainManager/RNKeychainManager.m @@ -10,12 +10,18 @@ #import "RNKeychainManager.h" #import "RCTConvert.h" #import "RCTBridge.h" +#import "RCTUtils.h" @implementation RNKeychainManager @synthesize bridge = _bridge; RCT_EXPORT_MODULE(); +NSDictionary * makeError(NSError *error) +{ + return RCTMakeAndLogError(error.localizedDescription, nil, [error dictionaryWithValuesForKeys:@[@"domain", @"code"]]); +} + RCT_EXPORT_METHOD(setInternetCredentialsForServer:(NSString*)server withUsername:(NSString*)username withPassword:(NSString*)password callback:(RCTResponseSenderBlock)callback){ // Create dictionary of search parameters @@ -30,10 +36,10 @@ RCT_EXPORT_METHOD(setInternetCredentialsForServer:(NSString*)server withUsername // Try to save to keychain osStatus = SecItemAdd((__bridge CFDictionaryRef) dict, NULL); - - if (osStatus) { + + if (osStatus != noErr) { NSError *error = [NSError errorWithDomain:NSOSStatusErrorDomain code:osStatus userInfo:nil]; - callback(@[error]); + return callback(@[makeError(error)]); } callback(@[[NSNull null]]); @@ -57,9 +63,9 @@ RCT_EXPORT_METHOD(getInternetCredentialsForServer:(NSString*)server callback:(RC NSString* username = (NSString*) [found objectForKey:(__bridge id)(kSecAttrAccount)]; NSString* password = [[NSString alloc] initWithData:[found objectForKey:(__bridge id)(kSecValueData)] encoding:NSUTF8StringEncoding]; - if (osStatus) { + if (osStatus != noErr) { NSError *error = [NSError errorWithDomain:NSOSStatusErrorDomain code:osStatus userInfo:nil]; - callback(@[error]); + return callback(@[makeError(error)]); } callback(@[[NSNull null], username, password]); @@ -73,9 +79,9 @@ RCT_EXPORT_METHOD(resetInternetCredentialsForServer:(NSString*)server callback:( // Remove any old values from the keychain OSStatus osStatus = SecItemDelete((__bridge CFDictionaryRef) dict); - if (osStatus) { + if (osStatus != noErr) { NSError *error = [NSError errorWithDomain:NSOSStatusErrorDomain code:osStatus userInfo:nil]; - callback(@[error]); + return callback(@[makeError(error)]); } callback(@[[NSNull null]]);