From 735d6234a2ac7ddf010992a19ce2568f9cd527d2 Mon Sep 17 00:00:00 2001 From: "Eisenstein, Uriah (ue269a)" Date: Thu, 14 Apr 2022 10:37:01 +0300 Subject: [PATCH 1/3] Avoid crash on unknown payment network name --- ios/ReactNativePayments.m | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ios/ReactNativePayments.m b/ios/ReactNativePayments.m index c309e3c0..de62f230 100644 --- a/ios/ReactNativePayments.m +++ b/ios/ReactNativePayments.m @@ -267,7 +267,10 @@ - (NSArray *_Nonnull)getSupportedNetworksFromMethodData:(NSDictionary *_Nonnull) NSArray *jsSupportedNetworks = methodData[@"supportedNetworks"]; NSMutableArray *supportedNetworks = [NSMutableArray array]; for (NSString *supportedNetwork in jsSupportedNetworks) { - [supportedNetworks addObject: supportedNetworksMapping[supportedNetwork]]; + PKPaymentNetwork network = supportedNetworksMapping[supportedNetwork]; + if (network != nil) { + [supportedNetworks addObject: network]; + } } return supportedNetworks; From 35ad585b54dce739b3a9b2c6ad6cca92caa68c15 Mon Sep 17 00:00:00 2001 From: "Eisenstein, Uriah (ue269a)" Date: Thu, 14 Apr 2022 10:48:08 +0300 Subject: [PATCH 2/3] (remove duplicate code) --- ios/ReactNativePayments.m | 4 ---- 1 file changed, 4 deletions(-) diff --git a/ios/ReactNativePayments.m b/ios/ReactNativePayments.m index de62f230..2ea6c760 100644 --- a/ios/ReactNativePayments.m +++ b/ios/ReactNativePayments.m @@ -259,10 +259,6 @@ - (NSArray *_Nonnull)getSupportedNetworksFromMethodData:(NSDictionary *_Nonnull) [supportedNetworksMapping setObject:PKPaymentNetworkMada forKey:@"mada"]; } - if (iOSVersion >= 12.1) { - [supportedNetworksMapping setObject:PKPaymentNetworkMada forKey:@"mada"]; - } - // Setup supportedNetworks NSArray *jsSupportedNetworks = methodData[@"supportedNetworks"]; NSMutableArray *supportedNetworks = [NSMutableArray array]; From 960844889b468622c3d7027626dc6d6457f86c19 Mon Sep 17 00:00:00 2001 From: "Eisenstein, Uriah (ue269a)" Date: Thu, 14 Apr 2022 12:55:30 +0300 Subject: [PATCH 3/3] Create supported networks mapping only once --- ios/ReactNativePayments.m | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/ios/ReactNativePayments.m b/ios/ReactNativePayments.m index 2ea6c760..0c721d29 100644 --- a/ios/ReactNativePayments.m +++ b/ios/ReactNativePayments.m @@ -218,8 +218,7 @@ - (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController // PRIVATE METHODS // https://developer.apple.com/reference/passkit/pkpaymentnetwork // --------------- -- (NSArray *_Nonnull)getSupportedNetworksFromMethodData:(NSDictionary *_Nonnull)methodData -{ +static NSMutableDictionary *createSupportedNetworksMapping() { NSMutableDictionary *supportedNetworksMapping = [[NSMutableDictionary alloc] init]; CGFloat iOSVersion = [[[UIDevice currentDevice] systemVersion] floatValue]; @@ -259,6 +258,16 @@ - (NSArray *_Nonnull)getSupportedNetworksFromMethodData:(NSDictionary *_Nonnull) [supportedNetworksMapping setObject:PKPaymentNetworkMada forKey:@"mada"]; } + return supportedNetworksMapping; +} + +- (NSArray *_Nonnull)getSupportedNetworksFromMethodData:(NSDictionary *_Nonnull)methodData +{ + static NSMutableDictionary * supportedNetworksMapping; + if (!supportedNetworksMapping) { + supportedNetworksMapping = createSupportedNetworksMapping(); + } + // Setup supportedNetworks NSArray *jsSupportedNetworks = methodData[@"supportedNetworks"]; NSMutableArray *supportedNetworks = [NSMutableArray array];