@expensify/react-native-wallet 0.1.37 → 0.1.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -76,6 +76,8 @@ class WalletModule internal constructor(context: ReactApplicationContext) :
76
76
  pendingCreateWalletPromise?.resolve(resultCode == RESULT_OK)
77
77
  pendingCreateWalletPromise = null
78
78
  } else if (requestCode == REQUEST_CODE_PUSH_TOKENIZE) {
79
+ val localPromise = pendingPushTokenizePromise
80
+ pendingPushTokenizePromise = null
79
81
  if (resultCode == RESULT_OK) {
80
82
  data?.let {
81
83
  val tokenId = it.getStringExtra(TapAndPay.EXTRA_ISSUER_TOKEN_ID).toString()
@@ -84,7 +86,7 @@ class WalletModule internal constructor(context: ReactApplicationContext) :
84
86
  OnCardActivatedEvent.NAME,
85
87
  OnCardActivatedEvent("activated", tokenId).toMap()
86
88
  )
87
- pendingPushTokenizePromise?.resolve(TokenizationStatus.SUCCESS.code)
89
+ localPromise?.resolve(TokenizationStatus.SUCCESS.code)
88
90
  }
89
91
  } else if (resultCode == RESULT_CANCELED) {
90
92
  sendEvent(
@@ -92,7 +94,7 @@ class WalletModule internal constructor(context: ReactApplicationContext) :
92
94
  OnCardActivatedEvent.NAME,
93
95
  OnCardActivatedEvent("canceled", null).toMap()
94
96
  )
95
- pendingPushTokenizePromise?.resolve(TokenizationStatus.CANCELED.code)
97
+ localPromise?.resolve(TokenizationStatus.CANCELED.code)
96
98
  }
97
99
  }
98
100
  }
@@ -185,6 +187,9 @@ class WalletModule internal constructor(context: ReactApplicationContext) :
185
187
  override fun addCardToGoogleWallet(
186
188
  data: ReadableMap, promise: Promise
187
189
  ) {
190
+ if (pendingPushTokenizePromise != null) {
191
+ return promise.reject(E_OPERATION_FAILED, "A tokenization request is already in progress")
192
+ }
188
193
  try {
189
194
  val cardData = data.toCardData() ?: return promise.reject(E_INVALID_DATA, "Insufficient data")
190
195
  val cardNetwork = getCardNetwork(cardData.network)
@@ -205,12 +210,16 @@ class WalletModule internal constructor(context: ReactApplicationContext) :
205
210
  activity, pushTokenizeRequest, REQUEST_CODE_PUSH_TOKENIZE
206
211
  )
207
212
  } catch (e: java.lang.Exception) {
213
+ pendingPushTokenizePromise = null
208
214
  promise.reject(e)
209
215
  }
210
216
  }
211
217
 
212
218
  @ReactMethod
213
219
  override fun resumeAddCardToGoogleWallet(data: ReadableMap, promise: Promise) {
220
+ if (pendingPushTokenizePromise != null) {
221
+ return promise.reject(E_OPERATION_FAILED, "A tokenization request is already in progress")
222
+ }
214
223
  try {
215
224
  val tokenReferenceID = data.getString("tokenReferenceID")
216
225
  ?: return promise.reject(E_INVALID_DATA, "Missing tokenReferenceID")
@@ -232,6 +241,7 @@ class WalletModule internal constructor(context: ReactApplicationContext) :
232
241
  REQUEST_CODE_PUSH_TOKENIZE
233
242
  )
234
243
  } catch (e: java.lang.Exception) {
244
+ pendingPushTokenizePromise = null
235
245
  promise.reject(e)
236
246
  }
237
247
  }
package/ios/RNWallet.mm CHANGED
@@ -7,7 +7,6 @@
7
7
  #import <react_native_wallet-Swift.h>
8
8
  #endif
9
9
 
10
-
11
10
  @interface RNWallet () <WalletDelegate>
12
11
  @end
13
12
 
@@ -34,17 +33,33 @@ RCT_REMAP_METHOD(checkWalletAvailability,
34
33
  }
35
34
 
36
35
  RCT_REMAP_METHOD(IOSPresentAddPaymentPassView,
36
+ #ifdef RCT_NEW_ARCH_ENABLED
37
37
  IOSPresentAddPaymentPassView:(JS::NativeWallet::IOSCardData &)cardData
38
+ #else
39
+ IOSPresentAddPaymentPassView:(NSDictionary *)cardData
40
+ #endif
38
41
  resolve:(RCTPromiseResolveBlock)resolve
39
42
  reject:(RCTPromiseRejectBlock)reject)
40
43
  {
41
44
  @try {
42
- NSDictionary *cardDataDict = @{
45
+ NSDictionary *cardDataDict = nil;
46
+
47
+ #ifdef RCT_NEW_ARCH_ENABLED
48
+ cardDataDict = @{
43
49
  @"network": [self safeString:cardData.network()],
44
50
  @"cardHolderName": [self safeString:cardData.cardHolderName()],
45
51
  @"lastDigits": [self safeString:cardData.lastDigits()],
46
52
  @"cardDescription": [self safeString:cardData.cardDescription()],
47
53
  };
54
+ #else
55
+ cardDataDict = @{
56
+ @"network": [self safeString:cardData[@"network"]],
57
+ @"cardHolderName": [self safeString:cardData[@"cardHolderName"]],
58
+ @"lastDigits": [self safeString:cardData[@"lastDigits"]],
59
+ @"cardDescription": [self safeString:cardData[@"cardDescription"]],
60
+ };
61
+ #endif
62
+
48
63
  dispatch_async(dispatch_get_main_queue(), ^{
49
64
  [self->walletManager IOSPresentAddPaymentPassViewWithCardData:cardDataDict completion:^(OperationResult result, NSDictionary* data) {
50
65
  [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 @@ RCT_REMAP_METHOD(IOSPresentAddPaymentPassView,
56
71
  }
57
72
 
58
73
  RCT_REMAP_METHOD(IOSHandleAddPaymentPassResponse,
74
+ #ifdef RCT_NEW_ARCH_ENABLED
59
75
  IOSHandleAddPaymentPassResponse:(JS::NativeWallet::IOSEncryptPayload &)payload
76
+ #else
77
+ IOSHandleAddPaymentPassResponse:(NSDictionary *)payload
78
+ #endif
60
79
  resolve:(RCTPromiseResolveBlock)resolve
61
80
  reject:(RCTPromiseRejectBlock)reject)
62
81
  {
63
82
  @try {
64
- NSDictionary *payloadDict = @{
83
+ NSDictionary *payloadDict = nil;
84
+
85
+ #ifdef RCT_NEW_ARCH_ENABLED
86
+ payloadDict = @{
65
87
  @"encryptedPassData": [self safeString:payload.encryptedPassData()],
66
88
  @"activationData": [self safeString:payload.activationData()],
67
89
  @"ephemeralPublicKey": [self safeString:payload.ephemeralPublicKey()],
68
90
  };
91
+ #else
92
+ payloadDict = @{
93
+ @"encryptedPassData": [self safeString:payload[@"encryptedPassData"]],
94
+ @"activationData": [self safeString:payload[@"activationData"]],
95
+ @"ephemeralPublicKey": [self safeString:payload[@"ephemeralPublicKey"]],
96
+ };
97
+ #endif
98
+
69
99
  dispatch_async(dispatch_get_main_queue(), ^{
70
100
  [self->walletManager IOSHandleAddPaymentPassResponseWithPayload:payloadDict completion:^(OperationResult result, NSDictionary* data) {
71
101
  [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 @@ RCT_REMAP_METHOD(getCardStatusByIdentifier,
93
123
  resolve([walletManager getCardStatusByIdentifierWithIdentifier:identifier]);
94
124
  }
95
125
 
96
- - (void)addCardToGoogleWallet:(JS::NativeWallet::AndroidCardData &)cardData resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
126
+ - (void)addCardToGoogleWallet:
127
+ #ifdef RCT_NEW_ARCH_ENABLED
128
+ (JS::NativeWallet::AndroidCardData &)cardData
129
+ #else
130
+ (NSDictionary *)cardData
131
+ #endif
132
+ resolve:(RCTPromiseResolveBlock)resolve
133
+ reject:(RCTPromiseRejectBlock)reject
134
+ {
97
135
  // no-op
98
136
  }
99
137
 
@@ -149,5 +187,4 @@ RCT_REMAP_METHOD(getCardStatusByIdentifier,
149
187
  }
150
188
  #endif
151
189
 
152
-
153
190
  @end
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expensify/react-native-wallet",
3
- "version": "0.1.37",
3
+ "version": "0.1.39",
4
4
  "description": "A React Native module designed for seamless integration of Card Push Provisioning into Apple Wallet and Google Wallet, enabling easy and secure addition of payment cards directly from your application.",
5
5
  "source": "./src/index.tsx",
6
6
  "main": "lib/commonjs/index",