From bc215ddada69e039554407f9b26631aca02f763e Mon Sep 17 00:00:00 2001 From: Joshua Rogers Date: Thu, 1 Oct 2026 11:39:52 +0200 Subject: [PATCH] fix: support old arch on iOS RNWallet.mm used the codegen-generated JS::NativeWallet::* struct types unconditionally in the IOSPresentAddPaymentPassView, IOSHandleAddPaymentPassResponse and addCardToGoogleWallet signatures, but RNWalletSpec.h is only imported when RCT_NEW_ARCH_ENABLED is defined (see RNWallet.h), so the iOS module failed to compile on the old architecture. On the old architecture, accept NSDictionary instead and read the fields by key. --- ios/RNWallet.mm | 47 ++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 5 deletions(-) diff --git a/ios/RNWallet.mm b/ios/RNWallet.mm index bf424e5..9775afe 100644 --- a/ios/RNWallet.mm +++ b/ios/RNWallet.mm @@ -7,7 +7,6 @@ #import #endif - @interface RNWallet () @end @@ -34,17 +33,33 @@ - (instancetype)init { } RCT_REMAP_METHOD(IOSPresentAddPaymentPassView, +#ifdef RCT_NEW_ARCH_ENABLED IOSPresentAddPaymentPassView:(JS::NativeWallet::IOSCardData &)cardData +#else + IOSPresentAddPaymentPassView:(NSDictionary *)cardData +#endif resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { @try { - NSDictionary *cardDataDict = @{ + NSDictionary *cardDataDict = nil; + +#ifdef RCT_NEW_ARCH_ENABLED + cardDataDict = @{ @"network": [self safeString:cardData.network()], @"cardHolderName": [self safeString:cardData.cardHolderName()], @"lastDigits": [self safeString:cardData.lastDigits()], @"cardDescription": [self safeString:cardData.cardDescription()], }; +#else + cardDataDict = @{ + @"network": [self safeString:cardData[@"network"]], + @"cardHolderName": [self safeString:cardData[@"cardHolderName"]], + @"lastDigits": [self safeString:cardData[@"lastDigits"]], + @"cardDescription": [self safeString:cardData[@"cardDescription"]], + }; +#endif + dispatch_async(dispatch_get_main_queue(), ^{ [self->walletManager IOSPresentAddPaymentPassViewWithCardData:cardDataDict completion:^(OperationResult result, NSDictionary* data) { [self handleWalletResponse:result data:data completedBlock:resolve errorPrefix:@"present_payment_pass_view_failed" defaultErrorMessage:@"Failed to present the payment pass view" rejecter:reject]; @@ -56,16 +71,31 @@ - (instancetype)init { } RCT_REMAP_METHOD(IOSHandleAddPaymentPassResponse, +#ifdef RCT_NEW_ARCH_ENABLED IOSHandleAddPaymentPassResponse:(JS::NativeWallet::IOSEncryptPayload &)payload +#else + IOSHandleAddPaymentPassResponse:(NSDictionary *)payload +#endif resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { @try { - NSDictionary *payloadDict = @{ + NSDictionary *payloadDict = nil; + +#ifdef RCT_NEW_ARCH_ENABLED + payloadDict = @{ @"encryptedPassData": [self safeString:payload.encryptedPassData()], @"activationData": [self safeString:payload.activationData()], @"ephemeralPublicKey": [self safeString:payload.ephemeralPublicKey()], }; +#else + payloadDict = @{ + @"encryptedPassData": [self safeString:payload[@"encryptedPassData"]], + @"activationData": [self safeString:payload[@"activationData"]], + @"ephemeralPublicKey": [self safeString:payload[@"ephemeralPublicKey"]], + }; +#endif + dispatch_async(dispatch_get_main_queue(), ^{ [self->walletManager IOSHandleAddPaymentPassResponseWithPayload:payloadDict completion:^(OperationResult result, NSDictionary* data) { [self handleWalletResponse:result data:data completedBlock:resolve errorPrefix:@"add_card_failed" defaultErrorMessage:@"Failed to add the card to the wallet" rejecter:reject]; @@ -93,7 +123,15 @@ - (instancetype)init { resolve([walletManager getCardStatusByIdentifierWithIdentifier:identifier]); } -- (void)addCardToGoogleWallet:(JS::NativeWallet::AndroidCardData &)cardData resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject { +- (void)addCardToGoogleWallet: +#ifdef RCT_NEW_ARCH_ENABLED + (JS::NativeWallet::AndroidCardData &)cardData +#else + (NSDictionary *)cardData +#endif + resolve:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject +{ // no-op } @@ -149,5 +187,4 @@ - (NSString *)safeString:(NSString *)value { } #endif - @end