Skip to content

Commit d438455

Browse files
committed
Update RN apis and kotlin parsing
1 parent 8aed51e commit d438455

File tree

5 files changed

+51
-51
lines changed

5 files changed

+51
-51
lines changed

android/src/main/java/com/reactnativestripesdk/FakeOnrampSdkModule.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import com.facebook.react.bridge.Promise
44
import com.facebook.react.bridge.ReactApplicationContext
55
import com.facebook.react.bridge.ReactMethod
66
import com.facebook.react.bridge.ReadableMap
7+
import com.facebook.react.bridge.WritableMap
78
import com.facebook.react.module.annotations.ReactModule
89
import com.reactnativestripesdk.utils.createFailedError
910

@@ -119,8 +120,8 @@ class FakeOnrampSdkModule(
119120
}
120121

121122
@ReactMethod
122-
override fun getCryptoTokenDisplayData(token: ReadableMap, promise: Promise) {
123-
promise?.resolveNotImplemented()
123+
override fun getCryptoTokenDisplayData(token: ReadableMap): WritableMap? {
124+
return null
124125
}
125126

126127
private fun Promise.resolveNotImplemented() {

android/src/onramp/java/com/reactnativestripesdk/OnrampSdkModule.kt

Lines changed: 39 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import com.facebook.react.bridge.Promise
1212
import com.facebook.react.bridge.ReactApplicationContext
1313
import com.facebook.react.bridge.ReactMethod
1414
import com.facebook.react.bridge.ReadableMap
15+
import com.facebook.react.bridge.WritableMap
1516
import com.facebook.react.bridge.WritableNativeMap
1617
import com.facebook.react.module.annotations.ReactModule
1718
import com.reactnativestripesdk.utils.ErrorType
@@ -534,47 +535,48 @@ class OnrampSdkModule(
534535
}
535536

536537
@ReactMethod
537-
override fun getCryptoTokenDisplayData(token: ReadableMap, promise: Promise) {
538+
override fun getCryptoTokenDisplayData(token: ReadableMap): WritableMap? {
538539
val context = reactApplicationContext
539-
540-
val paymentDetails: PaymentMethodPreview = when (token.getString("type")) {
541-
"Card" -> {
542-
val brand = token.getString("brand") ?: ""
543-
val funding = token.getString("funding") ?: ""
544-
val last4 = token.getString("last4") ?: ""
545-
val cardBrand = CardBrand.fromCode(brand)
546-
547-
PaymentMethodPreview.create(
548-
context = context,
549-
details = PaymentMethodPreviewDetails.Card(
550-
brand = cardBrand,
551-
funding = funding,
552-
last4 = last4
553-
)
554-
)
540+
541+
val paymentDetails: PaymentMethodPreview? = when {
542+
token.hasKey("card") -> {
543+
val cardMap = token.getMap("card")
544+
if (cardMap != null) {
545+
val brand = cardMap.getString("brand") ?: ""
546+
val funding = cardMap.getString("funding") ?: ""
547+
val last4 = cardMap.getString("last4") ?: ""
548+
val cardBrand = CardBrand.fromCode(brand)
549+
550+
PaymentMethodPreview.create(
551+
context = context,
552+
details = PaymentMethodPreviewDetails.Card(
553+
brand = cardBrand,
554+
funding = funding,
555+
last4 = last4
556+
)
557+
)
558+
} else null
555559
}
556-
"BankAccount" -> {
557-
val bankName = token.getString("bankName")
558-
val last4 = token.getString("last4") ?: ""
559-
PaymentMethodPreview.create(
560-
context = context,
561-
details = PaymentMethodPreviewDetails.BankAccount(
562-
bankIconCode = null,
563-
bankName = bankName,
564-
last4 = last4
565-
)
566-
)
567-
}
568-
else -> {
569-
promise.resolve(
570-
createFailedError(
571-
IllegalArgumentException("Unsupported payment method"),
572-
),
573-
)
574-
return
560+
token.hasKey("us_bank_account") -> {
561+
val bankMap = token.getMap("us_bank_account")
562+
if (bankMap != null) {
563+
val bankName = bankMap.getString("bank_name")
564+
val last4 = bankMap.getString("last4") ?: ""
565+
PaymentMethodPreview.create(
566+
context = context,
567+
details = PaymentMethodPreviewDetails.BankAccount(
568+
bankIconCode = null,
569+
bankName = bankName,
570+
last4 = last4
571+
)
572+
)
573+
} else null
575574
}
575+
else -> null
576576
}
577577

578+
if (paymentDetails == null) return null
579+
578580
val icon =
579581
currentActivity
580582
?.let { ContextCompat.getDrawable(it, paymentDetails.iconRes) }
@@ -586,7 +588,7 @@ class OnrampSdkModule(
586588
displayData.putString("label", paymentDetails.label)
587589
displayData.putString("sublabel", paymentDetails.sublabel)
588590

589-
promise.resolve(createResult("displayData", displayData))
591+
return displayData
590592
}
591593

592594
@ReactMethod

example/src/screens/Onramp/CryptoOnrampFlow.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,8 @@ export default function CryptoOnrampFlow() {
151151
},
152152
};
153153

154-
const cardData = (await getCryptoTokenDisplayData(cardParams)).displayData;
155-
const bankData = (await getCryptoTokenDisplayData(bankParams)).displayData;
154+
const cardData = getCryptoTokenDisplayData(cardParams);
155+
const bankData = getCryptoTokenDisplayData(bankParams);
156156

157157
if (cardData) {
158158
setCurrentPaymentDisplayData(cardData);

src/hooks/useOnramp.tsx

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { EventSubscription } from 'react-native';
22
import NativeOnrampSdk from '../specs/NativeOnrampSdkModule';
3-
import type { Onramp, OnrampError, StripeError } from '../types';
3+
import { Onramp, OnrampError, StripeError } from '../types';
44
import type { PlatformPay } from '../types';
55
import { useCallback } from 'react';
66
import { addOnrampListener } from '../events';
@@ -141,14 +141,11 @@ export function useOnramp() {
141141
[]
142142
);
143143

144-
const _getCryptoTokenDisplayData = useCallback(
145-
async (
146-
token: CryptoPaymentToken
147-
): Promise<Onramp.PaymentDisplayDataResult> => {
148-
return NativeOnrampSdk.getCryptoTokenDisplayData(token);
149-
},
150-
[]
151-
);
144+
const _getCryptoTokenDisplayData = (
145+
token: CryptoPaymentToken
146+
): Onramp.PaymentMethodDisplayData | null => {
147+
return NativeOnrampSdk.getCryptoTokenDisplayData(token);
148+
};
152149

153150
const _logOut = useCallback(async (): Promise<{
154151
error?: StripeError<OnrampError>;

src/specs/NativeOnrampSdkModule.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export interface Spec extends TurboModule {
3838
onrampAuthorize(linkAuthIntentId: string): Promise<Onramp.AuthorizeResult>;
3939
getCryptoTokenDisplayData(
4040
token: UnsafeObject<CryptoPaymentToken>
41-
): Promise<Onramp.PaymentDisplayDataResult>;
41+
): UnsafeObject<Onramp.PaymentMethodDisplayData> | null;
4242
logout(): Promise<Onramp.VoidResult>;
4343
}
4444

0 commit comments

Comments
 (0)