@stripe/stripe-react-native 0.42.0 → 0.43.0
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.
- package/.husky/pre-commit +0 -3
- package/CHANGELOG.md +14 -0
- package/android/.gradle/8.11.1/checksums/checksums.lock +0 -0
- package/android/.gradle/8.11.1/checksums/md5-checksums.bin +0 -0
- package/android/.gradle/8.11.1/checksums/sha1-checksums.bin +0 -0
- package/android/.gradle/8.11.1/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/8.11.1/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +2 -2
- package/android/.project +0 -11
- package/android/.settings/org.eclipse.buildship.core.prefs +3 -3
- package/android/build.gradle +7 -1
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +7 -0
- package/android/gradle.properties +4 -1
- package/android/gradlew +249 -0
- package/android/gradlew.bat +92 -0
- package/android/spotless.gradle +19 -0
- package/android/src/main/java/com/reactnativestripesdk/AuBECSDebitFormView.kt +30 -34
- package/android/src/main/java/com/reactnativestripesdk/AuBECSDebitFormViewManager.kt +20 -10
- package/android/src/main/java/com/reactnativestripesdk/CardChangedEvent.kt +12 -13
- package/android/src/main/java/com/reactnativestripesdk/CardFieldView.kt +242 -105
- package/android/src/main/java/com/reactnativestripesdk/CardFieldViewManager.kt +58 -20
- package/android/src/main/java/com/reactnativestripesdk/CardFocusEvent.kt +8 -11
- package/android/src/main/java/com/reactnativestripesdk/CardFormCompleteEvent.kt +10 -12
- package/android/src/main/java/com/reactnativestripesdk/CardFormView.kt +135 -87
- package/android/src/main/java/com/reactnativestripesdk/CardFormViewManager.kt +57 -22
- package/android/src/main/java/com/reactnativestripesdk/CollectBankAccountLauncherFragment.kt +33 -24
- package/android/src/main/java/com/reactnativestripesdk/FinancialConnectionsSheetFragment.kt +107 -85
- package/android/src/main/java/com/reactnativestripesdk/FormCompleteEvent.kt +9 -11
- package/android/src/main/java/com/reactnativestripesdk/GooglePayButtonManager.kt +16 -9
- package/android/src/main/java/com/reactnativestripesdk/GooglePayButtonView.kt +36 -28
- package/android/src/main/java/com/reactnativestripesdk/GooglePayLauncherFragment.kt +67 -43
- package/android/src/main/java/com/reactnativestripesdk/GooglePayPaymentMethodLauncherFragment.kt +21 -16
- package/android/src/main/java/com/reactnativestripesdk/GooglePayRequestHelper.kt +101 -56
- package/android/src/main/java/com/reactnativestripesdk/PaymentLauncherFragment.kt +244 -166
- package/android/src/main/java/com/reactnativestripesdk/PaymentMethodCreateParamsFactory.kt +137 -156
- package/android/src/main/java/com/reactnativestripesdk/PaymentSheetAppearance.kt +181 -57
- package/android/src/main/java/com/reactnativestripesdk/PaymentSheetFragment.kt +402 -258
- package/android/src/main/java/com/reactnativestripesdk/StripeContainerManager.kt +11 -4
- package/android/src/main/java/com/reactnativestripesdk/StripeContainerView.kt +5 -1
- package/android/src/main/java/com/reactnativestripesdk/StripeSdkModule.kt +654 -299
- package/android/src/main/java/com/reactnativestripesdk/StripeSdkPackage.kt +12 -14
- package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressLauncherFragment.kt +42 -37
- package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressSheetEvent.kt +12 -11
- package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressSheetView.kt +29 -29
- package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressSheetViewManager.kt +50 -18
- package/android/src/main/java/com/reactnativestripesdk/customersheet/CustomerSheetFragment.kt +227 -147
- package/android/src/main/java/com/reactnativestripesdk/customersheet/ReactNativeCustomerAdapter.kt +15 -18
- package/android/src/main/java/com/reactnativestripesdk/pushprovisioning/AddToWalletButtonManager.kt +33 -15
- package/android/src/main/java/com/reactnativestripesdk/pushprovisioning/AddToWalletButtonView.kt +63 -37
- package/android/src/main/java/com/reactnativestripesdk/pushprovisioning/AddToWalletCompleteEvent.kt +9 -13
- package/android/src/main/java/com/reactnativestripesdk/pushprovisioning/EphemeralKeyProvider.kt +15 -17
- package/android/src/main/java/com/reactnativestripesdk/pushprovisioning/PushProvisioningProxy.kt +76 -60
- package/android/src/main/java/com/reactnativestripesdk/pushprovisioning/TapAndPayProxy.kt +71 -47
- package/android/src/main/java/com/reactnativestripesdk/utils/Errors.kt +117 -51
- package/android/src/main/java/com/reactnativestripesdk/utils/Extensions.kt +4 -3
- package/android/src/main/java/com/reactnativestripesdk/utils/KeepJsAwakeTask.kt +39 -0
- package/android/src/main/java/com/reactnativestripesdk/utils/Mappers.kt +295 -258
- package/android/src/main/java/com/reactnativestripesdk/utils/PostalCodeUtilities.kt +2 -11
- package/ios/CustomerSheet/CustomerSheetUtils.swift +3 -1
- package/ios/FinancialConnections.swift +6 -2
- package/ios/StripeSdk+CustomerSheet.swift +2 -1
- package/ios/StripeSdk+PaymentSheet.swift +42 -0
- package/ios/StripeSdk.m +2 -0
- package/ios/StripeSdk.swift +72 -11
- package/lib/commonjs/NativeStripeSdk.js +1 -1
- package/lib/commonjs/NativeStripeSdk.js.map +1 -1
- package/lib/commonjs/components/AddToWalletButton.js +1 -1
- package/lib/commonjs/components/AddToWalletButton.js.map +1 -1
- package/lib/commonjs/components/AddressSheet.js +1 -1
- package/lib/commonjs/components/AddressSheet.js.map +1 -1
- package/lib/commonjs/components/ApplePayButtonNative.js +1 -1
- package/lib/commonjs/components/ApplePayButtonNative.js.map +1 -1
- package/lib/commonjs/components/AuBECSDebitForm.js +1 -1
- package/lib/commonjs/components/AuBECSDebitForm.js.map +1 -1
- package/lib/commonjs/components/CardField.js +1 -1
- package/lib/commonjs/components/CardField.js.map +1 -1
- package/lib/commonjs/components/CardForm.js +1 -1
- package/lib/commonjs/components/CardForm.js.map +1 -1
- package/lib/commonjs/components/CustomerSheet.js +1 -1
- package/lib/commonjs/components/CustomerSheet.js.map +1 -1
- package/lib/commonjs/components/GooglePayButtonNative.js +1 -1
- package/lib/commonjs/components/GooglePayButtonNative.js.map +1 -1
- package/lib/commonjs/components/PlatformPayButton.js +1 -1
- package/lib/commonjs/components/PlatformPayButton.js.map +1 -1
- package/lib/commonjs/components/StripeContainer.js +1 -1
- package/lib/commonjs/components/StripeContainer.js.map +1 -1
- package/lib/commonjs/components/StripeProvider.js +1 -1
- package/lib/commonjs/components/StripeProvider.js.map +1 -1
- package/lib/commonjs/functions.js +1 -1
- package/lib/commonjs/functions.js.map +1 -1
- package/lib/commonjs/helpers.js +1 -1
- package/lib/commonjs/helpers.js.map +1 -1
- package/lib/commonjs/hooks/useConfirmPayment.js.map +1 -1
- package/lib/commonjs/hooks/useConfirmSetupIntent.js.map +1 -1
- package/lib/commonjs/hooks/useFinancialConnectionsSheet.js.map +1 -1
- package/lib/commonjs/hooks/usePaymentSheet.js.map +1 -1
- package/lib/commonjs/hooks/usePlatformPay.js.map +1 -1
- package/lib/commonjs/hooks/useStripe.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/plugin/withStripe.js +1 -1
- package/lib/commonjs/plugin/withStripe.js.map +1 -1
- package/lib/commonjs/types/ApplePay.js.map +1 -1
- package/lib/commonjs/types/Common.js +1 -1
- package/lib/commonjs/types/Common.js.map +1 -1
- package/lib/commonjs/types/CustomerSheet.js.map +1 -1
- package/lib/commonjs/types/Errors.js +1 -1
- package/lib/commonjs/types/Errors.js.map +1 -1
- package/lib/commonjs/types/FinancialConnections.js +1 -1
- package/lib/commonjs/types/FinancialConnections.js.map +1 -1
- package/lib/commonjs/types/NextAction.js.map +1 -1
- package/lib/commonjs/types/PaymentIntent.js +1 -1
- package/lib/commonjs/types/PaymentIntent.js.map +1 -1
- package/lib/commonjs/types/PaymentMethod.js.map +1 -1
- package/lib/commonjs/types/PaymentSheet.js +1 -1
- package/lib/commonjs/types/PaymentSheet.js.map +1 -1
- package/lib/commonjs/types/PlatformPay.js +1 -1
- package/lib/commonjs/types/PlatformPay.js.map +1 -1
- package/lib/commonjs/types/PushProvisioning.js +1 -1
- package/lib/commonjs/types/PushProvisioning.js.map +1 -1
- package/lib/commonjs/types/SetupIntent.js +1 -1
- package/lib/commonjs/types/SetupIntent.js.map +1 -1
- package/lib/commonjs/types/ThreeDSecure.js +1 -1
- package/lib/commonjs/types/ThreeDSecure.js.map +1 -1
- package/lib/commonjs/types/Token.js.map +1 -1
- package/lib/commonjs/types/components/ApplePayButtonComponent.js.map +1 -1
- package/lib/commonjs/types/components/AuBECSDebitFormComponent.js.map +1 -1
- package/lib/commonjs/types/components/CardFieldInput.js +1 -1
- package/lib/commonjs/types/components/CardFieldInput.js.map +1 -1
- package/lib/commonjs/types/components/CardFormView.js.map +1 -1
- package/lib/commonjs/types/components/GooglePayButtonComponent.js.map +1 -1
- package/lib/commonjs/types/index.js +1 -1
- package/lib/commonjs/types/index.js.map +1 -1
- package/lib/module/NativeStripeSdk.js +1 -1
- package/lib/module/NativeStripeSdk.js.map +1 -1
- package/lib/module/components/AddToWalletButton.js +1 -1
- package/lib/module/components/AddToWalletButton.js.map +1 -1
- package/lib/module/components/AddressSheet.js +1 -1
- package/lib/module/components/AddressSheet.js.map +1 -1
- package/lib/module/components/ApplePayButtonNative.js +1 -1
- package/lib/module/components/ApplePayButtonNative.js.map +1 -1
- package/lib/module/components/AuBECSDebitForm.js +1 -1
- package/lib/module/components/AuBECSDebitForm.js.map +1 -1
- package/lib/module/components/CardField.js +1 -1
- package/lib/module/components/CardField.js.map +1 -1
- package/lib/module/components/CardForm.js +1 -1
- package/lib/module/components/CardForm.js.map +1 -1
- package/lib/module/components/CustomerSheet.js +1 -1
- package/lib/module/components/CustomerSheet.js.map +1 -1
- package/lib/module/components/GooglePayButtonNative.js +1 -1
- package/lib/module/components/GooglePayButtonNative.js.map +1 -1
- package/lib/module/components/PlatformPayButton.js +1 -1
- package/lib/module/components/PlatformPayButton.js.map +1 -1
- package/lib/module/components/StripeContainer.js +1 -1
- package/lib/module/components/StripeContainer.js.map +1 -1
- package/lib/module/components/StripeProvider.js +1 -1
- package/lib/module/components/StripeProvider.js.map +1 -1
- package/lib/module/functions.js +1 -1
- package/lib/module/functions.js.map +1 -1
- package/lib/module/helpers.js +1 -1
- package/lib/module/helpers.js.map +1 -1
- package/lib/module/hooks/useConfirmPayment.js.map +1 -1
- package/lib/module/hooks/useConfirmSetupIntent.js.map +1 -1
- package/lib/module/hooks/useFinancialConnectionsSheet.js.map +1 -1
- package/lib/module/hooks/usePaymentSheet.js.map +1 -1
- package/lib/module/hooks/usePlatformPay.js.map +1 -1
- package/lib/module/hooks/useStripe.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/package.json +1 -0
- package/lib/module/plugin/withStripe.js +1 -1
- package/lib/module/plugin/withStripe.js.map +1 -1
- package/lib/module/types/ApplePay.js.map +1 -1
- package/lib/module/types/Common.js +1 -1
- package/lib/module/types/Common.js.map +1 -1
- package/lib/module/types/CustomerSheet.js.map +1 -1
- package/lib/module/types/Errors.js +1 -1
- package/lib/module/types/Errors.js.map +1 -1
- package/lib/module/types/FinancialConnections.js +1 -1
- package/lib/module/types/FinancialConnections.js.map +1 -1
- package/lib/module/types/NextAction.js.map +1 -1
- package/lib/module/types/PaymentIntent.js +1 -1
- package/lib/module/types/PaymentIntent.js.map +1 -1
- package/lib/module/types/PaymentMethod.js.map +1 -1
- package/lib/module/types/PaymentSheet.js +1 -1
- package/lib/module/types/PaymentSheet.js.map +1 -1
- package/lib/module/types/PlatformPay.js +1 -1
- package/lib/module/types/PlatformPay.js.map +1 -1
- package/lib/module/types/PushProvisioning.js +1 -1
- package/lib/module/types/PushProvisioning.js.map +1 -1
- package/lib/module/types/SetupIntent.js +1 -1
- package/lib/module/types/SetupIntent.js.map +1 -1
- package/lib/module/types/ThreeDSecure.js +1 -1
- package/lib/module/types/ThreeDSecure.js.map +1 -1
- package/lib/module/types/Token.js.map +1 -1
- package/lib/module/types/components/ApplePayButtonComponent.js.map +1 -1
- package/lib/module/types/components/AuBECSDebitFormComponent.js.map +1 -1
- package/lib/module/types/components/CardFieldInput.js +1 -1
- package/lib/module/types/components/CardFieldInput.js.map +1 -1
- package/lib/module/types/components/CardFormView.js.map +1 -1
- package/lib/module/types/components/GooglePayButtonComponent.js.map +1 -1
- package/lib/module/types/index.js +1 -1
- package/lib/module/types/index.js.map +1 -1
- package/lib/typescript/src/NativeStripeSdk.d.ts +4 -3
- package/lib/typescript/src/NativeStripeSdk.d.ts.map +1 -0
- package/lib/typescript/src/components/AddToWalletButton.d.ts +3 -1
- package/lib/typescript/src/components/AddToWalletButton.d.ts.map +1 -0
- package/lib/typescript/src/components/AddressSheet.d.ts +4 -2
- package/lib/typescript/src/components/AddressSheet.d.ts.map +1 -0
- package/lib/typescript/src/components/ApplePayButtonNative.d.ts +1 -0
- package/lib/typescript/src/components/ApplePayButtonNative.d.ts.map +1 -0
- package/lib/typescript/src/components/AuBECSDebitForm.d.ts +3 -1
- package/lib/typescript/src/components/AuBECSDebitForm.d.ts.map +1 -0
- package/lib/typescript/src/components/CardField.d.ts +1 -0
- package/lib/typescript/src/components/CardField.d.ts.map +1 -0
- package/lib/typescript/src/components/CardForm.d.ts +1 -0
- package/lib/typescript/src/components/CardForm.d.ts.map +1 -0
- package/lib/typescript/src/components/CustomerSheet.d.ts +2 -1
- package/lib/typescript/src/components/CustomerSheet.d.ts.map +1 -0
- package/lib/typescript/src/components/GooglePayButtonNative.d.ts +1 -0
- package/lib/typescript/src/components/GooglePayButtonNative.d.ts.map +1 -0
- package/lib/typescript/src/components/PlatformPayButton.d.ts +3 -1
- package/lib/typescript/src/components/PlatformPayButton.d.ts.map +1 -0
- package/lib/typescript/src/components/StripeContainer.d.ts +2 -1
- package/lib/typescript/src/components/StripeContainer.d.ts.map +1 -0
- package/lib/typescript/src/components/StripeProvider.d.ts +3 -2
- package/lib/typescript/src/components/StripeProvider.d.ts.map +1 -0
- package/lib/typescript/src/functions.d.ts +6 -5
- package/lib/typescript/src/functions.d.ts.map +1 -0
- package/lib/typescript/src/helpers.d.ts +1 -0
- package/lib/typescript/src/helpers.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useConfirmPayment.d.ts +2 -1
- package/lib/typescript/src/hooks/useConfirmPayment.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useConfirmSetupIntent.d.ts +1 -0
- package/lib/typescript/src/hooks/useConfirmSetupIntent.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useFinancialConnectionsSheet.d.ts +3 -2
- package/lib/typescript/src/hooks/useFinancialConnectionsSheet.d.ts.map +1 -0
- package/lib/typescript/src/hooks/usePaymentSheet.d.ts +2 -1
- package/lib/typescript/src/hooks/usePaymentSheet.d.ts.map +1 -0
- package/lib/typescript/src/hooks/usePlatformPay.d.ts +4 -3
- package/lib/typescript/src/hooks/usePlatformPay.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useStripe.d.ts +11 -8
- package/lib/typescript/src/hooks/useStripe.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/plugin/withStripe.d.ts +2 -1
- package/lib/typescript/src/plugin/withStripe.d.ts.map +1 -0
- package/lib/typescript/src/types/ApplePay.d.ts +6 -5
- package/lib/typescript/src/types/ApplePay.d.ts.map +1 -0
- package/lib/typescript/src/types/Common.d.ts +4 -1
- package/lib/typescript/src/types/Common.d.ts.map +1 -0
- package/lib/typescript/src/types/CustomerSheet.d.ts +12 -4
- package/lib/typescript/src/types/CustomerSheet.d.ts.map +1 -0
- package/lib/typescript/src/types/Errors.d.ts +2 -1
- package/lib/typescript/src/types/Errors.d.ts.map +1 -0
- package/lib/typescript/src/types/FinancialConnections.d.ts +21 -17
- package/lib/typescript/src/types/FinancialConnections.d.ts.map +1 -0
- package/lib/typescript/src/types/NextAction.d.ts +9 -8
- package/lib/typescript/src/types/NextAction.d.ts.map +1 -0
- package/lib/typescript/src/types/PaymentIntent.d.ts +16 -15
- package/lib/typescript/src/types/PaymentIntent.d.ts.map +1 -0
- package/lib/typescript/src/types/PaymentMethod.d.ts +21 -16
- package/lib/typescript/src/types/PaymentMethod.d.ts.map +1 -0
- package/lib/typescript/src/types/PaymentSheet.d.ts +72 -22
- package/lib/typescript/src/types/PaymentSheet.d.ts.map +1 -0
- package/lib/typescript/src/types/PlatformPay.d.ts +22 -21
- package/lib/typescript/src/types/PlatformPay.d.ts.map +1 -0
- package/lib/typescript/src/types/PushProvisioning.d.ts +5 -4
- package/lib/typescript/src/types/PushProvisioning.d.ts.map +1 -0
- package/lib/typescript/src/types/SetupIntent.d.ts +4 -3
- package/lib/typescript/src/types/SetupIntent.d.ts.map +1 -0
- package/lib/typescript/src/types/ThreeDSecure.d.ts +1 -0
- package/lib/typescript/src/types/ThreeDSecure.d.ts.map +1 -0
- package/lib/typescript/src/types/Token.d.ts +10 -9
- package/lib/typescript/src/types/Token.d.ts.map +1 -0
- package/lib/typescript/src/types/components/ApplePayButtonComponent.d.ts +3 -2
- package/lib/typescript/src/types/components/ApplePayButtonComponent.d.ts.map +1 -0
- package/lib/typescript/src/types/components/AuBECSDebitFormComponent.d.ts +1 -0
- package/lib/typescript/src/types/components/AuBECSDebitFormComponent.d.ts.map +1 -0
- package/lib/typescript/src/types/components/CardFieldInput.d.ts +8 -5
- package/lib/typescript/src/types/components/CardFieldInput.d.ts.map +1 -0
- package/lib/typescript/src/types/components/CardFormView.d.ts +9 -6
- package/lib/typescript/src/types/components/CardFormView.d.ts.map +1 -0
- package/lib/typescript/src/types/components/GooglePayButtonComponent.d.ts +1 -0
- package/lib/typescript/src/types/components/GooglePayButtonComponent.d.ts.map +1 -0
- package/lib/typescript/src/types/index.d.ts +24 -23
- package/lib/typescript/src/types/index.d.ts.map +1 -0
- package/package.json +32 -40
- package/src/NativeStripeSdk.tsx +4 -2
- package/src/components/CardField.tsx +1 -1
- package/src/components/CardForm.tsx +12 -9
- package/src/components/CustomerSheet.tsx +4 -6
- package/src/components/StripeProvider.tsx +17 -0
- package/src/functions.ts +13 -14
- package/src/types/Common.ts +3 -0
- package/src/types/CustomerSheet.ts +7 -0
- package/src/types/FinancialConnections.ts +3 -0
- package/src/types/PaymentMethod.ts +5 -1
- package/src/types/PaymentSheet.ts +64 -4
- package/src/types/components/CardFieldInput.ts +8 -4
- package/src/types/components/CardFormView.ts +8 -4
- package/stripe-react-native.podspec +2 -1
- package/android/.gradle/8.9/checksums/checksums.lock +0 -0
- package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/8.9/gc.properties +0 -0
- /package/android/.gradle/{8.9 → 8.11.1}/fileChanges/last-build.bin +0 -0
- /package/android/.gradle/{8.9/dependencies-accessors → 8.11.1}/gc.properties +0 -0
|
@@ -3,18 +3,18 @@ package com.reactnativestripesdk
|
|
|
3
3
|
import com.facebook.react.bridge.Arguments
|
|
4
4
|
import com.facebook.react.bridge.WritableMap
|
|
5
5
|
import com.facebook.react.uimanager.events.Event
|
|
6
|
-
import com.facebook.react.uimanager.events.RCTEventEmitter
|
|
7
6
|
|
|
8
|
-
internal class CardChangedEvent
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
7
|
+
internal class CardChangedEvent(
|
|
8
|
+
surfaceId: Int,
|
|
9
|
+
viewTag: Int,
|
|
10
|
+
private val cardDetails: MutableMap<String, Any?>,
|
|
11
|
+
private val postalCodeEnabled: Boolean,
|
|
12
|
+
private val complete: Boolean,
|
|
13
|
+
private val dangerouslyGetFullCardDetails: Boolean,
|
|
14
|
+
) : Event<CardChangedEvent>(surfaceId, viewTag) {
|
|
15
|
+
override fun getEventName(): String = EVENT_NAME
|
|
16
|
+
|
|
17
|
+
override fun getEventData(): WritableMap? {
|
|
18
18
|
val eventData = Arguments.createMap()
|
|
19
19
|
eventData.putString("brand", cardDetails["brand"]?.toString())
|
|
20
20
|
eventData.putString("last4", cardDetails["last4"]?.toString())
|
|
@@ -49,7 +49,6 @@ internal class CardChangedEvent constructor(viewTag: Int, private val cardDetail
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
companion object {
|
|
52
|
-
const val EVENT_NAME = "
|
|
52
|
+
const val EVENT_NAME = "topCardChange"
|
|
53
53
|
}
|
|
54
|
-
|
|
55
54
|
}
|
|
@@ -13,14 +13,18 @@ import androidx.core.os.LocaleListCompat
|
|
|
13
13
|
import com.facebook.react.bridge.ReadableMap
|
|
14
14
|
import com.facebook.react.uimanager.PixelUtil
|
|
15
15
|
import com.facebook.react.uimanager.ThemedReactContext
|
|
16
|
-
import com.facebook.react.uimanager.
|
|
17
|
-
import com.facebook.react.uimanager.events.EventDispatcher
|
|
16
|
+
import com.facebook.react.uimanager.UIManagerHelper
|
|
18
17
|
import com.facebook.react.views.text.ReactTypefaceUtils
|
|
19
18
|
import com.google.android.material.shape.CornerFamily
|
|
20
19
|
import com.google.android.material.shape.MaterialShapeDrawable
|
|
21
20
|
import com.google.android.material.shape.ShapeAppearanceModel
|
|
22
|
-
import com.reactnativestripesdk.utils
|
|
21
|
+
import com.reactnativestripesdk.utils.PostalCodeUtilities
|
|
22
|
+
import com.reactnativestripesdk.utils.getIntOrNull
|
|
23
|
+
import com.reactnativestripesdk.utils.getValOr
|
|
24
|
+
import com.reactnativestripesdk.utils.hideSoftKeyboard
|
|
23
25
|
import com.reactnativestripesdk.utils.mapCardBrand
|
|
26
|
+
import com.reactnativestripesdk.utils.mapToPreferredNetworks
|
|
27
|
+
import com.reactnativestripesdk.utils.showSoftKeyboard
|
|
24
28
|
import com.stripe.android.core.model.CountryCode
|
|
25
29
|
import com.stripe.android.core.model.CountryUtils
|
|
26
30
|
import com.stripe.android.databinding.StripeCardInputWidgetBinding
|
|
@@ -31,13 +35,25 @@ import com.stripe.android.view.CardInputWidget
|
|
|
31
35
|
import com.stripe.android.view.CardValidCallback
|
|
32
36
|
import com.stripe.android.view.StripeEditText
|
|
33
37
|
|
|
34
|
-
|
|
38
|
+
@SuppressLint("ViewConstructor")
|
|
39
|
+
class CardFieldView(
|
|
40
|
+
private val context: ThemedReactContext,
|
|
41
|
+
) : FrameLayout(context) {
|
|
35
42
|
private var mCardWidget: CardInputWidget = CardInputWidget(context)
|
|
36
43
|
private val cardInputWidgetBinding = StripeCardInputWidgetBinding.bind(mCardWidget)
|
|
37
|
-
val cardDetails: MutableMap<String, Any?> =
|
|
44
|
+
val cardDetails: MutableMap<String, Any?> =
|
|
45
|
+
mutableMapOf(
|
|
46
|
+
"brand" to "",
|
|
47
|
+
"last4" to "",
|
|
48
|
+
"expiryMonth" to null,
|
|
49
|
+
"expiryYear" to null,
|
|
50
|
+
"postalCode" to "",
|
|
51
|
+
"validNumber" to "Unknown",
|
|
52
|
+
"validCVC" to "Unknown",
|
|
53
|
+
"validExpiryDate" to "Unknown",
|
|
54
|
+
)
|
|
38
55
|
var cardParams: PaymentMethodCreateParams.Card? = null
|
|
39
56
|
var cardAddress: Address? = null
|
|
40
|
-
private var mEventDispatcher: EventDispatcher? = context.getNativeModule(UIManagerModule::class.java)?.eventDispatcher
|
|
41
57
|
private var dangerouslyGetFullCardDetails: Boolean = false
|
|
42
58
|
private var currentFocusedField: String? = null
|
|
43
59
|
private var isCardValid = false
|
|
@@ -81,8 +97,9 @@ class CardFieldView(context: ThemedReactContext) : FrameLayout(context) {
|
|
|
81
97
|
}
|
|
82
98
|
|
|
83
99
|
private fun onChangeFocus() {
|
|
84
|
-
|
|
85
|
-
|
|
100
|
+
UIManagerHelper
|
|
101
|
+
.getEventDispatcherForReactTag(context, id)
|
|
102
|
+
?.dispatchEvent(CardFocusEvent(context.surfaceId, id, currentFocusedField))
|
|
86
103
|
}
|
|
87
104
|
|
|
88
105
|
fun setCardStyle(value: ReadableMap) {
|
|
@@ -96,12 +113,13 @@ class CardFieldView(context: ThemedReactContext) : FrameLayout(context) {
|
|
|
96
113
|
val placeholderColor = getValOr(value, "placeholderColor", null)
|
|
97
114
|
val textErrorColor = getValOr(value, "textErrorColor", null)
|
|
98
115
|
val cursorColor = getValOr(value, "cursorColor", null)
|
|
99
|
-
val bindings =
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
116
|
+
val bindings =
|
|
117
|
+
setOf(
|
|
118
|
+
cardInputWidgetBinding.cardNumberEditText,
|
|
119
|
+
cardInputWidgetBinding.cvcEditText,
|
|
120
|
+
cardInputWidgetBinding.expiryDateEditText,
|
|
121
|
+
cardInputWidgetBinding.postalCodeEditText,
|
|
122
|
+
)
|
|
105
123
|
|
|
106
124
|
textColor?.let {
|
|
107
125
|
for (editTextBinding in bindings) {
|
|
@@ -127,7 +145,14 @@ class CardFieldView(context: ThemedReactContext) : FrameLayout(context) {
|
|
|
127
145
|
fontFamily?.let {
|
|
128
146
|
for (editTextBinding in bindings) {
|
|
129
147
|
// Load custom font from assets, and fallback to default system font
|
|
130
|
-
editTextBinding.typeface =
|
|
148
|
+
editTextBinding.typeface =
|
|
149
|
+
ReactTypefaceUtils.applyStyles(
|
|
150
|
+
null,
|
|
151
|
+
-1,
|
|
152
|
+
-1,
|
|
153
|
+
it.takeIf { it.isNotEmpty() },
|
|
154
|
+
context.assets,
|
|
155
|
+
)
|
|
131
156
|
}
|
|
132
157
|
}
|
|
133
158
|
cursorColor?.let {
|
|
@@ -144,25 +169,26 @@ class CardFieldView(context: ThemedReactContext) : FrameLayout(context) {
|
|
|
144
169
|
}
|
|
145
170
|
|
|
146
171
|
mCardWidget.setPadding(20, 0, 20, 0)
|
|
147
|
-
mCardWidget.background =
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
172
|
+
mCardWidget.background =
|
|
173
|
+
MaterialShapeDrawable(
|
|
174
|
+
ShapeAppearanceModel()
|
|
175
|
+
.toBuilder()
|
|
176
|
+
.setAllCorners(CornerFamily.ROUNDED, PixelUtil.toPixelFromDIP(borderRadius.toDouble()))
|
|
177
|
+
.build(),
|
|
178
|
+
).also { shape ->
|
|
179
|
+
shape.strokeWidth = 0.0f
|
|
180
|
+
shape.strokeColor = ColorStateList.valueOf(Color.parseColor("#000000"))
|
|
181
|
+
shape.fillColor = ColorStateList.valueOf(Color.parseColor("#FFFFFF"))
|
|
182
|
+
borderWidth?.let {
|
|
183
|
+
shape.strokeWidth = PixelUtil.toPixelFromDIP(it.toDouble())
|
|
184
|
+
}
|
|
185
|
+
borderColor?.let {
|
|
186
|
+
shape.strokeColor = ColorStateList.valueOf(Color.parseColor(it))
|
|
187
|
+
}
|
|
188
|
+
backgroundColor?.let {
|
|
189
|
+
shape.fillColor = ColorStateList.valueOf(Color.parseColor(it))
|
|
190
|
+
}
|
|
164
191
|
}
|
|
165
|
-
}
|
|
166
192
|
}
|
|
167
193
|
|
|
168
194
|
private fun setCardBrandTint(color: Int) {
|
|
@@ -175,7 +201,8 @@ class CardFieldView(context: ThemedReactContext) : FrameLayout(context) {
|
|
|
175
201
|
} catch (e: Exception) {
|
|
176
202
|
Log.e(
|
|
177
203
|
"StripeReactNative",
|
|
178
|
-
"Unable to set card brand tint color: " + e.message
|
|
204
|
+
"Unable to set card brand tint color: " + e.message,
|
|
205
|
+
)
|
|
179
206
|
}
|
|
180
207
|
}
|
|
181
208
|
|
|
@@ -230,22 +257,25 @@ class CardFieldView(context: ThemedReactContext) : FrameLayout(context) {
|
|
|
230
257
|
@SuppressLint("RestrictedApi")
|
|
231
258
|
fun setCountryCode(countryString: String?) {
|
|
232
259
|
if (mCardWidget.postalCodeEnabled) {
|
|
233
|
-
val countryCode =
|
|
260
|
+
val countryCode =
|
|
261
|
+
CountryCode.create(
|
|
262
|
+
value = countryString ?: LocaleListCompat.getAdjustedDefault()[0]?.country ?: "US",
|
|
263
|
+
)
|
|
234
264
|
mCardWidget.postalCodeRequired = CountryUtils.doesCountryUsePostalCode(countryCode)
|
|
235
265
|
setPostalCodeFilter(countryCode)
|
|
236
266
|
}
|
|
237
267
|
}
|
|
238
268
|
|
|
239
|
-
fun getValue(): MutableMap<String, Any?>
|
|
240
|
-
return cardDetails
|
|
241
|
-
}
|
|
269
|
+
fun getValue(): MutableMap<String, Any?> = cardDetails
|
|
242
270
|
|
|
243
271
|
private fun onValidCardChange() {
|
|
244
272
|
mCardWidget.paymentMethodCard?.let {
|
|
245
273
|
cardParams = it
|
|
246
|
-
cardAddress =
|
|
247
|
-
|
|
248
|
-
|
|
274
|
+
cardAddress =
|
|
275
|
+
Address
|
|
276
|
+
.Builder()
|
|
277
|
+
.setPostalCode(cardDetails["postalCode"] as String?)
|
|
278
|
+
.build()
|
|
249
279
|
} ?: run {
|
|
250
280
|
cardParams = null
|
|
251
281
|
cardAddress = null
|
|
@@ -262,8 +292,18 @@ class CardFieldView(context: ThemedReactContext) : FrameLayout(context) {
|
|
|
262
292
|
}
|
|
263
293
|
|
|
264
294
|
private fun sendCardDetailsEvent() {
|
|
265
|
-
|
|
266
|
-
|
|
295
|
+
UIManagerHelper
|
|
296
|
+
.getEventDispatcherForReactTag(context, id)
|
|
297
|
+
?.dispatchEvent(
|
|
298
|
+
CardChangedEvent(
|
|
299
|
+
context.surfaceId,
|
|
300
|
+
id,
|
|
301
|
+
cardDetails,
|
|
302
|
+
mCardWidget.postalCodeEnabled,
|
|
303
|
+
isCardValid,
|
|
304
|
+
dangerouslyGetFullCardDetails,
|
|
305
|
+
),
|
|
306
|
+
)
|
|
267
307
|
}
|
|
268
308
|
|
|
269
309
|
private fun setListeners() {
|
|
@@ -286,17 +326,33 @@ class CardFieldView(context: ThemedReactContext) : FrameLayout(context) {
|
|
|
286
326
|
|
|
287
327
|
mCardWidget.setCardValidCallback { isValid, invalidFields ->
|
|
288
328
|
isCardValid = isValid
|
|
289
|
-
|
|
329
|
+
|
|
330
|
+
fun getCardValidationState(
|
|
331
|
+
field: CardValidCallback.Fields,
|
|
332
|
+
editTextField: StripeEditText,
|
|
333
|
+
): String {
|
|
290
334
|
if (invalidFields.contains(field)) {
|
|
291
|
-
return if (editTextField.shouldShowError)
|
|
292
|
-
|
|
335
|
+
return if (editTextField.shouldShowError) {
|
|
336
|
+
"Invalid"
|
|
337
|
+
} else {
|
|
338
|
+
"Incomplete"
|
|
339
|
+
}
|
|
293
340
|
}
|
|
294
341
|
return "Valid"
|
|
295
342
|
}
|
|
296
343
|
|
|
297
|
-
cardDetails["validNumber"] =
|
|
298
|
-
|
|
299
|
-
|
|
344
|
+
cardDetails["validNumber"] =
|
|
345
|
+
getCardValidationState(
|
|
346
|
+
CardValidCallback.Fields.Number,
|
|
347
|
+
cardInputWidgetBinding.cardNumberEditText,
|
|
348
|
+
)
|
|
349
|
+
cardDetails["validCVC"] =
|
|
350
|
+
getCardValidationState(CardValidCallback.Fields.Cvc, cardInputWidgetBinding.cvcEditText)
|
|
351
|
+
cardDetails["validExpiryDate"] =
|
|
352
|
+
getCardValidationState(
|
|
353
|
+
CardValidCallback.Fields.Expiry,
|
|
354
|
+
cardInputWidgetBinding.expiryDateEditText,
|
|
355
|
+
)
|
|
300
356
|
cardDetails["brand"] = mapCardBrand(cardInputWidgetBinding.cardNumberEditText.cardBrand)
|
|
301
357
|
|
|
302
358
|
if (isValid) {
|
|
@@ -308,69 +364,148 @@ class CardFieldView(context: ThemedReactContext) : FrameLayout(context) {
|
|
|
308
364
|
}
|
|
309
365
|
}
|
|
310
366
|
|
|
311
|
-
mCardWidget.setCardInputListener(
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
367
|
+
mCardWidget.setCardInputListener(
|
|
368
|
+
object : CardInputListener {
|
|
369
|
+
override fun onCardComplete() {}
|
|
370
|
+
|
|
371
|
+
override fun onExpirationComplete() {}
|
|
372
|
+
|
|
373
|
+
override fun onCvcComplete() {}
|
|
374
|
+
|
|
375
|
+
override fun onPostalCodeComplete() {}
|
|
376
|
+
|
|
377
|
+
override fun onFocusChange(focusField: CardInputListener.FocusField) {}
|
|
378
|
+
},
|
|
379
|
+
)
|
|
380
|
+
|
|
381
|
+
mCardWidget.setExpiryDateTextWatcher(
|
|
382
|
+
object : TextWatcher {
|
|
383
|
+
override fun beforeTextChanged(
|
|
384
|
+
p0: CharSequence?,
|
|
385
|
+
p1: Int,
|
|
386
|
+
p2: Int,
|
|
387
|
+
p3: Int,
|
|
388
|
+
) {
|
|
328
389
|
}
|
|
329
|
-
}
|
|
330
|
-
})
|
|
331
390
|
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
391
|
+
override fun afterTextChanged(p0: Editable?) {}
|
|
392
|
+
|
|
393
|
+
override fun onTextChanged(
|
|
394
|
+
var1: CharSequence?,
|
|
395
|
+
var2: Int,
|
|
396
|
+
var3: Int,
|
|
397
|
+
var4: Int,
|
|
398
|
+
) {
|
|
399
|
+
val splitText = var1.toString().split("/")
|
|
400
|
+
cardDetails["expiryMonth"] = splitText[0].toIntOrNull()
|
|
401
|
+
|
|
402
|
+
if (splitText.size == 2) {
|
|
403
|
+
cardDetails["expiryYear"] = var1.toString().split("/")[1].toIntOrNull()
|
|
404
|
+
}
|
|
346
405
|
}
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
mCardWidget.
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
406
|
+
},
|
|
407
|
+
)
|
|
408
|
+
|
|
409
|
+
mCardWidget.setPostalCodeTextWatcher(
|
|
410
|
+
object : TextWatcher {
|
|
411
|
+
override fun beforeTextChanged(
|
|
412
|
+
p0: CharSequence?,
|
|
413
|
+
p1: Int,
|
|
414
|
+
p2: Int,
|
|
415
|
+
p3: Int,
|
|
416
|
+
) {
|
|
356
417
|
}
|
|
357
|
-
|
|
358
|
-
|
|
418
|
+
|
|
419
|
+
override fun afterTextChanged(p0: Editable?) {}
|
|
420
|
+
|
|
421
|
+
override fun onTextChanged(
|
|
422
|
+
var1: CharSequence?,
|
|
423
|
+
var2: Int,
|
|
424
|
+
var3: Int,
|
|
425
|
+
var4: Int,
|
|
426
|
+
) {
|
|
427
|
+
cardDetails["postalCode"] = var1.toString()
|
|
428
|
+
}
|
|
429
|
+
},
|
|
430
|
+
)
|
|
431
|
+
|
|
432
|
+
mCardWidget.setCardNumberTextWatcher(
|
|
433
|
+
object : TextWatcher {
|
|
434
|
+
override fun beforeTextChanged(
|
|
435
|
+
p0: CharSequence?,
|
|
436
|
+
p1: Int,
|
|
437
|
+
p2: Int,
|
|
438
|
+
p3: Int,
|
|
439
|
+
) {
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
override fun afterTextChanged(p0: Editable?) {}
|
|
443
|
+
|
|
444
|
+
override fun onTextChanged(
|
|
445
|
+
var1: CharSequence?,
|
|
446
|
+
var2: Int,
|
|
447
|
+
var3: Int,
|
|
448
|
+
var4: Int,
|
|
449
|
+
) {
|
|
450
|
+
if (dangerouslyGetFullCardDetails) {
|
|
451
|
+
cardDetails["number"] = var1.toString().replace(" ", "")
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
},
|
|
455
|
+
)
|
|
456
|
+
|
|
457
|
+
mCardWidget.setCvcNumberTextWatcher(
|
|
458
|
+
object : TextWatcher {
|
|
459
|
+
override fun beforeTextChanged(
|
|
460
|
+
p0: CharSequence?,
|
|
461
|
+
p1: Int,
|
|
462
|
+
p2: Int,
|
|
463
|
+
p3: Int,
|
|
464
|
+
) {
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
override fun afterTextChanged(p0: Editable?) {}
|
|
468
|
+
|
|
469
|
+
override fun onTextChanged(
|
|
470
|
+
var1: CharSequence?,
|
|
471
|
+
var2: Int,
|
|
472
|
+
var3: Int,
|
|
473
|
+
var4: Int,
|
|
474
|
+
) {
|
|
475
|
+
if (dangerouslyGetFullCardDetails) {
|
|
476
|
+
cardDetails["cvc"] = var1.toString()
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
},
|
|
480
|
+
)
|
|
359
481
|
}
|
|
360
482
|
|
|
483
|
+
@SuppressLint("RestrictedApi")
|
|
361
484
|
private fun setPostalCodeFilter(countryCode: CountryCode) {
|
|
362
|
-
cardInputWidgetBinding.postalCodeEditText.filters =
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
485
|
+
cardInputWidgetBinding.postalCodeEditText.filters =
|
|
486
|
+
arrayOf(
|
|
487
|
+
*cardInputWidgetBinding.postalCodeEditText.filters,
|
|
488
|
+
createPostalCodeInputFilter(countryCode),
|
|
489
|
+
)
|
|
366
490
|
}
|
|
367
491
|
|
|
368
492
|
@SuppressLint("RestrictedApi")
|
|
369
493
|
private fun createPostalCodeInputFilter(countryCode: CountryCode): InputFilter {
|
|
370
494
|
return InputFilter { charSequence, start, end, _, _, _ ->
|
|
371
495
|
for (i in start until end) {
|
|
372
|
-
val isValidCharacter =
|
|
373
|
-
(
|
|
496
|
+
val isValidCharacter =
|
|
497
|
+
(
|
|
498
|
+
countryCode == CountryCode.US &&
|
|
499
|
+
PostalCodeUtilities.isValidUsPostalCodeCharacter(
|
|
500
|
+
charSequence[i],
|
|
501
|
+
)
|
|
502
|
+
) ||
|
|
503
|
+
(
|
|
504
|
+
countryCode != CountryCode.US &&
|
|
505
|
+
PostalCodeUtilities.isValidGlobalPostalCodeCharacter(
|
|
506
|
+
charSequence[i],
|
|
507
|
+
)
|
|
508
|
+
)
|
|
374
509
|
if (!isValidCharacter) {
|
|
375
510
|
return@InputFilter ""
|
|
376
511
|
}
|
|
@@ -384,10 +519,12 @@ class CardFieldView(context: ThemedReactContext) : FrameLayout(context) {
|
|
|
384
519
|
post(mLayoutRunnable)
|
|
385
520
|
}
|
|
386
521
|
|
|
387
|
-
private val mLayoutRunnable =
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
522
|
+
private val mLayoutRunnable =
|
|
523
|
+
Runnable {
|
|
524
|
+
measure(
|
|
525
|
+
MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
|
|
526
|
+
MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY),
|
|
527
|
+
)
|
|
528
|
+
layout(left, top, right, bottom)
|
|
529
|
+
}
|
|
393
530
|
}
|
|
@@ -2,23 +2,28 @@ package com.reactnativestripesdk
|
|
|
2
2
|
|
|
3
3
|
import com.facebook.react.bridge.ReadableArray
|
|
4
4
|
import com.facebook.react.bridge.ReadableMap
|
|
5
|
-
import com.facebook.react.
|
|
5
|
+
import com.facebook.react.module.annotations.ReactModule
|
|
6
6
|
import com.facebook.react.uimanager.SimpleViewManager
|
|
7
7
|
import com.facebook.react.uimanager.ThemedReactContext
|
|
8
8
|
import com.facebook.react.uimanager.annotations.ReactProp
|
|
9
9
|
|
|
10
|
+
@ReactModule(name = CardFieldViewManager.REACT_CLASS)
|
|
10
11
|
class CardFieldViewManager : SimpleViewManager<CardFieldView>() {
|
|
11
|
-
override fun getName() =
|
|
12
|
+
override fun getName() = REACT_CLASS
|
|
12
13
|
|
|
13
14
|
private var reactContextRef: ThemedReactContext? = null
|
|
14
15
|
|
|
15
|
-
override fun getExportedCustomDirectEventTypeConstants()
|
|
16
|
-
|
|
17
|
-
CardFocusEvent.EVENT_NAME
|
|
18
|
-
CardChangedEvent.EVENT_NAME
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
override fun receiveCommand(
|
|
16
|
+
override fun getExportedCustomDirectEventTypeConstants() =
|
|
17
|
+
mutableMapOf(
|
|
18
|
+
CardFocusEvent.EVENT_NAME to mutableMapOf("registrationName" to "onFocusChange"),
|
|
19
|
+
CardChangedEvent.EVENT_NAME to mutableMapOf("registrationName" to "onCardChange"),
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
override fun receiveCommand(
|
|
23
|
+
root: CardFieldView,
|
|
24
|
+
commandId: String?,
|
|
25
|
+
args: ReadableArray?,
|
|
26
|
+
) {
|
|
22
27
|
when (commandId) {
|
|
23
28
|
"focus" -> root.requestFocusFromJS()
|
|
24
29
|
"blur" -> root.requestBlurFromJS()
|
|
@@ -27,53 +32,81 @@ class CardFieldViewManager : SimpleViewManager<CardFieldView>() {
|
|
|
27
32
|
}
|
|
28
33
|
|
|
29
34
|
@ReactProp(name = "dangerouslyGetFullCardDetails")
|
|
30
|
-
fun setDangerouslyGetFullCardDetails(
|
|
35
|
+
fun setDangerouslyGetFullCardDetails(
|
|
36
|
+
view: CardFieldView,
|
|
37
|
+
dangerouslyGetFullCardDetails: Boolean = false,
|
|
38
|
+
) {
|
|
31
39
|
view.setDangerouslyGetFullCardDetails(dangerouslyGetFullCardDetails)
|
|
32
40
|
}
|
|
33
41
|
|
|
34
42
|
@ReactProp(name = "postalCodeEnabled")
|
|
35
|
-
fun setPostalCodeEnabled(
|
|
43
|
+
fun setPostalCodeEnabled(
|
|
44
|
+
view: CardFieldView,
|
|
45
|
+
postalCodeEnabled: Boolean = true,
|
|
46
|
+
) {
|
|
36
47
|
view.setPostalCodeEnabled(postalCodeEnabled)
|
|
37
48
|
}
|
|
38
49
|
|
|
39
50
|
@ReactProp(name = "autofocus")
|
|
40
|
-
fun setAutofocus(
|
|
51
|
+
fun setAutofocus(
|
|
52
|
+
view: CardFieldView,
|
|
53
|
+
autofocus: Boolean = false,
|
|
54
|
+
) {
|
|
41
55
|
view.setAutofocus(autofocus)
|
|
42
56
|
}
|
|
43
57
|
|
|
44
58
|
@ReactProp(name = "cardStyle")
|
|
45
|
-
fun setCardStyle(
|
|
59
|
+
fun setCardStyle(
|
|
60
|
+
view: CardFieldView,
|
|
61
|
+
cardStyle: ReadableMap,
|
|
62
|
+
) {
|
|
46
63
|
view.setCardStyle(cardStyle)
|
|
47
64
|
}
|
|
48
65
|
|
|
49
66
|
@ReactProp(name = "countryCode")
|
|
50
|
-
fun setCountryCode(
|
|
67
|
+
fun setCountryCode(
|
|
68
|
+
view: CardFieldView,
|
|
69
|
+
countryCode: String?,
|
|
70
|
+
) {
|
|
51
71
|
view.setCountryCode(countryCode)
|
|
52
72
|
}
|
|
53
73
|
|
|
54
74
|
@ReactProp(name = "onBehalfOf")
|
|
55
|
-
fun setOnBehalfOf(
|
|
75
|
+
fun setOnBehalfOf(
|
|
76
|
+
view: CardFieldView,
|
|
77
|
+
onBehalfOf: String?,
|
|
78
|
+
) {
|
|
56
79
|
view.setOnBehalfOf(onBehalfOf)
|
|
57
80
|
}
|
|
58
81
|
|
|
59
82
|
@ReactProp(name = "placeholders")
|
|
60
|
-
fun setPlaceHolders(
|
|
83
|
+
fun setPlaceHolders(
|
|
84
|
+
view: CardFieldView,
|
|
85
|
+
placeholders: ReadableMap,
|
|
86
|
+
) {
|
|
61
87
|
view.setPlaceHolders(placeholders)
|
|
62
88
|
}
|
|
63
89
|
|
|
64
90
|
@ReactProp(name = "disabled")
|
|
65
|
-
fun setDisabled(
|
|
91
|
+
fun setDisabled(
|
|
92
|
+
view: CardFieldView,
|
|
93
|
+
isDisabled: Boolean,
|
|
94
|
+
) {
|
|
66
95
|
view.setDisabled(isDisabled)
|
|
67
96
|
}
|
|
68
97
|
|
|
69
98
|
@ReactProp(name = "preferredNetworks")
|
|
70
|
-
fun setPreferredNetworks(
|
|
99
|
+
fun setPreferredNetworks(
|
|
100
|
+
view: CardFieldView,
|
|
101
|
+
preferredNetworks: ReadableArray?,
|
|
102
|
+
) {
|
|
71
103
|
val networks = preferredNetworks?.toArrayList()?.filterIsInstance<Int>()?.let { ArrayList(it) }
|
|
72
104
|
view.setPreferredNetworks(networks)
|
|
73
105
|
}
|
|
74
106
|
|
|
75
107
|
override fun createViewInstance(reactContext: ThemedReactContext): CardFieldView {
|
|
76
|
-
val stripeSdkModule: StripeSdkModule? =
|
|
108
|
+
val stripeSdkModule: StripeSdkModule? =
|
|
109
|
+
reactContext.getNativeModule(StripeSdkModule::class.java)
|
|
77
110
|
val view = CardFieldView(reactContext)
|
|
78
111
|
|
|
79
112
|
reactContextRef = reactContext
|
|
@@ -85,8 +118,13 @@ class CardFieldViewManager : SimpleViewManager<CardFieldView>() {
|
|
|
85
118
|
override fun onDropViewInstance(view: CardFieldView) {
|
|
86
119
|
super.onDropViewInstance(view)
|
|
87
120
|
|
|
88
|
-
val stripeSdkModule: StripeSdkModule? =
|
|
121
|
+
val stripeSdkModule: StripeSdkModule? =
|
|
122
|
+
reactContextRef?.getNativeModule(StripeSdkModule::class.java)
|
|
89
123
|
stripeSdkModule?.cardFieldView = null
|
|
90
124
|
reactContextRef = null
|
|
91
125
|
}
|
|
126
|
+
|
|
127
|
+
companion object {
|
|
128
|
+
const val REACT_CLASS = "CardField"
|
|
129
|
+
}
|
|
92
130
|
}
|