@primer-io/react-native 2.16.7 → 2.17.0-rc.10
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/android/.project +2 -2
- package/android/build.gradle +2 -3
- package/android/gradle.properties +1 -1
- package/android/src/main/java/com/primerioreactnative/PrimerCardNumberEditTextManager.kt +0 -15
- package/android/src/main/java/com/primerioreactnative/PrimerRN.kt +15 -2
- package/android/src/main/java/com/primerioreactnative/PrimerRNEventListener.kt +23 -8
- package/android/src/main/java/com/primerioreactnative/PrimerRNHeadlessUniversalCheckout.kt +20 -120
- package/android/src/main/java/com/primerioreactnative/PrimerRNHeadlessUniversalCheckoutListener.kt +61 -69
- package/android/src/main/java/com/primerioreactnative/ReactNativePackage.kt +6 -2
- package/android/src/main/java/com/primerioreactnative/{huc → components}/assets/AssetsManager.kt +5 -14
- package/android/src/main/java/com/primerioreactnative/components/assets/CardNetworkImageFileProvider.kt +23 -0
- package/android/src/main/java/com/primerioreactnative/components/assets/PaymentMethodAssetFileProvider.kt +24 -0
- package/android/src/main/java/com/primerioreactnative/components/datamodels/core/PrimerRNHeadlessUniversalCheckoutPaymentMethod.kt +25 -0
- package/android/src/main/java/com/primerioreactnative/components/datamodels/core/PrimerRawPaymentMethodType.kt +9 -0
- package/android/src/main/java/com/primerioreactnative/components/datamodels/manager/asset/PrimerRNAsset.kt +106 -0
- package/android/src/main/java/com/primerioreactnative/{huc/datamodels/manager/raw/card/PrimerRNRawCardData.kt → components/datamodels/manager/raw/card/PrimerRNCardData.kt} +6 -8
- package/android/src/main/java/com/primerioreactnative/components/datamodels/manager/raw/cardRedirect/PrimerRNCardRedirectData.kt +19 -0
- package/android/src/main/java/com/primerioreactnative/components/datamodels/manager/raw/phoneNumber/PrimerRNPhoneNumberData.kt +14 -0
- package/android/src/main/java/com/primerioreactnative/components/datamodels/manager/raw/retailOutlets/PrimerRNRetailOutletData.kt +12 -0
- package/android/src/main/java/com/primerioreactnative/{huc → components}/datamodels/manager/raw/retailOutlets/RNRetailOutletsList.kt +1 -1
- package/android/src/main/java/com/primerioreactnative/components/events/PrimerHeadlessUniversalCheckoutEvent.kt +17 -0
- package/android/src/main/java/com/primerioreactnative/{huc → components}/events/PrimerHeadlessUniversalCheckoutRawDataManagerEvent.kt +1 -2
- package/android/src/main/java/com/primerioreactnative/components/manager/asset/PrimerRNHeadlessUniversalCheckoutAssetManager.kt +131 -0
- package/android/src/main/java/com/primerioreactnative/components/manager/nativeUi/PrimerRNHeadlessUniversalCheckoutNativeUiManager.kt +87 -0
- package/android/src/main/java/com/primerioreactnative/{huc → components}/manager/raw/PrimerRNHeadlessUniversalCheckoutRawManager.kt +72 -68
- package/android/src/main/java/com/primerioreactnative/{huc → components}/manager/raw/PrimerRNHeadlessUniversalCheckoutRawManagerListener.kt +13 -5
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerErrorRN.kt +5 -4
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerInputValidationErrorRN.kt +11 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerSettingsRN.kt +13 -9
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerPaymentMethodOptionsRN.kt +3 -3
- package/android/src/main/java/com/primerioreactnative/utils/PrimerHeadlessUniversalCheckoutImplementedRNCallbacks.kt +15 -15
- package/android/src/main/java/com/primerioreactnative/utils/PrimerImplementedRNCallbacks.kt +7 -7
- package/ios/Podfile.lock +1 -1
- package/ios/ReactNative.xcodeproj/project.pbxproj +20 -20
- package/ios/Sources/DataModels/ImplementedRNCallbacks.swift +75 -0
- package/ios/{DataModels/RNTPrimerCardRedirectData.swift → Sources/DataModels/PrimerBancontactCardRedirectData+Extension.swift} +5 -8
- package/ios/{DataModels/RNTPrimerCardData.swift → Sources/DataModels/PrimerCardData+Extension.swift} +2 -5
- package/ios/Sources/DataModels/PrimerHeadlessUniversalCheckout_PaymentMethod.swift +20 -0
- package/ios/{DataModels/RNTPrimerPhoneNumberData.swift → Sources/DataModels/PrimerPhoneNumberData+Extension.swift} +0 -1
- package/ios/{DataModels/RNTPrimerRetailerData.swift → Sources/DataModels/PrimerRawRetailerData+Extension.swift} +3 -4
- package/ios/Sources/DataModels/PrimerSettings+Extensions.swift +94 -0
- package/ios/Sources/DataModels/RNTNativeError.swift +22 -0
- package/ios/Sources/DataModels/RNTPrimerPaymentMethodAsset.swift +67 -0
- package/ios/Sources/Headless Universal Checkout/Managers/Payment Method Managers/RNTNativeUIManager.m +19 -0
- package/ios/Sources/Headless Universal Checkout/Managers/Payment Method Managers/RNTNativeUIManager.swift +63 -0
- package/ios/Sources/Headless Universal Checkout/Managers/Payment Method Managers/RNTRawDataManager.m +23 -0
- package/ios/{Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutRawDataManager.swift → Sources/Headless Universal Checkout/Managers/Payment Method Managers/RNTRawDataManager.swift } +36 -31
- package/ios/Sources/Headless Universal Checkout/Managers/RNTAssetsManager.m +24 -0
- package/ios/Sources/Headless Universal Checkout/Managers/RNTAssetsManager.swift +107 -0
- package/ios/Sources/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.m +41 -0
- package/ios/Sources/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.swift +498 -0
- package/ios/Sources/Helpers/Encodable+Extension.swift +17 -0
- package/ios/Sources/Helpers/Error+Extensions.swift +39 -0
- package/ios/Sources/Helpers/UIColor+Extensions.swift +32 -0
- package/ios/Sources/Helpers/UIImage+Extensions.swift +32 -0
- package/ios/Sources/RNTPrimer.m +86 -0
- package/ios/{RNTPrimer.swift → Sources/RNTPrimer.swift} +37 -28
- package/lib/commonjs/HeadlessUniversalCheckout/Managers/AssetsManager.js +59 -0
- package/lib/commonjs/HeadlessUniversalCheckout/Managers/AssetsManager.js.map +1 -0
- package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/NativeUIManager.js +35 -0
- package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/NativeUIManager.js.map +1 -0
- package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js +151 -0
- package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js.map +1 -0
- package/lib/commonjs/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js +270 -0
- package/lib/commonjs/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js.map +1 -0
- package/lib/commonjs/{headless_checkout → HeadlessUniversalCheckout}/RNPrimerHeadlessUniversalCheckout.js +7 -81
- package/lib/commonjs/HeadlessUniversalCheckout/RNPrimerHeadlessUniversalCheckout.js.map +1 -0
- package/lib/commonjs/HeadlessUniversalCheckout/types.js +34 -0
- package/lib/commonjs/HeadlessUniversalCheckout/types.js.map +1 -0
- package/lib/commonjs/Primer.js +24 -23
- package/lib/commonjs/Primer.js.map +1 -1
- package/lib/commonjs/PrimerInput.js.map +1 -1
- package/lib/commonjs/RNPrimer.js +4 -4
- package/lib/commonjs/RNPrimer.js.map +1 -1
- package/lib/commonjs/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js.map +1 -1
- package/lib/commonjs/index.js +63 -71
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/models/PrimerAsset.js +2 -0
- package/lib/commonjs/models/PrimerAsset.js.map +1 -0
- package/lib/commonjs/models/PrimerCheckoutAdditionalInfo.js.map +1 -1
- package/lib/commonjs/models/PrimerCheckoutData.js.map +1 -1
- package/lib/commonjs/models/PrimerCheckoutPaymentMethodData.js.map +1 -1
- package/lib/commonjs/models/PrimerClientSession.js.map +1 -1
- package/lib/commonjs/models/PrimerCountryCode.js.map +1 -1
- package/lib/commonjs/models/PrimerCurrencyCode.js.map +1 -1
- package/lib/commonjs/models/PrimerError.js +4 -4
- package/lib/commonjs/models/PrimerError.js.map +1 -1
- package/lib/commonjs/models/PrimerHandlers.js +2 -0
- package/lib/commonjs/models/PrimerHandlers.js.map +1 -0
- package/lib/commonjs/models/PrimerHeadlessUniversalCheckoutPaymentMethod.js +2 -0
- package/lib/commonjs/models/PrimerHeadlessUniversalCheckoutPaymentMethod.js.map +1 -0
- package/lib/commonjs/models/PrimerImplementedRNCallbacks.js +2 -0
- package/lib/commonjs/models/PrimerImplementedRNCallbacks.js.map +1 -0
- package/lib/commonjs/models/PrimerInitializationData.js.map +1 -1
- package/lib/commonjs/models/PrimerInputElementType.js +20 -0
- package/lib/commonjs/models/PrimerInputElementType.js.map +1 -0
- package/lib/commonjs/models/PrimerInterfaces.js.map +1 -1
- package/lib/commonjs/models/PrimerPaymentMethodManagerCategory.js +14 -0
- package/lib/commonjs/models/PrimerPaymentMethodManagerCategory.js.map +1 -0
- package/lib/commonjs/models/PrimerPaymentMethodTokenData.js.map +1 -1
- package/lib/commonjs/models/PrimerRawData.js.map +1 -1
- package/lib/commonjs/models/PrimerSessionIntent.js.map +1 -1
- package/lib/commonjs/models/PrimerSettings.js.map +1 -1
- package/lib/commonjs/models/PrimerTheme.js.map +1 -1
- package/lib/commonjs/models/RetailOutletsRetail.js.map +1 -1
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/module/HeadlessUniversalCheckout/Managers/AssetsManager.js +52 -0
- package/lib/module/HeadlessUniversalCheckout/Managers/AssetsManager.js.map +1 -0
- package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/NativeUIManager.js +28 -0
- package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/NativeUIManager.js.map +1 -0
- package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js +144 -0
- package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js.map +1 -0
- package/lib/module/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js +261 -0
- package/lib/module/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js.map +1 -0
- package/lib/module/{headless_checkout → HeadlessUniversalCheckout}/RNPrimerHeadlessUniversalCheckout.js +7 -81
- package/lib/module/HeadlessUniversalCheckout/RNPrimerHeadlessUniversalCheckout.js.map +1 -0
- package/lib/module/HeadlessUniversalCheckout/types.js +33 -0
- package/lib/module/HeadlessUniversalCheckout/types.js.map +1 -0
- package/lib/module/Primer.js +24 -23
- package/lib/module/Primer.js.map +1 -1
- package/lib/module/PrimerInput.js.map +1 -1
- package/lib/module/RNPrimer.js +4 -4
- package/lib/module/RNPrimer.js.map +1 -1
- package/lib/module/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js.map +1 -1
- package/lib/module/index.js +15 -9
- package/lib/module/index.js.map +1 -1
- package/lib/module/models/PrimerAsset.js +2 -0
- package/lib/module/models/PrimerAsset.js.map +1 -0
- package/lib/module/models/PrimerCheckoutAdditionalInfo.js.map +1 -1
- package/lib/module/models/PrimerCheckoutData.js.map +1 -1
- package/lib/module/models/PrimerCheckoutPaymentMethodData.js.map +1 -1
- package/lib/module/models/PrimerClientSession.js.map +1 -1
- package/lib/module/models/PrimerCountryCode.js.map +1 -1
- package/lib/module/models/PrimerCurrencyCode.js.map +1 -1
- package/lib/module/models/PrimerError.js +4 -4
- package/lib/module/models/PrimerError.js.map +1 -1
- package/lib/module/models/PrimerHandlers.js +2 -0
- package/lib/module/models/PrimerHandlers.js.map +1 -0
- package/lib/module/models/PrimerHeadlessUniversalCheckoutPaymentMethod.js +2 -0
- package/lib/module/models/PrimerHeadlessUniversalCheckoutPaymentMethod.js.map +1 -0
- package/lib/module/models/PrimerImplementedRNCallbacks.js +2 -0
- package/lib/module/models/PrimerImplementedRNCallbacks.js.map +1 -0
- package/lib/module/models/PrimerInitializationData.js.map +1 -1
- package/lib/module/models/PrimerInputElementType.js +13 -0
- package/lib/module/models/PrimerInputElementType.js.map +1 -0
- package/lib/module/models/PrimerInterfaces.js.map +1 -1
- package/lib/module/models/PrimerPaymentMethodManagerCategory.js +7 -0
- package/lib/module/models/PrimerPaymentMethodManagerCategory.js.map +1 -0
- package/lib/module/models/PrimerPaymentMethodTokenData.js.map +1 -1
- package/lib/module/models/PrimerRawData.js.map +1 -1
- package/lib/module/models/PrimerSessionIntent.js.map +1 -1
- package/lib/module/models/PrimerSettings.js.map +1 -1
- package/lib/module/models/PrimerTheme.js.map +1 -1
- package/lib/module/models/RetailOutletsRetail.js.map +1 -1
- package/lib/module/utils/index.js.map +1 -1
- package/lib/typescript/HeadlessUniversalCheckout/Managers/AssetsManager.d.ts +9 -0
- package/lib/typescript/HeadlessUniversalCheckout/Managers/AssetsManager.d.ts.map +1 -0
- package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/NativeUIManager.d.ts +8 -0
- package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/NativeUIManager.d.ts.map +1 -0
- package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.d.ts +29 -0
- package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.d.ts.map +1 -0
- package/lib/typescript/{headless_checkout → HeadlessUniversalCheckout}/PrimerHeadlessUniversalCheckout.d.ts +4 -5
- package/lib/typescript/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.d.ts.map +1 -0
- package/lib/typescript/HeadlessUniversalCheckout/RNPrimerHeadlessUniversalCheckout.d.ts +18 -0
- package/lib/typescript/HeadlessUniversalCheckout/RNPrimerHeadlessUniversalCheckout.d.ts.map +1 -0
- package/lib/typescript/HeadlessUniversalCheckout/types.d.ts +1 -0
- package/lib/typescript/HeadlessUniversalCheckout/types.d.ts.map +1 -0
- package/lib/typescript/Primer.d.ts +1 -0
- package/lib/typescript/Primer.d.ts.map +1 -0
- package/lib/typescript/PrimerInput.d.ts +5 -4
- package/lib/typescript/PrimerInput.d.ts.map +1 -0
- package/lib/typescript/RNPrimer.d.ts +4 -4
- package/lib/typescript/RNPrimer.d.ts.map +1 -0
- package/lib/typescript/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.d.ts +1 -0
- package/lib/typescript/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +18 -9
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/models/PrimerAsset.d.ts +15 -0
- package/lib/typescript/models/PrimerAsset.d.ts.map +1 -0
- package/lib/typescript/models/PrimerCheckoutAdditionalInfo.d.ts +7 -6
- package/lib/typescript/models/PrimerCheckoutAdditionalInfo.d.ts.map +1 -0
- package/lib/typescript/models/PrimerCheckoutData.d.ts +3 -2
- package/lib/typescript/models/PrimerCheckoutData.d.ts.map +1 -0
- package/lib/typescript/models/PrimerCheckoutPaymentMethodData.d.ts +2 -1
- package/lib/typescript/models/PrimerCheckoutPaymentMethodData.d.ts.map +1 -0
- package/lib/typescript/models/PrimerClientSession.d.ts +6 -5
- package/lib/typescript/models/PrimerClientSession.d.ts.map +1 -0
- package/lib/typescript/models/PrimerCountryCode.d.ts +2 -1
- package/lib/typescript/models/PrimerCountryCode.d.ts.map +1 -0
- package/lib/typescript/models/PrimerCurrencyCode.d.ts +2 -1
- package/lib/typescript/models/PrimerCurrencyCode.d.ts.map +1 -0
- package/lib/typescript/models/PrimerError.d.ts +3 -1
- package/lib/typescript/models/PrimerError.d.ts.map +1 -0
- package/lib/typescript/models/PrimerHandlers.d.ts +22 -0
- package/lib/typescript/models/PrimerHandlers.d.ts.map +1 -0
- package/lib/typescript/models/PrimerHeadlessUniversalCheckoutPaymentMethod.d.ts +6 -0
- package/lib/typescript/models/PrimerHeadlessUniversalCheckoutPaymentMethod.d.ts.map +1 -0
- package/lib/typescript/models/PrimerImplementedRNCallbacks.d.ts +17 -0
- package/lib/typescript/models/PrimerImplementedRNCallbacks.d.ts.map +1 -0
- package/lib/typescript/models/PrimerInitializationData.d.ts +3 -2
- package/lib/typescript/models/PrimerInitializationData.d.ts.map +1 -0
- package/lib/typescript/models/PrimerInputElementType.d.ts +12 -0
- package/lib/typescript/models/PrimerInputElementType.d.ts.map +1 -0
- package/lib/typescript/models/PrimerInterfaces.d.ts +3 -20
- package/lib/typescript/models/PrimerInterfaces.d.ts.map +1 -0
- package/lib/typescript/models/PrimerPaymentMethodManagerCategory.d.ts +6 -0
- package/lib/typescript/models/PrimerPaymentMethodManagerCategory.d.ts.map +1 -0
- package/lib/typescript/models/PrimerPaymentMethodTokenData.d.ts +2 -1
- package/lib/typescript/models/PrimerPaymentMethodTokenData.d.ts.map +1 -0
- package/lib/typescript/models/PrimerRawData.d.ts +7 -10
- package/lib/typescript/models/PrimerRawData.d.ts.map +1 -0
- package/lib/typescript/models/PrimerSessionIntent.d.ts +1 -0
- package/lib/typescript/models/PrimerSessionIntent.d.ts.map +1 -0
- package/lib/typescript/models/PrimerSettings.d.ts +28 -6
- package/lib/typescript/models/PrimerSettings.d.ts.map +1 -0
- package/lib/typescript/models/PrimerTheme.d.ts +3 -2
- package/lib/typescript/models/PrimerTheme.d.ts.map +1 -0
- package/lib/typescript/models/RetailOutletsRetail.d.ts +2 -1
- package/lib/typescript/models/RetailOutletsRetail.d.ts.map +1 -0
- package/lib/typescript/utils/index.d.ts +1 -0
- package/lib/typescript/utils/index.d.ts.map +1 -0
- package/package.json +8 -7
- package/primer-io-react-native.podspec +1 -2
- package/src/HeadlessUniversalCheckout/Managers/AssetsManager.ts +56 -0
- package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/NativeUIManager.ts +31 -0
- package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.ts +166 -0
- package/src/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.ts +333 -0
- package/src/{headless_checkout → HeadlessUniversalCheckout}/RNPrimerHeadlessUniversalCheckout.ts +37 -128
- package/src/HeadlessUniversalCheckout/types.ts +32 -0
- package/src/Primer.ts +32 -31
- package/src/RNPrimer.ts +4 -9
- package/src/index.tsx +43 -29
- package/src/models/PrimerAsset.ts +14 -0
- package/src/models/PrimerError.ts +3 -1
- package/src/models/PrimerHandlers.ts +25 -0
- package/src/models/PrimerHeadlessUniversalCheckoutPaymentMethod.ts +5 -0
- package/src/models/PrimerImplementedRNCallbacks.ts +20 -0
- package/src/models/PrimerInputElementType.ts +11 -0
- package/src/models/PrimerInterfaces.ts +2 -28
- package/src/models/PrimerPaymentMethodManagerCategory.ts +5 -0
- package/src/models/PrimerRawData.ts +6 -10
- package/src/models/PrimerSettings.ts +42 -16
- package/android/src/main/java/com/primerioreactnative/huc/datamodels/manager/raw/cardRedirect/PrimerRNPRawCardRedirectData.kt +0 -20
- package/android/src/main/java/com/primerioreactnative/huc/datamodels/manager/raw/phoneNumber/PrimerRNRawPhoneNumberData.kt +0 -14
- package/android/src/main/java/com/primerioreactnative/huc/datamodels/manager/raw/retailOutlets/PrimerRNRawRetailOutletData.kt +0 -12
- package/android/src/main/java/com/primerioreactnative/huc/events/PrimerHeadlessUniversalCheckoutEvent.kt +0 -15
- package/ios/DataModels/ImplementedRNCallbacks.swift +0 -62
- package/ios/DataModels/PrimerErrorRN.swift +0 -35
- package/ios/DataModels/PrimerSettingsRN.swift +0 -84
- package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.m +0 -62
- package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.swift +0 -501
- package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.m +0 -14
- package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.swift +0 -117
- package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutRawDataManager.m +0 -23
- package/ios/RNTPrimer.m +0 -59
- package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js +0 -288
- package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +0 -1
- package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckoutRawDataManager.js +0 -91
- package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckoutRawDataManager.js.map +0 -1
- package/lib/commonjs/headless_checkout/RNPrimerHeadlessUniversalCheckout.js.map +0 -1
- package/lib/commonjs/headless_checkout/RNPrimerHeadlessUniversalCheckoutRawDataManager.js +0 -91
- package/lib/commonjs/headless_checkout/RNPrimerHeadlessUniversalCheckoutRawDataManager.js.map +0 -1
- package/lib/commonjs/headless_checkout/types.js +0 -6
- package/lib/commonjs/headless_checkout/types.js.map +0 -1
- package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js +0 -279
- package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +0 -1
- package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckoutRawDataManager.js +0 -83
- package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckoutRawDataManager.js.map +0 -1
- package/lib/module/headless_checkout/RNPrimerHeadlessUniversalCheckout.js.map +0 -1
- package/lib/module/headless_checkout/RNPrimerHeadlessUniversalCheckoutRawDataManager.js +0 -84
- package/lib/module/headless_checkout/RNPrimerHeadlessUniversalCheckoutRawDataManager.js.map +0 -1
- package/lib/module/headless_checkout/types.js +0 -2
- package/lib/module/headless_checkout/types.js.map +0 -1
- package/lib/typescript/headless_checkout/PrimerHeadlessUniversalCheckoutRawDataManager.d.ts +0 -18
- package/lib/typescript/headless_checkout/RNPrimerHeadlessUniversalCheckout.d.ts +0 -22
- package/lib/typescript/headless_checkout/RNPrimerHeadlessUniversalCheckoutRawDataManager.d.ts +0 -14
- package/lib/typescript/headless_checkout/types.d.ts +0 -22
- package/src/headless_checkout/PrimerHeadlessUniversalCheckout.ts +0 -358
- package/src/headless_checkout/PrimerHeadlessUniversalCheckoutRawDataManager.ts +0 -109
- package/src/headless_checkout/RNPrimerHeadlessUniversalCheckoutRawDataManager.ts +0 -104
- package/src/headless_checkout/types.ts +0 -32
- /package/ios/{DataModels → Sources/DataModels}/PrimerThemeRN.swift +0 -0
- /package/ios/{Headless Universal Checkout → Sources/Headless Universal Checkout/Managers/Payment Method Managers}/RNTPrimerCardNumberInputElementManager.m +0 -0
package/android/.project
CHANGED
|
@@ -16,12 +16,12 @@
|
|
|
16
16
|
</natures>
|
|
17
17
|
<filteredResources>
|
|
18
18
|
<filter>
|
|
19
|
-
<id>
|
|
19
|
+
<id>1666872274961</id>
|
|
20
20
|
<name></name>
|
|
21
21
|
<type>30</type>
|
|
22
22
|
<matcher>
|
|
23
23
|
<id>org.eclipse.core.resources.regexFilterMatcher</id>
|
|
24
|
-
<arguments>node_modules
|
|
24
|
+
<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
|
|
25
25
|
</matcher>
|
|
26
26
|
</filter>
|
|
27
27
|
</filteredResources>
|
package/android/build.gradle
CHANGED
|
@@ -4,8 +4,8 @@ buildscript {
|
|
|
4
4
|
|
|
5
5
|
repositories {
|
|
6
6
|
google()
|
|
7
|
+
mavenCentral()
|
|
7
8
|
mavenLocal()
|
|
8
|
-
jcenter()
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
dependencies {
|
|
@@ -61,7 +61,6 @@ android {
|
|
|
61
61
|
repositories {
|
|
62
62
|
mavenLocal()
|
|
63
63
|
mavenCentral()
|
|
64
|
-
jcenter()
|
|
65
64
|
google()
|
|
66
65
|
|
|
67
66
|
def found = false
|
|
@@ -137,5 +136,5 @@ dependencies {
|
|
|
137
136
|
api 'com.facebook.react:react-native:+'
|
|
138
137
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
139
138
|
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.3"
|
|
140
|
-
implementation 'io.primer:android:2.
|
|
139
|
+
implementation 'io.primer:android:2.17.0-RC8'
|
|
141
140
|
}
|
|
@@ -1,22 +1,7 @@
|
|
|
1
1
|
package com.primerioreactnative
|
|
2
2
|
|
|
3
|
-
import android.content.res.ColorStateList
|
|
4
|
-
import android.graphics.Color
|
|
5
|
-
import android.graphics.drawable.ColorDrawable
|
|
6
|
-
import android.graphics.drawable.GradientDrawable
|
|
7
|
-
import android.view.ViewGroup
|
|
8
|
-
import android.widget.EditText
|
|
9
|
-
import android.widget.LinearLayout
|
|
10
|
-
import android.widget.TextView
|
|
11
|
-
import com.facebook.drawee.backends.pipeline.Fresco
|
|
12
|
-
import com.facebook.react.bridge.ReactApplicationContext
|
|
13
3
|
import com.facebook.react.uimanager.SimpleViewManager
|
|
14
4
|
import com.facebook.react.uimanager.ThemedReactContext
|
|
15
|
-
import com.facebook.react.uimanager.ViewProps
|
|
16
|
-
import com.facebook.react.uimanager.annotations.ReactProp
|
|
17
|
-
import com.facebook.react.views.image.ReactImageView
|
|
18
|
-
import io.primer.android.components.manager.PrimerCardManager
|
|
19
|
-
import io.primer.android.components.manager.PrimerUniversalCheckoutCardManagerInterface
|
|
20
5
|
import io.primer.android.components.ui.widgets.*
|
|
21
6
|
|
|
22
7
|
val listOfTextInputs = mutableListOf<PrimerEditText>()
|
|
@@ -15,7 +15,7 @@ import kotlinx.serialization.encodeToString
|
|
|
15
15
|
import kotlinx.serialization.json.Json
|
|
16
16
|
import org.json.JSONObject
|
|
17
17
|
|
|
18
|
-
class PrimerRN(
|
|
18
|
+
class PrimerRN(reactContext: ReactApplicationContext, private val json: Json) :
|
|
19
19
|
ReactContextBaseJavaModule(reactContext) {
|
|
20
20
|
private var mListener = PrimerRNEventListener()
|
|
21
21
|
|
|
@@ -24,6 +24,7 @@ class PrimerRN(private val reactContext: ReactApplicationContext, private val js
|
|
|
24
24
|
mListener.sendError = { paramsJson -> onError(paramsJson) }
|
|
25
25
|
mListener.sendErrorWithCheckoutData =
|
|
26
26
|
{ paramsJson, checkoutData -> onError(paramsJson, checkoutData) }
|
|
27
|
+
mListener.onDismissedEvent = { Primer.instance.dismiss(true) }
|
|
27
28
|
}
|
|
28
29
|
|
|
29
30
|
override fun getName(): String = "NativePrimer"
|
|
@@ -110,7 +111,13 @@ class PrimerRN(private val reactContext: ReactApplicationContext, private val js
|
|
|
110
111
|
|
|
111
112
|
@ReactMethod
|
|
112
113
|
fun dismiss(promise: Promise) {
|
|
113
|
-
Primer.instance.dismiss()
|
|
114
|
+
Primer.instance.dismiss(true)
|
|
115
|
+
promise.resolve(null)
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
@ReactMethod
|
|
119
|
+
fun cleanUp(promise: Promise) {
|
|
120
|
+
Primer.instance.dismiss(true)
|
|
114
121
|
promise.resolve(null)
|
|
115
122
|
}
|
|
116
123
|
|
|
@@ -192,6 +199,12 @@ class PrimerRN(private val reactContext: ReactApplicationContext, private val js
|
|
|
192
199
|
}
|
|
193
200
|
}
|
|
194
201
|
|
|
202
|
+
@ReactMethod
|
|
203
|
+
fun addListener(eventName: String?) = Unit
|
|
204
|
+
|
|
205
|
+
@ReactMethod
|
|
206
|
+
fun removeListeners(count: Int?) = Unit
|
|
207
|
+
|
|
195
208
|
private fun startSdk(settings: PrimerSettings) {
|
|
196
209
|
Primer.instance.configure(settings, mListener)
|
|
197
210
|
}
|
|
@@ -37,6 +37,7 @@ class PrimerRNEventListener : PrimerCheckoutListener {
|
|
|
37
37
|
var sendError: ((error: PrimerErrorRN) -> Unit)? = null
|
|
38
38
|
var sendErrorWithCheckoutData: ((error: PrimerErrorRN, checkoutData: PrimerCheckoutDataRN?) -> Unit)? =
|
|
39
39
|
null
|
|
40
|
+
var onDismissedEvent: (() -> Unit)? = null
|
|
40
41
|
|
|
41
42
|
override fun onCheckoutCompleted(checkoutData: PrimerCheckoutData) {
|
|
42
43
|
if (implementedRNCallbacks?.isOnCheckoutCompleteImplemented == true) {
|
|
@@ -91,7 +92,12 @@ class PrimerRNEventListener : PrimerCheckoutListener {
|
|
|
91
92
|
if (implementedRNCallbacks?.isOnClientSessionUpdateImplemented == true) {
|
|
92
93
|
sendEvent?.invoke(
|
|
93
94
|
PrimerEvents.ON_CLIENT_SESSION_UPDATE.eventName,
|
|
94
|
-
JSONObject(
|
|
95
|
+
JSONObject().apply {
|
|
96
|
+
put(
|
|
97
|
+
"clientSession",
|
|
98
|
+
JSONObject(Json.encodeToString(clientSession.toPrimerClientSessionRN()))
|
|
99
|
+
)
|
|
100
|
+
}
|
|
95
101
|
)
|
|
96
102
|
} else {
|
|
97
103
|
super.onClientSessionUpdated(clientSession)
|
|
@@ -125,7 +131,7 @@ class PrimerRNEventListener : PrimerCheckoutListener {
|
|
|
125
131
|
resumeToken: String,
|
|
126
132
|
decisionHandler: PrimerResumeDecisionHandler
|
|
127
133
|
) {
|
|
128
|
-
if (implementedRNCallbacks?.
|
|
134
|
+
if (implementedRNCallbacks?.isOnCheckoutResumeImplemented == true) {
|
|
129
135
|
resumeSuccessDecisionHandler = { newClientToken, err ->
|
|
130
136
|
when {
|
|
131
137
|
err != null -> decisionHandler.handleFailure(err.ifBlank { null })
|
|
@@ -134,10 +140,9 @@ class PrimerRNEventListener : PrimerCheckoutListener {
|
|
|
134
140
|
}
|
|
135
141
|
}
|
|
136
142
|
|
|
137
|
-
val resumeToken = mapOf(Keys.RESUME_TOKEN to resumeToken)
|
|
138
143
|
sendEvent?.invoke(
|
|
139
144
|
PrimerEvents.ON_RESUME_SUCCESS.eventName,
|
|
140
|
-
JSONObject(Json.encodeToString(resumeToken))
|
|
145
|
+
JSONObject(Json.encodeToString(mapOf(Keys.RESUME_TOKEN to resumeToken)))
|
|
141
146
|
)
|
|
142
147
|
} else {
|
|
143
148
|
sendError?.invoke(
|
|
@@ -147,8 +152,8 @@ class PrimerRNEventListener : PrimerCheckoutListener {
|
|
|
147
152
|
}
|
|
148
153
|
}
|
|
149
154
|
|
|
150
|
-
override fun onResumePending(additionalInfo: PrimerCheckoutAdditionalInfo
|
|
151
|
-
if (implementedRNCallbacks?.
|
|
155
|
+
override fun onResumePending(additionalInfo: PrimerCheckoutAdditionalInfo) {
|
|
156
|
+
if (implementedRNCallbacks?.isOnCheckoutPendingImplemented == true) {
|
|
152
157
|
if (additionalInfo is MultibancoCheckoutAdditionalInfo) {
|
|
153
158
|
sendEvent?.invoke(
|
|
154
159
|
PrimerEvents.ON_RESUME_PENDING.eventName,
|
|
@@ -166,7 +171,7 @@ class PrimerRNEventListener : PrimerCheckoutListener {
|
|
|
166
171
|
}
|
|
167
172
|
|
|
168
173
|
override fun onAdditionalInfoReceived(additionalInfo: PrimerCheckoutAdditionalInfo) {
|
|
169
|
-
if (implementedRNCallbacks?.
|
|
174
|
+
if (implementedRNCallbacks?.isOnCheckoutAdditionalInfoImplemented == true) {
|
|
170
175
|
if (additionalInfo is PromptPayCheckoutAdditionalInfo) {
|
|
171
176
|
sendEvent?.invoke(
|
|
172
177
|
PrimerEvents.ON_CHECKOUT_RECEIVED_ADDITIONAL_INFO.eventName,
|
|
@@ -190,6 +195,8 @@ class PrimerRNEventListener : PrimerCheckoutListener {
|
|
|
190
195
|
null
|
|
191
196
|
)
|
|
192
197
|
}
|
|
198
|
+
|
|
199
|
+
onDismissedEvent?.invoke()
|
|
193
200
|
removeCallbacksAndHandlers()
|
|
194
201
|
}
|
|
195
202
|
|
|
@@ -206,6 +213,7 @@ class PrimerRNEventListener : PrimerCheckoutListener {
|
|
|
206
213
|
PrimerErrorRN(
|
|
207
214
|
error.errorId,
|
|
208
215
|
error.description,
|
|
216
|
+
error.diagnosticsId,
|
|
209
217
|
error.recoverySuggestion
|
|
210
218
|
), checkoutData?.toPrimerCheckoutDataRN()
|
|
211
219
|
)
|
|
@@ -219,7 +227,14 @@ class PrimerRNEventListener : PrimerCheckoutListener {
|
|
|
219
227
|
primerErrorDecisionHandler = { errorMessage: String? ->
|
|
220
228
|
errorHandler?.showErrorMessage(errorMessage)
|
|
221
229
|
}
|
|
222
|
-
sendError?.invoke(
|
|
230
|
+
sendError?.invoke(
|
|
231
|
+
PrimerErrorRN(
|
|
232
|
+
error.errorId,
|
|
233
|
+
error.description,
|
|
234
|
+
error.diagnosticsId,
|
|
235
|
+
error.recoverySuggestion
|
|
236
|
+
)
|
|
237
|
+
)
|
|
223
238
|
} else {
|
|
224
239
|
super.onFailed(error, errorHandler)
|
|
225
240
|
}
|
|
@@ -1,21 +1,15 @@
|
|
|
1
1
|
package com.primerioreactnative
|
|
2
2
|
|
|
3
3
|
import android.util.Log
|
|
4
|
-
import androidx.core.content.ContextCompat
|
|
5
4
|
import com.facebook.react.bridge.*
|
|
6
5
|
import com.facebook.react.modules.core.DeviceEventManagerModule
|
|
7
6
|
import com.primerioreactnative.datamodels.*
|
|
8
|
-
import com.primerioreactnative.
|
|
9
|
-
import com.primerioreactnative.huc.assets.AssetsManager.drawableToBitmap
|
|
10
|
-
import com.primerioreactnative.huc.assets.AssetsManager.getFile
|
|
11
|
-
import com.primerioreactnative.huc.events.PrimerHeadlessUniversalCheckoutEvent
|
|
7
|
+
import com.primerioreactnative.components.events.PrimerHeadlessUniversalCheckoutEvent
|
|
12
8
|
import com.primerioreactnative.utils.PrimerHeadlessUniversalCheckoutImplementedRNCallbacks
|
|
13
9
|
import com.primerioreactnative.utils.convertJsonToMap
|
|
14
10
|
import com.primerioreactnative.utils.errorTo
|
|
15
11
|
import io.primer.android.ExperimentalPrimerApi
|
|
16
12
|
import io.primer.android.components.PrimerHeadlessUniversalCheckout
|
|
17
|
-
import io.primer.android.components.ui.assets.ImageType
|
|
18
|
-
import io.primer.android.ui.CardNetwork
|
|
19
13
|
import kotlinx.serialization.decodeFromString
|
|
20
14
|
import kotlinx.serialization.encodeToString
|
|
21
15
|
import kotlinx.serialization.json.Json
|
|
@@ -44,10 +38,9 @@ class PrimerRNHeadlessUniversalCheckout(
|
|
|
44
38
|
fun startWithClientToken(
|
|
45
39
|
clientToken: String,
|
|
46
40
|
settingsStr: String?,
|
|
47
|
-
|
|
48
|
-
successCallback: Callback
|
|
41
|
+
promise: Promise
|
|
49
42
|
) {
|
|
50
|
-
listener.successCallback =
|
|
43
|
+
listener.successCallback = promise
|
|
51
44
|
try {
|
|
52
45
|
val settings =
|
|
53
46
|
if (settingsStr.isNullOrBlank()) PrimerSettingsRN() else json.decodeFromString(
|
|
@@ -57,108 +50,22 @@ class PrimerRNHeadlessUniversalCheckout(
|
|
|
57
50
|
reactContext,
|
|
58
51
|
clientToken,
|
|
59
52
|
settings.toPrimerSettings(),
|
|
53
|
+
listener,
|
|
60
54
|
listener
|
|
61
55
|
)
|
|
62
56
|
} catch (e: Exception) {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
"failed to initialise PrimerHeadlessUniversalCheckout SDK, error: $e",
|
|
67
|
-
)
|
|
57
|
+
promise.reject(
|
|
58
|
+
ErrorTypeRN.NativeBridgeFailed.errorId,
|
|
59
|
+
"failed to initialise PrimerHeadlessUniversalCheckout SDK, error: $e",
|
|
68
60
|
)
|
|
69
61
|
}
|
|
70
62
|
}
|
|
71
63
|
|
|
72
64
|
@ReactMethod
|
|
73
|
-
fun
|
|
74
|
-
PrimerHeadlessUniversalCheckout.current.showPaymentMethod(
|
|
75
|
-
reactContext,
|
|
76
|
-
paymentMethodTypeStr
|
|
77
|
-
)
|
|
78
|
-
promise.resolve(null)
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
@ReactMethod
|
|
82
|
-
fun disposePrimerHeadlessUniversalCheckout() {
|
|
65
|
+
fun cleanUp(promise: Promise) {
|
|
83
66
|
PrimerHeadlessUniversalCheckout.current.cleanup()
|
|
84
67
|
listener.removeCallbacksAndHandlers()
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
@ReactMethod
|
|
88
|
-
fun getAssetForPaymentMethodType(
|
|
89
|
-
paymentMethodType: String,
|
|
90
|
-
assetType: String,
|
|
91
|
-
errorCallback: Callback,
|
|
92
|
-
successCallback: Callback
|
|
93
|
-
) {
|
|
94
|
-
|
|
95
|
-
val type = ImageType.values().find { it.name.equals(assetType, ignoreCase = true) }
|
|
96
|
-
when {
|
|
97
|
-
type == null -> {
|
|
98
|
-
errorCallback.invoke(
|
|
99
|
-
json.encodeToString(
|
|
100
|
-
ErrorTypeRN.AssetMismatch errorTo
|
|
101
|
-
"You have provided assetType=$assetType, but variable assetType can be 'LOGO' or 'ICON'."
|
|
102
|
-
)
|
|
103
|
-
)
|
|
104
|
-
}
|
|
105
|
-
else -> {
|
|
106
|
-
PrimerHeadlessUniversalCheckout.getAsset(paymentMethodType, type)?.let { resourceId ->
|
|
107
|
-
val file = getFile(reactContext, paymentMethodType)
|
|
108
|
-
AssetsManager.saveBitmapToFile(
|
|
109
|
-
file,
|
|
110
|
-
drawableToBitmap(ContextCompat.getDrawable(reactContext, resourceId)!!),
|
|
111
|
-
)
|
|
112
|
-
successCallback.invoke("file://${file.absolutePath}")
|
|
113
|
-
} ?: run {
|
|
114
|
-
errorCallback.invoke(
|
|
115
|
-
json.encodeToString(
|
|
116
|
-
ErrorTypeRN.AssetMissing errorTo
|
|
117
|
-
"Failed to find $assetType for $paymentMethodType"
|
|
118
|
-
)
|
|
119
|
-
)
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
@ReactMethod
|
|
126
|
-
fun getAssetForCardNetwork(
|
|
127
|
-
cardNetworkStr: String,
|
|
128
|
-
assetType: String,
|
|
129
|
-
errorCallback: Callback,
|
|
130
|
-
successCallback: Callback
|
|
131
|
-
) {
|
|
132
|
-
val cardNetwork = CardNetwork.Type.values().find { it.name.equals(cardNetworkStr, ignoreCase = true) }
|
|
133
|
-
val type = ImageType.values().find { it.name.equals(assetType, ignoreCase = true) }
|
|
134
|
-
when {
|
|
135
|
-
cardNetwork == null -> {
|
|
136
|
-
errorCallback.invoke(
|
|
137
|
-
json.encodeToString(
|
|
138
|
-
ErrorTypeRN.InvalidCardNetwork errorTo
|
|
139
|
-
"Card network for $cardNetworkStr does not exist, make sure you don't have any typos."
|
|
140
|
-
)
|
|
141
|
-
)
|
|
142
|
-
}
|
|
143
|
-
type == null -> {
|
|
144
|
-
errorCallback.invoke(
|
|
145
|
-
json.encodeToString(
|
|
146
|
-
ErrorTypeRN.AssetMismatch errorTo
|
|
147
|
-
"You have provided assetType=$assetType, but variable assetType can be 'LOGO' or 'ICON'."
|
|
148
|
-
)
|
|
149
|
-
)
|
|
150
|
-
}
|
|
151
|
-
else -> {
|
|
152
|
-
PrimerHeadlessUniversalCheckout.getAsset(cardNetwork).let { resourceId ->
|
|
153
|
-
val file = getFile(reactContext, cardNetworkStr)
|
|
154
|
-
AssetsManager.saveBitmapToFile(
|
|
155
|
-
file,
|
|
156
|
-
drawableToBitmap(ContextCompat.getDrawable(reactContext, resourceId)!!),
|
|
157
|
-
)
|
|
158
|
-
successCallback.invoke("file://${file.absolutePath}")
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
}
|
|
68
|
+
promise.resolve(null)
|
|
162
69
|
}
|
|
163
70
|
|
|
164
71
|
// region tokenization handlers
|
|
@@ -167,16 +74,6 @@ class PrimerRNHeadlessUniversalCheckout(
|
|
|
167
74
|
listener.handleTokenizationNewClientToken(newClientToken)
|
|
168
75
|
promise.resolve(null)
|
|
169
76
|
}
|
|
170
|
-
|
|
171
|
-
@ReactMethod
|
|
172
|
-
fun handleTokenizationSuccess(promise: Promise) {
|
|
173
|
-
listener.handleTokenizationSuccess(promise)
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
@ReactMethod
|
|
177
|
-
fun handleTokenizationFailure(errorMessage: String?, promise: Promise) {
|
|
178
|
-
listener.handleTokenizationFailure(errorMessage.orEmpty(), promise)
|
|
179
|
-
}
|
|
180
77
|
// endregion
|
|
181
78
|
|
|
182
79
|
// region resume handlers
|
|
@@ -185,17 +82,14 @@ class PrimerRNHeadlessUniversalCheckout(
|
|
|
185
82
|
listener.handleResumeNewClientToken(newClientToken)
|
|
186
83
|
promise.resolve(null)
|
|
187
84
|
}
|
|
85
|
+
// endregion
|
|
188
86
|
|
|
87
|
+
// region complete handlers
|
|
189
88
|
@ReactMethod
|
|
190
|
-
fun
|
|
191
|
-
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
@ReactMethod
|
|
195
|
-
fun handleResumeFailure(errorMessage: String?, promise: Promise) {
|
|
196
|
-
listener.handleResumeFailure(errorMessage.orEmpty(), promise)
|
|
89
|
+
fun handleCompleteFlow(promise: Promise) {
|
|
90
|
+
promise.resolve(null)
|
|
197
91
|
}
|
|
198
|
-
// endregion
|
|
92
|
+
// endregion complete handlers
|
|
199
93
|
|
|
200
94
|
// region payment handlers
|
|
201
95
|
@ReactMethod
|
|
@@ -229,6 +123,12 @@ class PrimerRNHeadlessUniversalCheckout(
|
|
|
229
123
|
}
|
|
230
124
|
}
|
|
231
125
|
|
|
126
|
+
@ReactMethod
|
|
127
|
+
fun addListener(eventName: String?) = Unit
|
|
128
|
+
|
|
129
|
+
@ReactMethod
|
|
130
|
+
fun removeListeners(count: Int?) = Unit
|
|
131
|
+
|
|
232
132
|
private fun onError(exception: PrimerErrorRN, checkoutDataRN: PrimerCheckoutDataRN? = null) {
|
|
233
133
|
val params = Arguments.createMap()
|
|
234
134
|
val errorJson = JSONObject(Json.encodeToString(exception))
|
package/android/src/main/java/com/primerioreactnative/PrimerRNHeadlessUniversalCheckoutListener.kt
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
package com.primerioreactnative
|
|
2
2
|
|
|
3
|
-
import com.facebook.react.bridge.Arguments
|
|
4
|
-
import com.facebook.react.bridge.Callback
|
|
5
3
|
import com.facebook.react.bridge.Promise
|
|
4
|
+
import com.primerioreactnative.components.datamodels.core.PrimerRNAvailablePaymentMethods
|
|
5
|
+
import com.primerioreactnative.components.datamodels.core.toPrimerRNHeadlessUniversalCheckoutPaymentMethod
|
|
6
|
+
import com.primerioreactnative.components.events.PrimerHeadlessUniversalCheckoutEvent
|
|
6
7
|
import com.primerioreactnative.datamodels.*
|
|
7
8
|
import com.primerioreactnative.extensions.toCheckoutAdditionalInfoRN
|
|
8
9
|
import com.primerioreactnative.extensions.toPrimerCheckoutDataRN
|
|
9
10
|
import com.primerioreactnative.extensions.toPrimerClientSessionRN
|
|
10
11
|
import com.primerioreactnative.extensions.toPrimerPaymentMethodDataRN
|
|
11
|
-
import com.primerioreactnative.huc.events.PrimerHeadlessUniversalCheckoutEvent
|
|
12
12
|
import com.primerioreactnative.utils.PrimerHeadlessUniversalCheckoutImplementedRNCallbacks
|
|
13
|
+
import com.primerioreactnative.utils.convertJsonToMap
|
|
13
14
|
import com.primerioreactnative.utils.errorTo
|
|
14
|
-
import io.primer.android.
|
|
15
|
+
import io.primer.android.completion.PrimerHeadlessUniversalCheckoutResumeDecisionHandler
|
|
15
16
|
import io.primer.android.completion.PrimerPaymentCreationDecisionHandler
|
|
16
|
-
import io.primer.android.completion.PrimerResumeDecisionHandler
|
|
17
17
|
import io.primer.android.components.PrimerHeadlessUniversalCheckoutListener
|
|
18
|
+
import io.primer.android.components.PrimerHeadlessUniversalCheckoutUiListener
|
|
18
19
|
import io.primer.android.components.domain.core.models.PrimerHeadlessUniversalCheckoutPaymentMethod
|
|
19
20
|
import io.primer.android.domain.PrimerCheckoutData
|
|
20
21
|
import io.primer.android.domain.action.models.PrimerClientSession
|
|
@@ -26,11 +27,10 @@ import io.primer.android.domain.tokenization.models.PrimerPaymentMethodData
|
|
|
26
27
|
import io.primer.android.domain.tokenization.models.PrimerPaymentMethodTokenData
|
|
27
28
|
import kotlinx.serialization.encodeToString
|
|
28
29
|
import kotlinx.serialization.json.Json
|
|
29
|
-
import org.json.JSONArray
|
|
30
30
|
import org.json.JSONObject
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
class PrimerRNHeadlessUniversalCheckoutListener : PrimerHeadlessUniversalCheckoutListener,
|
|
33
|
+
PrimerHeadlessUniversalCheckoutUiListener {
|
|
34
34
|
private var paymentCreationDecisionHandler: ((errorMessage: String?) -> Unit)? = null
|
|
35
35
|
private var tokenizeSuccessDecisionHandler: ((resumeToken: String?, errorMessage: String?) -> Unit)? =
|
|
36
36
|
null
|
|
@@ -44,37 +44,44 @@ class PrimerRNHeadlessUniversalCheckoutListener : PrimerHeadlessUniversalCheckou
|
|
|
44
44
|
var sendErrorWithCheckoutData: ((error: PrimerErrorRN, checkoutData: PrimerCheckoutDataRN?) -> Unit)? =
|
|
45
45
|
null
|
|
46
46
|
|
|
47
|
-
var successCallback:
|
|
47
|
+
var successCallback: Promise? = null
|
|
48
48
|
|
|
49
49
|
override fun onAvailablePaymentMethodsLoaded(paymentMethods: List<PrimerHeadlessUniversalCheckoutPaymentMethod>) {
|
|
50
|
+
val availablePaymentMethods =
|
|
51
|
+
JSONObject(
|
|
52
|
+
Json.encodeToString(
|
|
53
|
+
PrimerRNAvailablePaymentMethods(
|
|
54
|
+
paymentMethods.map { it.toPrimerRNHeadlessUniversalCheckoutPaymentMethod() }
|
|
55
|
+
)
|
|
56
|
+
)
|
|
57
|
+
)
|
|
58
|
+
|
|
50
59
|
sendEvent?.invoke(
|
|
51
|
-
PrimerHeadlessUniversalCheckoutEvent.
|
|
52
|
-
|
|
53
|
-
put("paymentMethodTypes", JSONArray(paymentMethods.map { it.paymentMethodType }))
|
|
54
|
-
}
|
|
60
|
+
PrimerHeadlessUniversalCheckoutEvent.ON_AVAILABLE_PAYMENT_METHODS_LOAD.eventName,
|
|
61
|
+
availablePaymentMethods
|
|
55
62
|
)
|
|
56
|
-
successCallback?.
|
|
57
|
-
|
|
63
|
+
successCallback?.resolve(
|
|
64
|
+
convertJsonToMap(availablePaymentMethods)
|
|
58
65
|
)
|
|
59
66
|
}
|
|
60
67
|
|
|
61
68
|
override fun onPreparationStarted(paymentMethodType: String) {
|
|
62
69
|
sendEvent?.invoke(
|
|
63
|
-
PrimerHeadlessUniversalCheckoutEvent.
|
|
70
|
+
PrimerHeadlessUniversalCheckoutEvent.ON_PREPARE_START.eventName,
|
|
64
71
|
JSONObject(Json.encodeToString(PrimerPaymentMethodDataRN(paymentMethodType)))
|
|
65
72
|
)
|
|
66
73
|
}
|
|
67
74
|
|
|
68
75
|
override fun onPaymentMethodShowed(paymentMethodType: String) {
|
|
69
76
|
sendEvent?.invoke(
|
|
70
|
-
PrimerHeadlessUniversalCheckoutEvent.
|
|
77
|
+
PrimerHeadlessUniversalCheckoutEvent.ON_PAYMENT_METHOD_SHOW.eventName,
|
|
71
78
|
JSONObject(Json.encodeToString(PrimerPaymentMethodDataRN(paymentMethodType)))
|
|
72
79
|
)
|
|
73
80
|
}
|
|
74
81
|
|
|
75
82
|
override fun onTokenizationStarted(paymentMethodType: String) {
|
|
76
83
|
sendEvent?.invoke(
|
|
77
|
-
PrimerHeadlessUniversalCheckoutEvent.
|
|
84
|
+
PrimerHeadlessUniversalCheckoutEvent.ON_TOKENIZE_START.eventName,
|
|
78
85
|
JSONObject(Json.encodeToString(PrimerPaymentMethodDataRN(paymentMethodType)))
|
|
79
86
|
)
|
|
80
87
|
}
|
|
@@ -132,7 +139,12 @@ class PrimerRNHeadlessUniversalCheckoutListener : PrimerHeadlessUniversalCheckou
|
|
|
132
139
|
if (implementedRNCallbacks?.isOnClientSessionUpdateImplemented == true) {
|
|
133
140
|
sendEvent?.invoke(
|
|
134
141
|
PrimerHeadlessUniversalCheckoutEvent.ON_CLIENT_SESSION_UPDATE.eventName,
|
|
135
|
-
JSONObject(
|
|
142
|
+
JSONObject().apply {
|
|
143
|
+
put(
|
|
144
|
+
"clientSession",
|
|
145
|
+
JSONObject(Json.encodeToString(clientSession.toPrimerClientSessionRN()))
|
|
146
|
+
)
|
|
147
|
+
}
|
|
136
148
|
)
|
|
137
149
|
} else {
|
|
138
150
|
super.onClientSessionUpdated(clientSession)
|
|
@@ -141,16 +153,16 @@ class PrimerRNHeadlessUniversalCheckoutListener : PrimerHeadlessUniversalCheckou
|
|
|
141
153
|
|
|
142
154
|
override fun onTokenizeSuccess(
|
|
143
155
|
paymentMethodTokenData: PrimerPaymentMethodTokenData,
|
|
144
|
-
decisionHandler:
|
|
156
|
+
decisionHandler: PrimerHeadlessUniversalCheckoutResumeDecisionHandler
|
|
145
157
|
) {
|
|
146
158
|
if (implementedRNCallbacks?.isOnTokenizeSuccessImplemented == true) {
|
|
147
159
|
val token = PrimerPaymentInstrumentTokenRN.fromPaymentMethodToken(paymentMethodTokenData)
|
|
148
|
-
val request = JSONObject(
|
|
149
|
-
|
|
160
|
+
val request = JSONObject().apply {
|
|
161
|
+
put("paymentMethodTokenData", JSONObject(Json.encodeToString(token)))
|
|
162
|
+
}
|
|
163
|
+
tokenizeSuccessDecisionHandler = { newClientToken, _ ->
|
|
150
164
|
when {
|
|
151
|
-
err != null -> decisionHandler.handleFailure(err.ifBlank { null })
|
|
152
165
|
newClientToken != null -> decisionHandler.continueWithNewClientToken(newClientToken)
|
|
153
|
-
else -> decisionHandler.handleSuccess()
|
|
154
166
|
}
|
|
155
167
|
}
|
|
156
168
|
sendEvent?.invoke(PrimerHeadlessUniversalCheckoutEvent.ON_TOKENIZE_SUCCESS.eventName, request)
|
|
@@ -162,37 +174,35 @@ class PrimerRNHeadlessUniversalCheckoutListener : PrimerHeadlessUniversalCheckou
|
|
|
162
174
|
}
|
|
163
175
|
}
|
|
164
176
|
|
|
165
|
-
override fun
|
|
177
|
+
override fun onCheckoutResume(
|
|
166
178
|
resumeToken: String,
|
|
167
|
-
decisionHandler:
|
|
179
|
+
decisionHandler: PrimerHeadlessUniversalCheckoutResumeDecisionHandler
|
|
168
180
|
) {
|
|
169
|
-
if (implementedRNCallbacks?.
|
|
170
|
-
resumeSuccessDecisionHandler = { newClientToken,
|
|
181
|
+
if (implementedRNCallbacks?.isOnCheckoutResumeImplemented == true) {
|
|
182
|
+
resumeSuccessDecisionHandler = { newClientToken, _ ->
|
|
171
183
|
when {
|
|
172
|
-
err != null -> decisionHandler.handleFailure(err.ifBlank { null })
|
|
173
184
|
newClientToken != null -> decisionHandler.continueWithNewClientToken(newClientToken)
|
|
174
|
-
else -> decisionHandler.handleSuccess()
|
|
175
185
|
}
|
|
176
186
|
}
|
|
177
187
|
|
|
178
188
|
val resumeToken = mapOf(Keys.RESUME_TOKEN to resumeToken)
|
|
179
189
|
sendEvent?.invoke(
|
|
180
|
-
PrimerHeadlessUniversalCheckoutEvent.
|
|
190
|
+
PrimerHeadlessUniversalCheckoutEvent.ON_CHECKOUT_SUCCESS.eventName,
|
|
181
191
|
JSONObject(Json.encodeToString(resumeToken))
|
|
182
192
|
)
|
|
183
193
|
} else {
|
|
184
194
|
sendError?.invoke(
|
|
185
195
|
ErrorTypeRN.NativeBridgeFailed
|
|
186
|
-
errorTo "Callback
|
|
196
|
+
errorTo "Callback ${PrimerHeadlessUniversalCheckoutEvent.ON_CHECKOUT_SUCCESS.eventName} should be implemented."
|
|
187
197
|
)
|
|
188
198
|
}
|
|
189
199
|
}
|
|
190
200
|
|
|
191
|
-
override fun onResumePending(additionalInfo: PrimerCheckoutAdditionalInfo
|
|
192
|
-
if (implementedRNCallbacks?.
|
|
201
|
+
override fun onResumePending(additionalInfo: PrimerCheckoutAdditionalInfo) {
|
|
202
|
+
if (implementedRNCallbacks?.isOnCheckoutPendingImplemented == true) {
|
|
193
203
|
if (additionalInfo is MultibancoCheckoutAdditionalInfo) {
|
|
194
204
|
sendEvent?.invoke(
|
|
195
|
-
|
|
205
|
+
PrimerHeadlessUniversalCheckoutEvent.ON_CHECKOUT_PENDING.eventName,
|
|
196
206
|
JSONObject(Json.encodeToString(additionalInfo.toCheckoutAdditionalInfoRN())).apply {
|
|
197
207
|
remove("type")
|
|
198
208
|
}
|
|
@@ -201,16 +211,17 @@ class PrimerRNHeadlessUniversalCheckoutListener : PrimerHeadlessUniversalCheckou
|
|
|
201
211
|
} else {
|
|
202
212
|
sendError?.invoke(
|
|
203
213
|
ErrorTypeRN.NativeBridgeFailed
|
|
204
|
-
errorTo "Callback [
|
|
214
|
+
errorTo "Callback [${PrimerHeadlessUniversalCheckoutEvent.ON_CHECKOUT_PENDING.eventName}] " +
|
|
215
|
+
"should be implemented."
|
|
205
216
|
)
|
|
206
217
|
}
|
|
207
218
|
}
|
|
208
219
|
|
|
209
|
-
override fun
|
|
210
|
-
if (implementedRNCallbacks?.
|
|
220
|
+
override fun onCheckoutAdditionalInfoReceived(additionalInfo: PrimerCheckoutAdditionalInfo) {
|
|
221
|
+
if (implementedRNCallbacks?.isOnCheckoutAdditionalInfoImplemented == true) {
|
|
211
222
|
if (additionalInfo is PromptPayCheckoutAdditionalInfo) {
|
|
212
223
|
sendEvent?.invoke(
|
|
213
|
-
|
|
224
|
+
PrimerHeadlessUniversalCheckoutEvent.ON_CHECKOUT_ADDITIONAL_INFO.eventName,
|
|
214
225
|
JSONObject(Json.encodeToString(additionalInfo.toCheckoutAdditionalInfoRN())).apply {
|
|
215
226
|
remove("type")
|
|
216
227
|
}
|
|
@@ -219,7 +230,8 @@ class PrimerRNHeadlessUniversalCheckoutListener : PrimerHeadlessUniversalCheckou
|
|
|
219
230
|
} else {
|
|
220
231
|
sendError?.invoke(
|
|
221
232
|
ErrorTypeRN.NativeBridgeFailed
|
|
222
|
-
errorTo "Callback [
|
|
233
|
+
errorTo "Callback [${PrimerHeadlessUniversalCheckoutEvent.ON_CHECKOUT_ADDITIONAL_INFO.eventName}]" +
|
|
234
|
+
" should be implemented."
|
|
223
235
|
)
|
|
224
236
|
}
|
|
225
237
|
}
|
|
@@ -233,6 +245,7 @@ class PrimerRNHeadlessUniversalCheckoutListener : PrimerHeadlessUniversalCheckou
|
|
|
233
245
|
PrimerErrorRN(
|
|
234
246
|
error.errorId,
|
|
235
247
|
error.description,
|
|
248
|
+
error.diagnosticsId,
|
|
236
249
|
error.recoverySuggestion
|
|
237
250
|
), checkoutData?.toPrimerCheckoutDataRN()
|
|
238
251
|
)
|
|
@@ -243,7 +256,14 @@ class PrimerRNHeadlessUniversalCheckoutListener : PrimerHeadlessUniversalCheckou
|
|
|
243
256
|
|
|
244
257
|
override fun onFailed(error: PrimerError) {
|
|
245
258
|
if (implementedRNCallbacks?.isOnErrorImplemented == true) {
|
|
246
|
-
sendError?.invoke(
|
|
259
|
+
sendError?.invoke(
|
|
260
|
+
PrimerErrorRN(
|
|
261
|
+
error.errorId,
|
|
262
|
+
error.description,
|
|
263
|
+
error.diagnosticsId,
|
|
264
|
+
error.recoverySuggestion
|
|
265
|
+
)
|
|
266
|
+
)
|
|
247
267
|
} else {
|
|
248
268
|
super.onFailed(error)
|
|
249
269
|
}
|
|
@@ -254,20 +274,6 @@ class PrimerRNHeadlessUniversalCheckoutListener : PrimerHeadlessUniversalCheckou
|
|
|
254
274
|
tokenizeSuccessDecisionHandler?.invoke(newClientToken, null)
|
|
255
275
|
tokenizeSuccessDecisionHandler = null
|
|
256
276
|
}
|
|
257
|
-
|
|
258
|
-
fun handleTokenizationSuccess(promise: Promise) {
|
|
259
|
-
val error =
|
|
260
|
-
ErrorTypeRN.NativeBridgeFailed errorTo "PrimerTokenizationHandler's " +
|
|
261
|
-
"handleSuccess function is not available on HUC."
|
|
262
|
-
promise.reject(error.errorId, error.description)
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
fun handleTokenizationFailure(errorMessage: String, promise: Promise) {
|
|
266
|
-
val error =
|
|
267
|
-
ErrorTypeRN.NativeBridgeFailed errorTo "PrimerTokenizationHandler's " +
|
|
268
|
-
"handleFailure function is not available on HUC."
|
|
269
|
-
promise.reject(error.errorId, error.description)
|
|
270
|
-
}
|
|
271
277
|
// endregion
|
|
272
278
|
|
|
273
279
|
// region resume handlers
|
|
@@ -275,20 +281,6 @@ class PrimerRNHeadlessUniversalCheckoutListener : PrimerHeadlessUniversalCheckou
|
|
|
275
281
|
resumeSuccessDecisionHandler?.invoke(newClientToken, null)
|
|
276
282
|
resumeSuccessDecisionHandler = null
|
|
277
283
|
}
|
|
278
|
-
|
|
279
|
-
fun handleResumeSuccess(promise: Promise) {
|
|
280
|
-
val error =
|
|
281
|
-
ErrorTypeRN.NativeBridgeFailed errorTo "PrimerResumeHandler's " +
|
|
282
|
-
"handleSuccess function is not available on HUC."
|
|
283
|
-
promise.reject(error.errorId, error.description)
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
fun handleResumeFailure(errorMessage: String, promise: Promise) {
|
|
287
|
-
val error =
|
|
288
|
-
ErrorTypeRN.NativeBridgeFailed errorTo "PrimerResumeHandler's " +
|
|
289
|
-
"handleFailure function is not available on HUC."
|
|
290
|
-
promise.reject(error.errorId, error.description)
|
|
291
|
-
}
|
|
292
284
|
// endregion
|
|
293
285
|
|
|
294
286
|
// region payment create handlers
|