@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
|
@@ -4,7 +4,9 @@ import com.facebook.react.ReactPackage
|
|
|
4
4
|
import com.facebook.react.bridge.NativeModule
|
|
5
5
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
6
6
|
import com.facebook.react.uimanager.ViewManager
|
|
7
|
-
import com.primerioreactnative.
|
|
7
|
+
import com.primerioreactnative.components.manager.asset.PrimerRNHeadlessUniversalCheckoutAssetManager
|
|
8
|
+
import com.primerioreactnative.components.manager.nativeUi.PrimerRNHeadlessUniversalCheckoutNativeUiManager
|
|
9
|
+
import com.primerioreactnative.components.manager.raw.PrimerRNHeadlessUniversalCheckoutRawManager
|
|
8
10
|
import kotlinx.serialization.json.Json
|
|
9
11
|
|
|
10
12
|
class ReactNativePackage : ReactPackage {
|
|
@@ -15,7 +17,9 @@ class ReactNativePackage : ReactPackage {
|
|
|
15
17
|
return listOf(
|
|
16
18
|
PrimerRN(reactContext, json),
|
|
17
19
|
PrimerRNHeadlessUniversalCheckout(reactContext, json),
|
|
18
|
-
PrimerRNHeadlessUniversalCheckoutRawManager(reactContext, json)
|
|
20
|
+
PrimerRNHeadlessUniversalCheckoutRawManager(reactContext, json),
|
|
21
|
+
PrimerRNHeadlessUniversalCheckoutNativeUiManager(reactContext),
|
|
22
|
+
PrimerRNHeadlessUniversalCheckoutAssetManager(reactContext)
|
|
19
23
|
)
|
|
20
24
|
}
|
|
21
25
|
|
package/android/src/main/java/com/primerioreactnative/{huc → components}/assets/AssetsManager.kt
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package com.primerioreactnative.
|
|
1
|
+
package com.primerioreactnative.components.assets
|
|
2
2
|
|
|
3
3
|
import android.graphics.Bitmap
|
|
4
4
|
import android.graphics.Canvas
|
|
@@ -7,11 +7,9 @@ import android.graphics.drawable.Drawable
|
|
|
7
7
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
8
8
|
import java.io.File
|
|
9
9
|
import java.io.FileOutputStream
|
|
10
|
-
import java.util.*
|
|
11
10
|
|
|
12
11
|
internal object AssetsManager {
|
|
13
12
|
|
|
14
|
-
private const val ASSETS_DIRECTORY = "primer-sdk"
|
|
15
13
|
private const val COMPRESS_QUALITY = 100
|
|
16
14
|
|
|
17
15
|
fun drawableToBitmap(drawable: Drawable): Bitmap {
|
|
@@ -35,22 +33,15 @@ internal object AssetsManager {
|
|
|
35
33
|
bitmap: Bitmap,
|
|
36
34
|
format: Bitmap.CompressFormat = Bitmap.CompressFormat.PNG,
|
|
37
35
|
) {
|
|
38
|
-
|
|
39
36
|
FileOutputStream(file).use {
|
|
40
37
|
bitmap.compress(format, COMPRESS_QUALITY, it)
|
|
41
38
|
it.close()
|
|
42
39
|
}
|
|
43
40
|
}
|
|
44
41
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
context.filesDir,
|
|
50
|
-
ASSETS_DIRECTORY + File.pathSeparator + path.toLowerCase(Locale.ROOT)
|
|
51
|
-
)
|
|
52
|
-
if (!file.exists()) file.createNewFile()
|
|
53
|
-
return file
|
|
42
|
+
internal enum class ImageColorType {
|
|
43
|
+
COLORED,
|
|
44
|
+
DARK,
|
|
45
|
+
LIGHT
|
|
54
46
|
}
|
|
55
|
-
|
|
56
47
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
package com.primerioreactnative.components.assets
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
4
|
+
import java.io.File
|
|
5
|
+
|
|
6
|
+
internal object CardNetworkImageFileProvider {
|
|
7
|
+
|
|
8
|
+
private const val ASSETS_DIRECTORY = "primer-react-native-sdk"
|
|
9
|
+
|
|
10
|
+
fun getFileForCardNetworkAsset(
|
|
11
|
+
context: ReactApplicationContext,
|
|
12
|
+
path: String,
|
|
13
|
+
): File {
|
|
14
|
+
val directory = File(context.filesDir, ASSETS_DIRECTORY)
|
|
15
|
+
if (!directory.exists()) directory.mkdirs()
|
|
16
|
+
val file = File(
|
|
17
|
+
directory,
|
|
18
|
+
path.lowercase()
|
|
19
|
+
)
|
|
20
|
+
if (!file.exists()) file.createNewFile()
|
|
21
|
+
return file
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
package com.primerioreactnative.components.assets
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
4
|
+
import java.io.File
|
|
5
|
+
|
|
6
|
+
internal object PaymentMethodAssetFileProvider {
|
|
7
|
+
|
|
8
|
+
private const val ASSETS_DIRECTORY = "primer-react-native-sdk"
|
|
9
|
+
|
|
10
|
+
fun getFileForPaymentMethodAsset(
|
|
11
|
+
context: ReactApplicationContext,
|
|
12
|
+
path: String,
|
|
13
|
+
type: AssetsManager.ImageColorType
|
|
14
|
+
): File {
|
|
15
|
+
val directory = File(context.filesDir, ASSETS_DIRECTORY + File.separator + path)
|
|
16
|
+
if (!directory.exists()) directory.mkdirs()
|
|
17
|
+
val file = File(
|
|
18
|
+
directory,
|
|
19
|
+
type.name.lowercase()
|
|
20
|
+
)
|
|
21
|
+
if (!file.exists()) file.createNewFile()
|
|
22
|
+
return file
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
package com.primerioreactnative.components.datamodels.core
|
|
2
|
+
|
|
3
|
+
import io.primer.android.PrimerSessionIntent
|
|
4
|
+
import io.primer.android.components.domain.core.models.PrimerHeadlessUniversalCheckoutPaymentMethod
|
|
5
|
+
import io.primer.android.components.domain.core.models.PrimerPaymentMethodManagerCategory
|
|
6
|
+
import kotlinx.serialization.Serializable
|
|
7
|
+
|
|
8
|
+
@Serializable
|
|
9
|
+
data class PrimerRNAvailablePaymentMethods(
|
|
10
|
+
val availablePaymentMethods: List<PrimerRNHeadlessUniversalCheckoutPaymentMethod>
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
@Serializable
|
|
14
|
+
data class PrimerRNHeadlessUniversalCheckoutPaymentMethod(
|
|
15
|
+
val paymentMethodType: String,
|
|
16
|
+
val supportedPrimerSessionIntents: List<PrimerSessionIntent>,
|
|
17
|
+
val paymentMethodManagerCategories: List<PrimerPaymentMethodManagerCategory>,
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
internal fun PrimerHeadlessUniversalCheckoutPaymentMethod.toPrimerRNHeadlessUniversalCheckoutPaymentMethod() =
|
|
21
|
+
PrimerRNHeadlessUniversalCheckoutPaymentMethod(
|
|
22
|
+
paymentMethodType,
|
|
23
|
+
supportedPrimerSessionIntents,
|
|
24
|
+
paymentMethodManagerCategories.minus(PrimerPaymentMethodManagerCategory.CARD_COMPONENTS)
|
|
25
|
+
)
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
package com.primerioreactnative.components.datamodels.manager.asset
|
|
2
|
+
|
|
3
|
+
import android.graphics.drawable.Drawable
|
|
4
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
5
|
+
import com.primerioreactnative.components.assets.AssetsManager
|
|
6
|
+
import com.primerioreactnative.components.assets.AssetsManager.drawableToBitmap
|
|
7
|
+
import com.primerioreactnative.components.assets.PaymentMethodAssetFileProvider.getFileForPaymentMethodAsset
|
|
8
|
+
import io.primer.android.components.ui.assets.PrimerPaymentMethodAsset
|
|
9
|
+
import kotlinx.serialization.Serializable
|
|
10
|
+
|
|
11
|
+
@Serializable
|
|
12
|
+
data class PrimerRNPaymentMethodAssets(
|
|
13
|
+
val paymentMethodAssets: List<PrimerRNPaymentMethodAsset>
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
@Serializable
|
|
17
|
+
data class PrimerRNPaymentMethodAssetWrapper(
|
|
18
|
+
val paymentMethodAsset: PrimerRNPaymentMethodAsset
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
@Serializable
|
|
22
|
+
data class PrimerRNPaymentMethodAsset(
|
|
23
|
+
val paymentMethodType: String,
|
|
24
|
+
val paymentMethodName: String,
|
|
25
|
+
val paymentMethodLogo: PrimerRNPaymentMethodLogo,
|
|
26
|
+
val paymentMethodBackgroundColor: PrimerRNPaymentMethodBackgroundColor
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
@Serializable
|
|
30
|
+
data class PrimerRNPaymentMethodLogo(
|
|
31
|
+
val colored: String?,
|
|
32
|
+
val light: String?,
|
|
33
|
+
val dark: String?
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
@Serializable
|
|
37
|
+
data class PrimerRNPaymentMethodBackgroundColor(
|
|
38
|
+
val colored: String?,
|
|
39
|
+
val light: String?,
|
|
40
|
+
val dark: String?
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
@Serializable
|
|
44
|
+
data class PrimerCardNetworkAsset(
|
|
45
|
+
val cardNetworkImageURL: String
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
internal fun PrimerPaymentMethodAsset.toPrimerRNPaymentMethodAsset(
|
|
49
|
+
reactContext: ReactApplicationContext,
|
|
50
|
+
paymentMethodType: String,
|
|
51
|
+
) = PrimerRNPaymentMethodAsset(
|
|
52
|
+
paymentMethodType,
|
|
53
|
+
paymentMethodName,
|
|
54
|
+
PrimerRNPaymentMethodLogo(
|
|
55
|
+
paymentMethodLogo.colored?.let {
|
|
56
|
+
getFileUrl(
|
|
57
|
+
reactContext,
|
|
58
|
+
paymentMethodType,
|
|
59
|
+
AssetsManager.ImageColorType.COLORED,
|
|
60
|
+
it
|
|
61
|
+
)
|
|
62
|
+
},
|
|
63
|
+
paymentMethodLogo.light?.let {
|
|
64
|
+
getFileUrl(
|
|
65
|
+
reactContext,
|
|
66
|
+
paymentMethodType,
|
|
67
|
+
AssetsManager.ImageColorType.LIGHT,
|
|
68
|
+
it
|
|
69
|
+
)
|
|
70
|
+
},
|
|
71
|
+
paymentMethodLogo.dark?.let {
|
|
72
|
+
getFileUrl(
|
|
73
|
+
reactContext,
|
|
74
|
+
paymentMethodType,
|
|
75
|
+
AssetsManager.ImageColorType.DARK,
|
|
76
|
+
it
|
|
77
|
+
)
|
|
78
|
+
}
|
|
79
|
+
),
|
|
80
|
+
PrimerRNPaymentMethodBackgroundColor(
|
|
81
|
+
paymentMethodBackgroundColor.colored?.let {
|
|
82
|
+
String.format("#%06X", (0xFFFFFF and it))
|
|
83
|
+
},
|
|
84
|
+
paymentMethodBackgroundColor.light?.let {
|
|
85
|
+
String.format("#%06X", (0xFFFFFF and it))
|
|
86
|
+
},
|
|
87
|
+
paymentMethodBackgroundColor.dark?.let {
|
|
88
|
+
String.format("#%06X", (0xFFFFFF and it))
|
|
89
|
+
}
|
|
90
|
+
)
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
private fun getFileUrl(
|
|
95
|
+
reactContext: ReactApplicationContext,
|
|
96
|
+
paymentMethodType: String,
|
|
97
|
+
imageColorType: AssetsManager.ImageColorType,
|
|
98
|
+
drawable: Drawable,
|
|
99
|
+
): String {
|
|
100
|
+
val file = getFileForPaymentMethodAsset(reactContext, paymentMethodType, imageColorType)
|
|
101
|
+
AssetsManager.saveBitmapToFile(
|
|
102
|
+
file,
|
|
103
|
+
drawableToBitmap(drawable),
|
|
104
|
+
)
|
|
105
|
+
return "file://${file.absolutePath}"
|
|
106
|
+
}
|
|
@@ -1,21 +1,19 @@
|
|
|
1
|
-
package com.primerioreactnative.
|
|
1
|
+
package com.primerioreactnative.components.datamodels.manager.raw.card
|
|
2
2
|
|
|
3
|
-
import io.primer.android.components.domain.core.models.card.
|
|
3
|
+
import io.primer.android.components.domain.core.models.card.PrimerCardData
|
|
4
4
|
import kotlinx.serialization.Serializable
|
|
5
5
|
|
|
6
6
|
@Serializable
|
|
7
|
-
internal data class
|
|
7
|
+
internal data class PrimerRNCardData(
|
|
8
8
|
val cardNumber: String? = null,
|
|
9
|
-
val
|
|
10
|
-
val expiryYear: String? = null,
|
|
9
|
+
val expiryDate: String? = null,
|
|
11
10
|
val cvv: String? = null,
|
|
12
11
|
val cardholderName: String? = null
|
|
13
12
|
) {
|
|
14
13
|
fun toPrimerCardData() =
|
|
15
|
-
|
|
14
|
+
PrimerCardData(
|
|
16
15
|
cardNumber.orEmpty(),
|
|
17
|
-
|
|
18
|
-
expiryYear.orEmpty(),
|
|
16
|
+
expiryDate.orEmpty(),
|
|
19
17
|
cvv.orEmpty(),
|
|
20
18
|
cardholderName
|
|
21
19
|
)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
package com.primerioreactnative.components.datamodels.manager.raw.cardRedirect
|
|
2
|
+
|
|
3
|
+
import io.primer.android.components.domain.core.models.bancontact.PrimerBancontactCardData
|
|
4
|
+
import kotlinx.serialization.Serializable
|
|
5
|
+
|
|
6
|
+
@Serializable
|
|
7
|
+
internal data class PrimerRNBancontactCardData(
|
|
8
|
+
val cardNumber: String? = null,
|
|
9
|
+
val expiryDate: String? = null,
|
|
10
|
+
val expiryYear: String? = null,
|
|
11
|
+
val cardholderName: String? = null
|
|
12
|
+
) {
|
|
13
|
+
fun toPrimerBancontactCardData() =
|
|
14
|
+
PrimerBancontactCardData(
|
|
15
|
+
cardNumber.orEmpty(),
|
|
16
|
+
expiryDate.orEmpty(),
|
|
17
|
+
cardholderName.orEmpty()
|
|
18
|
+
)
|
|
19
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
package com.primerioreactnative.components.datamodels.manager.raw.phoneNumber
|
|
2
|
+
|
|
3
|
+
import io.primer.android.components.domain.core.models.phoneNumber.PrimerPhoneNumberData
|
|
4
|
+
import kotlinx.serialization.Serializable
|
|
5
|
+
|
|
6
|
+
@Serializable
|
|
7
|
+
internal data class PrimerRNPhoneNumberData(
|
|
8
|
+
val phoneNumber: String? = null,
|
|
9
|
+
) {
|
|
10
|
+
fun toPrimerPhoneNumberData() =
|
|
11
|
+
PrimerPhoneNumberData(
|
|
12
|
+
phoneNumber.orEmpty()
|
|
13
|
+
)
|
|
14
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
package com.primerioreactnative.components.datamodels.manager.raw.retailOutlets
|
|
2
|
+
|
|
3
|
+
import io.primer.android.components.domain.core.models.retailOutlet.PrimerRetailerData
|
|
4
|
+
import kotlinx.serialization.Serializable
|
|
5
|
+
|
|
6
|
+
@Serializable
|
|
7
|
+
internal data class PrimerRNRetailOutletData(
|
|
8
|
+
val id: String
|
|
9
|
+
) {
|
|
10
|
+
|
|
11
|
+
fun toPrimerRetailOutletData() = PrimerRetailerData(id)
|
|
12
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package com.primerioreactnative.
|
|
1
|
+
package com.primerioreactnative.components.datamodels.manager.raw.retailOutlets
|
|
2
2
|
|
|
3
3
|
import io.primer.android.data.payments.configure.retailOutlets.RetailOutletsList
|
|
4
4
|
import kotlinx.serialization.Serializable
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
package com.primerioreactnative.components.events
|
|
2
|
+
|
|
3
|
+
internal enum class PrimerHeadlessUniversalCheckoutEvent(val eventName: String) {
|
|
4
|
+
ON_AVAILABLE_PAYMENT_METHODS_LOAD("onAvailablePaymentMethodsLoad"),
|
|
5
|
+
ON_PREPARE_START("onPreparationStart"),
|
|
6
|
+
ON_PAYMENT_METHOD_SHOW("onPaymentMethodShow"),
|
|
7
|
+
ON_TOKENIZE_START("onTokenizationStart"),
|
|
8
|
+
ON_CHECKOUT_COMPLETE("onCheckoutComplete"),
|
|
9
|
+
ON_CHECKOUT_PENDING("onCheckoutPending"),
|
|
10
|
+
ON_BEFORE_CLIENT_SESSION_UPDATE("onBeforeClientSessionUpdate"),
|
|
11
|
+
ON_CLIENT_SESSION_UPDATE("onClientSessionUpdate"),
|
|
12
|
+
ON_BEFORE_PAYMENT_CREATE("onBeforePaymentCreate"),
|
|
13
|
+
ON_TOKENIZE_SUCCESS("onTokenizationSuccess"),
|
|
14
|
+
ON_CHECKOUT_SUCCESS("onCheckoutResume"),
|
|
15
|
+
ON_CHECKOUT_ADDITIONAL_INFO("onCheckoutAdditionalInfo"),
|
|
16
|
+
ON_ERROR("onError"),
|
|
17
|
+
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
package com.primerioreactnative.
|
|
1
|
+
package com.primerioreactnative.components.events
|
|
2
2
|
|
|
3
3
|
internal enum class PrimerHeadlessUniversalCheckoutRawDataManagerEvent(val eventName: String) {
|
|
4
4
|
ON_METADATA_CHANGED("onMetadataChange"),
|
|
5
5
|
ON_VALIDATION_CHANGED("onValidation"),
|
|
6
|
-
ON_NATIVE_ERROR("onNativeError"),
|
|
7
6
|
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
package com.primerioreactnative.components.manager.asset
|
|
2
|
+
|
|
3
|
+
import androidx.core.content.ContextCompat
|
|
4
|
+
import com.facebook.react.bridge.Promise
|
|
5
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
6
|
+
import com.facebook.react.bridge.ReactContextBaseJavaModule
|
|
7
|
+
import com.facebook.react.bridge.ReactMethod
|
|
8
|
+
import com.primerioreactnative.components.assets.AssetsManager
|
|
9
|
+
import com.primerioreactnative.components.assets.AssetsManager.drawableToBitmap
|
|
10
|
+
import com.primerioreactnative.components.assets.CardNetworkImageFileProvider.getFileForCardNetworkAsset
|
|
11
|
+
import com.primerioreactnative.components.datamodels.manager.asset.PrimerCardNetworkAsset
|
|
12
|
+
import com.primerioreactnative.components.datamodels.manager.asset.PrimerRNPaymentMethodAssetWrapper
|
|
13
|
+
import com.primerioreactnative.components.datamodels.manager.asset.PrimerRNPaymentMethodAssets
|
|
14
|
+
import com.primerioreactnative.components.datamodels.manager.asset.toPrimerRNPaymentMethodAsset
|
|
15
|
+
import com.primerioreactnative.datamodels.ErrorTypeRN
|
|
16
|
+
import com.primerioreactnative.utils.convertJsonToMap
|
|
17
|
+
import com.primerioreactnative.utils.errorTo
|
|
18
|
+
import io.primer.android.ExperimentalPrimerApi
|
|
19
|
+
import io.primer.android.components.SdkUninitializedException
|
|
20
|
+
import io.primer.android.components.ui.assets.PrimerHeadlessUniversalCheckoutAssetsManager
|
|
21
|
+
import io.primer.android.ui.CardNetwork
|
|
22
|
+
import kotlinx.serialization.encodeToString
|
|
23
|
+
import kotlinx.serialization.json.Json
|
|
24
|
+
import org.json.JSONObject
|
|
25
|
+
|
|
26
|
+
@ExperimentalPrimerApi
|
|
27
|
+
internal class PrimerRNHeadlessUniversalCheckoutAssetManager(
|
|
28
|
+
private val reactContext: ReactApplicationContext,
|
|
29
|
+
) : ReactContextBaseJavaModule(reactContext) {
|
|
30
|
+
|
|
31
|
+
override fun getName() = "RNTPrimerHeadlessUniversalCheckoutAssetsManager"
|
|
32
|
+
|
|
33
|
+
@ReactMethod
|
|
34
|
+
fun getCardNetworkImage(
|
|
35
|
+
cardNetworkStr: String,
|
|
36
|
+
promise: Promise,
|
|
37
|
+
) {
|
|
38
|
+
val cardNetwork =
|
|
39
|
+
CardNetwork.Type.values().find { it.name.equals(cardNetworkStr, ignoreCase = true) }
|
|
40
|
+
when (cardNetwork) {
|
|
41
|
+
null -> {
|
|
42
|
+
val exception =
|
|
43
|
+
ErrorTypeRN.NativeBridgeFailed errorTo "Failed to find asset of $cardNetworkStr."
|
|
44
|
+
promise.reject(exception.errorId, exception.description)
|
|
45
|
+
}
|
|
46
|
+
else -> try {
|
|
47
|
+
PrimerHeadlessUniversalCheckoutAssetsManager.getCardNetworkImage(cardNetwork)
|
|
48
|
+
.let { resourceId ->
|
|
49
|
+
val file = getFileForCardNetworkAsset(reactContext, cardNetworkStr)
|
|
50
|
+
AssetsManager.saveBitmapToFile(
|
|
51
|
+
file,
|
|
52
|
+
drawableToBitmap(ContextCompat.getDrawable(reactContext, resourceId)!!),
|
|
53
|
+
)
|
|
54
|
+
promise.resolve(
|
|
55
|
+
convertJsonToMap(
|
|
56
|
+
JSONObject(
|
|
57
|
+
Json.encodeToString(
|
|
58
|
+
PrimerCardNetworkAsset("file://${file.absolutePath}")
|
|
59
|
+
)
|
|
60
|
+
)
|
|
61
|
+
)
|
|
62
|
+
)
|
|
63
|
+
}
|
|
64
|
+
} catch (e: SdkUninitializedException) {
|
|
65
|
+
promise.reject(ErrorTypeRN.UnitializedSdkSession.errorId, e.message, e)
|
|
66
|
+
} catch (e: Exception) {
|
|
67
|
+
promise.reject(ErrorTypeRN.NativeBridgeFailed.errorId, e.message, e)
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
@ReactMethod
|
|
73
|
+
fun getPaymentMethodAsset(paymentMethodTypeStr: String, promise: Promise) {
|
|
74
|
+
try {
|
|
75
|
+
val paymentMethodAsset =
|
|
76
|
+
PrimerHeadlessUniversalCheckoutAssetsManager.getPaymentMethodAsset(
|
|
77
|
+
reactContext,
|
|
78
|
+
paymentMethodTypeStr
|
|
79
|
+
)
|
|
80
|
+
promise.resolve(
|
|
81
|
+
convertJsonToMap(
|
|
82
|
+
JSONObject(
|
|
83
|
+
Json.encodeToString(
|
|
84
|
+
PrimerRNPaymentMethodAssetWrapper(
|
|
85
|
+
paymentMethodAsset.toPrimerRNPaymentMethodAsset(
|
|
86
|
+
reactContext,
|
|
87
|
+
paymentMethodTypeStr
|
|
88
|
+
)
|
|
89
|
+
)
|
|
90
|
+
)
|
|
91
|
+
)
|
|
92
|
+
)
|
|
93
|
+
)
|
|
94
|
+
} catch (e: SdkUninitializedException) {
|
|
95
|
+
promise.reject(ErrorTypeRN.UnitializedSdkSession.errorId, e.message, e)
|
|
96
|
+
} catch (e: Exception) {
|
|
97
|
+
val exception =
|
|
98
|
+
ErrorTypeRN.NativeBridgeFailed errorTo "Failed to find asset of $paymentMethodTypeStr for this session."
|
|
99
|
+
promise.reject(exception.errorId, exception.description)
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
@ReactMethod
|
|
104
|
+
fun getPaymentMethodAssets(promise: Promise) {
|
|
105
|
+
try {
|
|
106
|
+
val paymentMethodAssets =
|
|
107
|
+
PrimerHeadlessUniversalCheckoutAssetsManager.getPaymentMethodAssets(reactContext)
|
|
108
|
+
if (paymentMethodAssets.isEmpty()) {
|
|
109
|
+
val exception =
|
|
110
|
+
ErrorTypeRN.NativeBridgeFailed errorTo "Failed to find assets for this session"
|
|
111
|
+
promise.reject(exception.errorId, exception.description)
|
|
112
|
+
}
|
|
113
|
+
promise.resolve(
|
|
114
|
+
convertJsonToMap(
|
|
115
|
+
JSONObject(
|
|
116
|
+
Json.encodeToString(
|
|
117
|
+
PrimerRNPaymentMethodAssets(paymentMethodAssets.map {
|
|
118
|
+
it.toPrimerRNPaymentMethodAsset(
|
|
119
|
+
reactContext,
|
|
120
|
+
it.paymentMethodType
|
|
121
|
+
)
|
|
122
|
+
})
|
|
123
|
+
)
|
|
124
|
+
)
|
|
125
|
+
)
|
|
126
|
+
)
|
|
127
|
+
} catch (e: SdkUninitializedException) {
|
|
128
|
+
promise.reject(ErrorTypeRN.UnitializedSdkSession.errorId, e.message, e)
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
package com.primerioreactnative.components.manager.nativeUi
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.Promise
|
|
4
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
5
|
+
import com.facebook.react.bridge.ReactContextBaseJavaModule
|
|
6
|
+
import com.facebook.react.bridge.ReactMethod
|
|
7
|
+
import com.primerioreactnative.datamodels.ErrorTypeRN
|
|
8
|
+
import com.primerioreactnative.datamodels.PrimerErrorRN
|
|
9
|
+
import com.primerioreactnative.utils.errorTo
|
|
10
|
+
import io.primer.android.ExperimentalPrimerApi
|
|
11
|
+
import io.primer.android.PrimerSessionIntent
|
|
12
|
+
import io.primer.android.components.SdkUninitializedException
|
|
13
|
+
import io.primer.android.components.domain.exception.UnsupportedPaymentMethodManagerException
|
|
14
|
+
import io.primer.android.components.manager.nativeUi.PrimerHeadlessUniversalCheckoutNativeUiManager
|
|
15
|
+
import io.primer.android.components.manager.nativeUi.PrimerHeadlessUniversalCheckoutNativeUiManagerInterface
|
|
16
|
+
import io.primer.android.domain.exception.UnsupportedPaymentIntentException
|
|
17
|
+
|
|
18
|
+
@ExperimentalPrimerApi
|
|
19
|
+
internal class PrimerRNHeadlessUniversalCheckoutNativeUiManager(
|
|
20
|
+
private val reactContext: ReactApplicationContext,
|
|
21
|
+
) : ReactContextBaseJavaModule(reactContext) {
|
|
22
|
+
|
|
23
|
+
private lateinit var nativeUiManager: PrimerHeadlessUniversalCheckoutNativeUiManagerInterface
|
|
24
|
+
private var paymentMethodTypeStr: String? = null
|
|
25
|
+
|
|
26
|
+
override fun getName() = "RNTPrimerHeadlessUniversalPaymentMethodNativeUIManager"
|
|
27
|
+
|
|
28
|
+
@ReactMethod
|
|
29
|
+
fun configure(paymentMethodTypeStr: String, promise: Promise) {
|
|
30
|
+
try {
|
|
31
|
+
nativeUiManager = PrimerHeadlessUniversalCheckoutNativeUiManager.newInstance(
|
|
32
|
+
paymentMethodTypeStr
|
|
33
|
+
)
|
|
34
|
+
this.paymentMethodTypeStr = paymentMethodTypeStr
|
|
35
|
+
promise.resolve(null)
|
|
36
|
+
} catch (e: SdkUninitializedException) {
|
|
37
|
+
promise.reject(ErrorTypeRN.UnitializedSdkSession.errorId, e.message, e)
|
|
38
|
+
} catch (e: UnsupportedPaymentMethodManagerException) {
|
|
39
|
+
promise.reject(ErrorTypeRN.UnsupportedPaymentMethod.errorId, e.message, e)
|
|
40
|
+
} catch (e: Exception) {
|
|
41
|
+
val exception =
|
|
42
|
+
ErrorTypeRN.NativeBridgeFailed errorTo e.message.orEmpty()
|
|
43
|
+
promise.reject(exception.errorId, exception.description, e)
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@ReactMethod
|
|
48
|
+
fun showPaymentMethod(
|
|
49
|
+
intentStr: String,
|
|
50
|
+
promise: Promise
|
|
51
|
+
) {
|
|
52
|
+
|
|
53
|
+
if (::nativeUiManager.isInitialized.not()) {
|
|
54
|
+
val exception = PrimerErrorRN(
|
|
55
|
+
ErrorTypeRN.NativeBridgeFailed.errorId,
|
|
56
|
+
"The NativeUIManager has not been initialized.",
|
|
57
|
+
null,
|
|
58
|
+
"Initialize the NativeUIManager by calling the configure function" +
|
|
59
|
+
" and providing a payment method type."
|
|
60
|
+
)
|
|
61
|
+
promise.reject(exception.errorId, exception.description)
|
|
62
|
+
} else if (PrimerSessionIntent.values()
|
|
63
|
+
.firstOrNull { intentStr.equals(it.name, true) } == null
|
|
64
|
+
) {
|
|
65
|
+
val exception = PrimerErrorRN(
|
|
66
|
+
ErrorTypeRN.NativeBridgeFailed.errorId,
|
|
67
|
+
"Invalid value for 'intent'.",
|
|
68
|
+
null,
|
|
69
|
+
"'intent' can be 'CHECKOUT' or 'VAULT'."
|
|
70
|
+
)
|
|
71
|
+
promise.reject(exception.errorId, exception.description)
|
|
72
|
+
} else {
|
|
73
|
+
try {
|
|
74
|
+
nativeUiManager.showPaymentMethod(
|
|
75
|
+
reactContext,
|
|
76
|
+
PrimerSessionIntent.valueOf(intentStr.uppercase())
|
|
77
|
+
)
|
|
78
|
+
} catch (e: UnsupportedPaymentIntentException) {
|
|
79
|
+
promise.reject(ErrorTypeRN.UnsupportedPaymentIntent.errorId, e.message, e)
|
|
80
|
+
} catch (e: Exception) {
|
|
81
|
+
val exception =
|
|
82
|
+
ErrorTypeRN.NativeBridgeFailed errorTo e.message.orEmpty()
|
|
83
|
+
promise.reject(exception.errorId, exception.description, e)
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|