@primer-io/react-native 2.16.0 → 2.17.0-rc.1
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 +13 -34
- 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 +99 -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 +0 -8
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerPaymentMethodOptionsRN.kt +0 -4
- 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 +82 -0
- package/ios/{DataModels → Sources/DataModels}/PrimerThemeRN.swift +0 -0
- package/ios/Sources/DataModels/RNTNativeError.swift +22 -0
- package/ios/Sources/DataModels/RNTPrimerPaymentMethodAsset.swift +65 -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/{Headless Universal Checkout → Sources/Headless Universal Checkout/Managers/Payment Method Managers}/RNTPrimerCardNumberInputElementManager.m +0 -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 +80 -0
- package/ios/{RNTPrimer.swift → Sources/RNTPrimer.swift} +20 -34
- 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 +52 -52
- package/lib/commonjs/Primer.js.map +1 -1
- package/lib/commonjs/PrimerInput.js.map +1 -1
- package/lib/commonjs/RNPrimer.js +2 -12
- 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 +52 -52
- package/lib/module/Primer.js.map +1 -1
- package/lib/module/PrimerInput.js.map +1 -1
- package/lib/module/RNPrimer.js +2 -12
- 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 +3 -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 +14 -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 +2 -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 +30 -16
- 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 +49 -60
- package/src/RNPrimer.ts +2 -18
- package/src/index.tsx +43 -29
- package/src/models/PrimerAsset.ts +13 -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 +1 -28
- package/src/models/PrimerPaymentMethodManagerCategory.ts +5 -0
- package/src/models/PrimerRawData.ts +6 -10
- package/src/models/PrimerSettings.ts +40 -26
- 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
|
@@ -1,501 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// RNTPrimerHeadlessUniversalCheckout.swift
|
|
3
|
-
// primer-io-react-native
|
|
4
|
-
//
|
|
5
|
-
// Created by Evangelos on 8/3/22.
|
|
6
|
-
//
|
|
7
|
-
|
|
8
|
-
import Foundation
|
|
9
|
-
import PrimerSDK
|
|
10
|
-
|
|
11
|
-
@objc
|
|
12
|
-
enum PrimerHeadlessUniversalCheckoutEvents: Int, CaseIterable {
|
|
13
|
-
|
|
14
|
-
case onHUCTokenizeStart = 0
|
|
15
|
-
case onHUCPrepareStart
|
|
16
|
-
case onHUCAvailablePaymentMethodsLoaded
|
|
17
|
-
case onHUCPaymentMethodShow
|
|
18
|
-
case onTokenizeSuccess
|
|
19
|
-
case onResumeSuccess
|
|
20
|
-
case onResumePending
|
|
21
|
-
case onCheckoutReceivedAdditionalInfo
|
|
22
|
-
case onBeforePaymentCreate
|
|
23
|
-
case onBeforeClientSessionUpdate
|
|
24
|
-
case onClientSessionUpdate
|
|
25
|
-
case onCheckoutComplete
|
|
26
|
-
case onError
|
|
27
|
-
|
|
28
|
-
var stringValue: String {
|
|
29
|
-
switch self {
|
|
30
|
-
case .onHUCPrepareStart:
|
|
31
|
-
return "onHUCPrepareStart"
|
|
32
|
-
case .onHUCTokenizeStart:
|
|
33
|
-
return "onHUCTokenizeStart"
|
|
34
|
-
case .onHUCPaymentMethodShow:
|
|
35
|
-
return "onHUCPaymentMethodShow"
|
|
36
|
-
case .onTokenizeSuccess:
|
|
37
|
-
return "onTokenizeSuccess"
|
|
38
|
-
case .onResumeSuccess:
|
|
39
|
-
return "onResumeSuccess"
|
|
40
|
-
case .onResumePending:
|
|
41
|
-
return "onResumePending"
|
|
42
|
-
case .onCheckoutReceivedAdditionalInfo:
|
|
43
|
-
return "onCheckoutReceivedAdditionalInfo"
|
|
44
|
-
case .onBeforePaymentCreate:
|
|
45
|
-
return "onBeforePaymentCreate"
|
|
46
|
-
case .onBeforeClientSessionUpdate:
|
|
47
|
-
return "onBeforeClientSessionUpdate"
|
|
48
|
-
case .onClientSessionUpdate:
|
|
49
|
-
return "onClientSessionUpdate"
|
|
50
|
-
case .onCheckoutComplete:
|
|
51
|
-
return "onCheckoutComplete"
|
|
52
|
-
case .onHUCAvailablePaymentMethodsLoaded:
|
|
53
|
-
return "onHUCAvailablePaymentMethodsLoaded"
|
|
54
|
-
case .onError:
|
|
55
|
-
return "onError"
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
@objc(PrimerHeadlessUniversalCheckout)
|
|
61
|
-
class RNTPrimerHeadlessUniversalCheckout: RCTEventEmitter {
|
|
62
|
-
|
|
63
|
-
private var primerWillCreatePaymentWithDataDecisionHandler: ((_ errorMessage: String?) -> Void)?
|
|
64
|
-
private var primerDidTokenizePaymentMethodDecisionHandler: ((_ resumeToken: String?, _ errorMessage: String?) -> Void)?
|
|
65
|
-
private var primerDidResumeWithDecisionHandler: ((_ resumeToken: String?, _ errorMessage: String?) -> Void)?
|
|
66
|
-
private var primerDidFailWithErrorDecisionHandler: ((_ errorMessage: String) -> Void)?
|
|
67
|
-
private var implementedRNCallbacks: ImplementedRNCallbacks?
|
|
68
|
-
|
|
69
|
-
override class func requiresMainQueueSetup() -> Bool {
|
|
70
|
-
return true
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
override init() {
|
|
74
|
-
super.init()
|
|
75
|
-
PrimerHeadlessUniversalCheckout.current.delegate = self
|
|
76
|
-
PrimerSDK.Primer.shared.integrationOptions = PrimerIntegrationOptions(reactNativeVersion: "2.15.1")
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
override func supportedEvents() -> [String]! {
|
|
80
|
-
return PrimerHeadlessUniversalCheckoutEvents.allCases.compactMap({ $0.stringValue })
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
// MARK: - API
|
|
84
|
-
|
|
85
|
-
@objc
|
|
86
|
-
public func startWithClientToken(_ clientToken: String,
|
|
87
|
-
settingsStr: String?,
|
|
88
|
-
errorCallback: @escaping RCTResponseSenderBlock,
|
|
89
|
-
successCallback: @escaping RCTResponseSenderBlock)
|
|
90
|
-
{
|
|
91
|
-
var settings: PrimerSettings?
|
|
92
|
-
if let settingsStr = settingsStr {
|
|
93
|
-
do {
|
|
94
|
-
settings = try PrimerSettings.initialize(with: settingsStr)
|
|
95
|
-
} catch {
|
|
96
|
-
errorCallback([error.rnError])
|
|
97
|
-
return
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
PrimerHeadlessUniversalCheckout.current.start(withClientToken: clientToken, settings: settings, delegate: self) { paymentMethodTypes, err in
|
|
102
|
-
if let err = err {
|
|
103
|
-
errorCallback([err.rnError])
|
|
104
|
-
} else if let paymentMethodTypes = paymentMethodTypes {
|
|
105
|
-
successCallback([paymentMethodTypes])
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
@objc
|
|
111
|
-
public func getAssetForPaymentMethodType(_ paymentMethodTypeStr: String,
|
|
112
|
-
assetType assetTypeStr: String,
|
|
113
|
-
errorCallback: @escaping RCTResponseSenderBlock,
|
|
114
|
-
successCallback: @escaping RCTResponseSenderBlock)
|
|
115
|
-
{
|
|
116
|
-
guard let unwrappedAssetType = PrimerAsset.ImageType(rawValue: assetTypeStr), let image = PrimerHeadlessUniversalCheckout.getAsset(for: paymentMethodTypeStr, assetType: unwrappedAssetType) else {
|
|
117
|
-
let err = NativeError(errorId: "missing-asset", errorDescription: "Failed to find \(assetTypeStr) for \(paymentMethodTypeStr)", recoverySuggestion: nil)
|
|
118
|
-
errorCallback([err.rnError])
|
|
119
|
-
return
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
do {
|
|
123
|
-
let imageURL = try self.tempStoreImage(image: image, name: paymentMethodTypeStr)
|
|
124
|
-
successCallback([imageURL.absoluteString])
|
|
125
|
-
} catch {
|
|
126
|
-
errorCallback([error.rnError])
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
@objc
|
|
131
|
-
public func getAssetForCardNetwork(_ cardNetworkStr: String,
|
|
132
|
-
assetType assetTypeStr: String,
|
|
133
|
-
errorCallback: @escaping RCTResponseSenderBlock,
|
|
134
|
-
successCallback: @escaping RCTResponseSenderBlock)
|
|
135
|
-
{
|
|
136
|
-
guard let cardNetwork = CardNetwork(rawValue: cardNetworkStr) else {
|
|
137
|
-
let err = NativeError(errorId: "invalid-card-network", errorDescription: "Card network for \(cardNetworkStr) does not exist, make sure you don't have any typos.", recoverySuggestion: nil)
|
|
138
|
-
errorCallback([err.rnError])
|
|
139
|
-
return
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
guard let unwrappedAssetType = PrimerAsset.ImageType(rawValue: assetTypeStr), let image = PrimerHeadlessUniversalCheckout.getAsset(for: cardNetwork, assetType: unwrappedAssetType) else {
|
|
143
|
-
let err = NativeError(errorId: "missing-asset", errorDescription: "Failed to find \(assetTypeStr) for \(cardNetworkStr)", recoverySuggestion: nil)
|
|
144
|
-
errorCallback([err.rnError])
|
|
145
|
-
return
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
do {
|
|
149
|
-
let imageURL = try self.tempStoreImage(image: image, name: cardNetworkStr)
|
|
150
|
-
successCallback([imageURL.absoluteString])
|
|
151
|
-
} catch {
|
|
152
|
-
errorCallback([error.rnError])
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
@objc
|
|
157
|
-
public func showPaymentMethod(_ paymentMethodTypeStr: String,
|
|
158
|
-
resolver: RCTPromiseResolveBlock,
|
|
159
|
-
rejecter: RCTPromiseRejectBlock)
|
|
160
|
-
{
|
|
161
|
-
PrimerHeadlessUniversalCheckout.current.showPaymentMethod(paymentMethodTypeStr)
|
|
162
|
-
resolver(nil)
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
@objc
|
|
166
|
-
public func disposePrimerHeadlessUniversalCheckout() {
|
|
167
|
-
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
// MARK: - HELPERS
|
|
171
|
-
|
|
172
|
-
private func tempStoreImage(image: UIImage, name: String) throws -> URL {
|
|
173
|
-
guard let imageURL = NSURL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("\(name).png") else {
|
|
174
|
-
let err = NativeError(errorId: "error", errorDescription: "Failed to create URL for asset", recoverySuggestion: nil)
|
|
175
|
-
throw err
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
guard let pngData = image.pngData() else {
|
|
179
|
-
let err = NativeError(errorId: "error", errorDescription: "Failed to get image's PNG data", recoverySuggestion: nil)
|
|
180
|
-
throw err
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
try pngData.write(to: imageURL)
|
|
184
|
-
return imageURL
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
// MARK: - DECISION HANDLERS
|
|
188
|
-
|
|
189
|
-
// MARK: Tokenization
|
|
190
|
-
|
|
191
|
-
@objc
|
|
192
|
-
public func handleTokenizationNewClientToken(_ newClientToken: String, resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
|
|
193
|
-
DispatchQueue.main.async {
|
|
194
|
-
self.primerDidTokenizePaymentMethodDecisionHandler?(newClientToken, nil)
|
|
195
|
-
self.primerDidTokenizePaymentMethodDecisionHandler = nil
|
|
196
|
-
resolver(nil)
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
@objc
|
|
201
|
-
public func handleTokenizationSuccess(_ resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
|
|
202
|
-
DispatchQueue.main.async {
|
|
203
|
-
self.primerDidTokenizePaymentMethodDecisionHandler?(nil, nil)
|
|
204
|
-
self.primerDidTokenizePaymentMethodDecisionHandler = nil
|
|
205
|
-
let err = NSError(domain: "native-bridge", code: 0, userInfo: [NSLocalizedDescriptionKey: "PrimerTokenizationHandler's handleSuccess function is not available on HUC."])
|
|
206
|
-
rejecter(err.rnError["errorId"]!, err.rnError["description"], err)
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
@objc
|
|
211
|
-
public func handleTokenizationFailure(_ errorMessage: String?, resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
|
|
212
|
-
DispatchQueue.main.async {
|
|
213
|
-
self.primerDidTokenizePaymentMethodDecisionHandler?(nil, errorMessage ?? "")
|
|
214
|
-
self.primerDidTokenizePaymentMethodDecisionHandler = nil
|
|
215
|
-
let err = NSError(domain: "native-bridge", code: 0, userInfo: [NSLocalizedDescriptionKey: "PrimerTokenizationHandler's handleFailure function is not available on HUC."])
|
|
216
|
-
rejecter(err.rnError["errorId"]!, err.rnError["description"], err)
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
// MARK: Resume Payment
|
|
221
|
-
|
|
222
|
-
@objc
|
|
223
|
-
public func handleResumeWithNewClientToken(_ newClientToken: String, resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
|
|
224
|
-
DispatchQueue.main.async {
|
|
225
|
-
self.primerDidResumeWithDecisionHandler?(newClientToken, nil)
|
|
226
|
-
self.primerDidResumeWithDecisionHandler = nil
|
|
227
|
-
resolver(nil)
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
@objc
|
|
232
|
-
public func handleResumeSuccess(_ resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
|
|
233
|
-
DispatchQueue.main.async {
|
|
234
|
-
let err = NSError(domain: "native-bridge", code: 0, userInfo: [NSLocalizedDescriptionKey: "PrimerResumeHandler's handleSuccess function is not available on HUC."])
|
|
235
|
-
rejecter(err.rnError["errorId"]!, err.rnError["description"], err)
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
@objc
|
|
240
|
-
public func handleResumeFailure(_ errorMessage: String?, resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
|
|
241
|
-
DispatchQueue.main.async {
|
|
242
|
-
let err = NSError(domain: "native-bridge", code: 0, userInfo: [NSLocalizedDescriptionKey: "PrimerResumeHandler's handleFailure function is not available on HUC."])
|
|
243
|
-
rejecter(err.rnError["errorId"]!, err.rnError["description"], err)
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
// MARK: Payment Creation
|
|
248
|
-
|
|
249
|
-
@objc
|
|
250
|
-
public func handlePaymentCreationAbort(_ errorMessage: String?, resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
|
|
251
|
-
DispatchQueue.main.async {
|
|
252
|
-
self.primerWillCreatePaymentWithDataDecisionHandler?(errorMessage ?? "")
|
|
253
|
-
self.primerWillCreatePaymentWithDataDecisionHandler = nil
|
|
254
|
-
resolver(nil)
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
@objc
|
|
259
|
-
public func handlePaymentCreationContinue(_ resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
|
|
260
|
-
DispatchQueue.main.async {
|
|
261
|
-
self.primerWillCreatePaymentWithDataDecisionHandler?(nil)
|
|
262
|
-
self.primerWillCreatePaymentWithDataDecisionHandler = nil
|
|
263
|
-
resolver(nil)
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
// MARK: Helpers
|
|
268
|
-
|
|
269
|
-
private func detectImplemetedCallbacks() {
|
|
270
|
-
sendEvent(withName: PrimerEvents.detectImplementedRNCallbacks.stringValue, body: nil)
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
@objc
|
|
274
|
-
public func setImplementedRNCallbacks(_ implementedRNCallbacksStr: String, resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
|
|
275
|
-
DispatchQueue.main.async {
|
|
276
|
-
do {
|
|
277
|
-
guard let implementedRNCallbacksData = implementedRNCallbacksStr.data(using: .utf8) else {
|
|
278
|
-
let err = NSError(domain: "native-bridge", code: 0, userInfo: [NSLocalizedDescriptionKey: "Failed to convert string to data"])
|
|
279
|
-
throw err
|
|
280
|
-
}
|
|
281
|
-
self.implementedRNCallbacks = try JSONDecoder().decode(ImplementedRNCallbacks.self, from: implementedRNCallbacksData)
|
|
282
|
-
resolver(nil)
|
|
283
|
-
} catch {
|
|
284
|
-
self.handleRNBridgeError(error, checkoutData: nil, stopOnDebug: false)
|
|
285
|
-
rejecter(error.rnError["errorId"]!, error.rnError["description"], error)
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
private func handleRNBridgeError(_ error: Error, checkoutData: PrimerCheckoutData?, stopOnDebug: Bool) {
|
|
291
|
-
DispatchQueue.main.async {
|
|
292
|
-
if stopOnDebug {
|
|
293
|
-
assertionFailure(error.localizedDescription)
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
var body: [String: Any] = ["error": error.rnError]
|
|
297
|
-
if let checkoutData = checkoutData,
|
|
298
|
-
let data = try? JSONEncoder().encode(checkoutData),
|
|
299
|
-
let json = try? JSONSerialization.jsonObject(with: data){
|
|
300
|
-
body["checkoutData"] = json
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
self.sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onError.stringValue, body: body)
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
// MARK: - EVENTS
|
|
309
|
-
|
|
310
|
-
extension RNTPrimerHeadlessUniversalCheckout: PrimerHeadlessUniversalCheckoutDelegate {
|
|
311
|
-
|
|
312
|
-
func primerHeadlessUniversalCheckoutPreparationDidStart(for paymentMethodType: String) {
|
|
313
|
-
sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onHUCPrepareStart.stringValue, body: ["paymentMethodType": paymentMethodType])
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
func primerHeadlessUniversalCheckoutTokenizationDidStart(for paymentMethodType: String) {
|
|
317
|
-
sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onHUCTokenizeStart.stringValue, body: ["paymentMethodType": paymentMethodType])
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
func primerHeadlessUniversalCheckoutDidLoadAvailablePaymentMethods(_ paymentMethodTypes: [String]) {
|
|
321
|
-
sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onHUCAvailablePaymentMethodsLoaded.stringValue, body: ["paymentMethodTypes": paymentMethodTypes])
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
func primerHeadlessUniversalCheckoutPaymentMethodDidShow(for paymentMethodType: String) {
|
|
325
|
-
sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onHUCPaymentMethodShow.stringValue, body: ["paymentMethodType": paymentMethodType])
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
func primerHeadlessUniversalCheckoutDidTokenizePaymentMethod(_ paymentMethodTokenData: PrimerPaymentMethodTokenData, decisionHandler: @escaping (PrimerResumeDecision) -> Void) {
|
|
329
|
-
if self.implementedRNCallbacks?.isOnTokenizeSuccessImplemented == true {
|
|
330
|
-
self.primerDidTokenizePaymentMethodDecisionHandler = { (newClientToken, errorMessage) in
|
|
331
|
-
DispatchQueue.main.async {
|
|
332
|
-
if let errorMessage = errorMessage {
|
|
333
|
-
decisionHandler(.fail(withErrorMessage: errorMessage.isEmpty ? nil : errorMessage))
|
|
334
|
-
} else if let newClientToken = newClientToken {
|
|
335
|
-
decisionHandler(.continueWithNewClientToken(newClientToken))
|
|
336
|
-
} else {
|
|
337
|
-
decisionHandler(.succeed())
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
do {
|
|
343
|
-
let data = try JSONEncoder().encode(paymentMethodTokenData)
|
|
344
|
-
let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments)
|
|
345
|
-
DispatchQueue.main.async {
|
|
346
|
-
self.sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onTokenizeSuccess.stringValue, body: json)
|
|
347
|
-
}
|
|
348
|
-
} catch {
|
|
349
|
-
self.handleRNBridgeError(error, checkoutData: nil, stopOnDebug: true)
|
|
350
|
-
}
|
|
351
|
-
} else {
|
|
352
|
-
// RN dev hasn't opted in on listening the tokenization callback.
|
|
353
|
-
// Throw an error if it's the manual flow, ignore if it's the
|
|
354
|
-
// auto flow.
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
func primerHeadlessUniversalCheckoutDidResumeWith(_ resumeToken: String, decisionHandler: @escaping (PrimerResumeDecision) -> Void) {
|
|
359
|
-
if self.implementedRNCallbacks?.isOnResumeSuccessImplemented == true {
|
|
360
|
-
self.primerDidResumeWithDecisionHandler = { (resumeToken, errorMessage) in
|
|
361
|
-
DispatchQueue.main.async {
|
|
362
|
-
if let errorMessage = errorMessage {
|
|
363
|
-
decisionHandler(.fail(withErrorMessage: errorMessage.isEmpty ? nil : errorMessage))
|
|
364
|
-
} else if let resumeToken = resumeToken {
|
|
365
|
-
decisionHandler(.continueWithNewClientToken(resumeToken))
|
|
366
|
-
} else {
|
|
367
|
-
decisionHandler(.succeed())
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
DispatchQueue.main.async {
|
|
373
|
-
self.sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onResumeSuccess.stringValue, body: ["resumeToken": resumeToken])
|
|
374
|
-
}
|
|
375
|
-
} else {
|
|
376
|
-
// RN dev hasn't opted in on listening the tokenization callback.
|
|
377
|
-
// Throw an error if it's the manual flow.
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
func primerHeadlessUniversalCheckoutDidFail(withError err: Error) {
|
|
382
|
-
if self.implementedRNCallbacks?.isOnErrorImplemented == true {
|
|
383
|
-
// Send the error message to the RN bridge.
|
|
384
|
-
self.handleRNBridgeError(err, checkoutData: nil, stopOnDebug: false)
|
|
385
|
-
|
|
386
|
-
} else {
|
|
387
|
-
// RN dev hasn't opted in on listening SDK dismiss.
|
|
388
|
-
// Ignore!
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
func primerHeadlessUniversalCheckoutDidCompleteCheckoutWithData(_ data: PrimerCheckoutData) {
|
|
393
|
-
DispatchQueue.main.async {
|
|
394
|
-
if self.implementedRNCallbacks?.isOnCheckoutCompleteImplemented == true {
|
|
395
|
-
do {
|
|
396
|
-
let checkoutData = try JSONEncoder().encode(data)
|
|
397
|
-
let checkoutJson = try JSONSerialization.jsonObject(with: checkoutData, options: .allowFragments)
|
|
398
|
-
self.sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onCheckoutComplete.stringValue, body: checkoutJson)
|
|
399
|
-
} catch {
|
|
400
|
-
self.handleRNBridgeError(error, checkoutData: data, stopOnDebug: true)
|
|
401
|
-
}
|
|
402
|
-
} else {
|
|
403
|
-
let err = NSError(domain: "native-bridge", code: 1, userInfo: [NSLocalizedDescriptionKey: "Callback [onCheckoutComplete] should be implemented."])
|
|
404
|
-
self.handleRNBridgeError(err, checkoutData: data, stopOnDebug: false)
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
func primerHeadlessUniversalCheckoutDidEnterResumePendingWithPaymentAdditionalInfo(_ additionalInfo: PrimerCheckoutAdditionalInfo?) {
|
|
410
|
-
DispatchQueue.main.async {
|
|
411
|
-
if self.implementedRNCallbacks?.isOnResumePendingImplemented == true {
|
|
412
|
-
do {
|
|
413
|
-
let checkoutAdditionalInfo = try JSONEncoder().encode(additionalInfo)
|
|
414
|
-
let checkoutAdditionalInfoJson = try JSONSerialization.jsonObject(with: checkoutAdditionalInfo, options: .allowFragments)
|
|
415
|
-
self.sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onResumePending.stringValue, body: checkoutAdditionalInfoJson)
|
|
416
|
-
} catch {
|
|
417
|
-
let checkoutData = PrimerCheckoutData(payment: nil, additionalInfo: additionalInfo)
|
|
418
|
-
self.handleRNBridgeError(error, checkoutData: checkoutData, stopOnDebug: true)
|
|
419
|
-
}
|
|
420
|
-
} else {
|
|
421
|
-
let err = NSError(domain: "native-bridge", code: 1, userInfo: [NSLocalizedDescriptionKey: "Callback [onResumePending] should be implemented."])
|
|
422
|
-
let checkoutData = PrimerCheckoutData(payment: nil, additionalInfo: additionalInfo)
|
|
423
|
-
self.handleRNBridgeError(err, checkoutData: checkoutData, stopOnDebug: false)
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
}
|
|
427
|
-
|
|
428
|
-
func primerHeadlessUniversalCheckoutDidReceiveAdditionalInfo(_ additionalInfo: PrimerCheckoutAdditionalInfo?) {
|
|
429
|
-
DispatchQueue.main.async {
|
|
430
|
-
if self.implementedRNCallbacks?.isOnCheckoutReceivedAdditionalInfoImplemented == true {
|
|
431
|
-
do {
|
|
432
|
-
let checkoutAdditionalInfo = try JSONEncoder().encode(additionalInfo)
|
|
433
|
-
let checkoutAdditionalInfoJson = try JSONSerialization.jsonObject(with: checkoutAdditionalInfo, options: .allowFragments)
|
|
434
|
-
self.sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onCheckoutReceivedAdditionalInfo.stringValue, body: checkoutAdditionalInfoJson)
|
|
435
|
-
} catch {
|
|
436
|
-
let checkoutData = PrimerCheckoutData(payment: nil, additionalInfo: additionalInfo)
|
|
437
|
-
self.handleRNBridgeError(error, checkoutData: checkoutData, stopOnDebug: true)
|
|
438
|
-
}
|
|
439
|
-
} else {
|
|
440
|
-
let err = NSError(domain: "native-bridge", code: 1, userInfo: [NSLocalizedDescriptionKey: "Callback [onCheckoutReceivedAdditionalInfo] should be implemented."])
|
|
441
|
-
let checkoutData = PrimerCheckoutData(payment: nil, additionalInfo: additionalInfo)
|
|
442
|
-
self.handleRNBridgeError(err, checkoutData: checkoutData, stopOnDebug: false)
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
func primerHeadlessUniversalCheckoutClientSessionWillUpdate() {
|
|
448
|
-
if self.implementedRNCallbacks?.isOnBeforeClientSessionUpdateImplemented == true {
|
|
449
|
-
DispatchQueue.main.async {
|
|
450
|
-
self.sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onBeforeClientSessionUpdate.stringValue, body: nil)
|
|
451
|
-
}
|
|
452
|
-
} else {
|
|
453
|
-
// React Native app hasn't implemented this callback, ignore.
|
|
454
|
-
}
|
|
455
|
-
}
|
|
456
|
-
|
|
457
|
-
func primerHeadlessUniversalCheckoutClientSessionDidUpdate(_ clientSession: PrimerClientSession) {
|
|
458
|
-
if self.implementedRNCallbacks?.isOnClientSessionUpdateImplemented == true {
|
|
459
|
-
do {
|
|
460
|
-
let data = try JSONEncoder().encode(clientSession)
|
|
461
|
-
let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments)
|
|
462
|
-
DispatchQueue.main.async {
|
|
463
|
-
self.sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onClientSessionUpdate.stringValue, body: json)
|
|
464
|
-
}
|
|
465
|
-
} catch {
|
|
466
|
-
self.handleRNBridgeError(error, checkoutData: nil, stopOnDebug: true)
|
|
467
|
-
}
|
|
468
|
-
} else {
|
|
469
|
-
// RN Dev hasn't implemented this callback, ignore.
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
func primerHeadlessUniversalCheckoutWillCreatePaymentWithData(_ data: PrimerCheckoutPaymentMethodData, decisionHandler: @escaping (PrimerPaymentCreationDecision) -> Void) {
|
|
474
|
-
if self.implementedRNCallbacks?.isOnBeforePaymentCreateImplemented == true {
|
|
475
|
-
self.primerWillCreatePaymentWithDataDecisionHandler = { errorMessage in
|
|
476
|
-
DispatchQueue.main.async {
|
|
477
|
-
if let errorMessage = errorMessage {
|
|
478
|
-
decisionHandler(.abortPaymentCreation(withErrorMessage: errorMessage.isEmpty ? nil : errorMessage))
|
|
479
|
-
} else {
|
|
480
|
-
decisionHandler(.continuePaymentCreation())
|
|
481
|
-
}
|
|
482
|
-
}
|
|
483
|
-
}
|
|
484
|
-
|
|
485
|
-
DispatchQueue.main.async {
|
|
486
|
-
do {
|
|
487
|
-
let checkoutPaymentmethodData = try JSONEncoder().encode(data)
|
|
488
|
-
let checkoutPaymentmethodJson = try JSONSerialization.jsonObject(with: checkoutPaymentmethodData, options: .allowFragments)
|
|
489
|
-
self.sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onBeforePaymentCreate.stringValue, body: checkoutPaymentmethodJson)
|
|
490
|
-
} catch {
|
|
491
|
-
self.handleRNBridgeError(error, checkoutData: nil, stopOnDebug: true)
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
|
-
} else {
|
|
495
|
-
// RN Dev hasn't implemented this callback, send a decision to continue the flow.
|
|
496
|
-
DispatchQueue.main.async {
|
|
497
|
-
decisionHandler(.continuePaymentCreation())
|
|
498
|
-
}
|
|
499
|
-
}
|
|
500
|
-
}
|
|
501
|
-
}
|
package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.m
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
#import <React/RCTBridgeModule.h>
|
|
2
|
-
#import <React/RCTViewManager.h>
|
|
3
|
-
#import <React/RCTUIManager.h>
|
|
4
|
-
#import <React/RCTView.h>
|
|
5
|
-
|
|
6
|
-
@interface RCT_EXTERN_MODULE(PrimerHeadlessUniversalCheckoutCardFormUIManager, NSObject)
|
|
7
|
-
|
|
8
|
-
RCT_EXTERN_METHOD(setInputElements:(NSString *)inputElements errorCallback: (RCTResponseSenderBlock)errorCallback successCallback: (RCTResponseSenderBlock)successCallback)
|
|
9
|
-
|
|
10
|
-
RCT_EXTERN_METHOD(tokenize)
|
|
11
|
-
|
|
12
|
-
RCT_EXTERN_METHOD(addInput:(NSNumber* __nonnull)tag)
|
|
13
|
-
|
|
14
|
-
@end
|
package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.swift
DELETED
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.swift
|
|
3
|
-
// primer-io-react-native
|
|
4
|
-
//
|
|
5
|
-
// Created by Evangelos on 4/3/22.
|
|
6
|
-
//
|
|
7
|
-
|
|
8
|
-
import Foundation
|
|
9
|
-
import PrimerSDK
|
|
10
|
-
|
|
11
|
-
@objc(PrimerHeadlessUniversalCheckoutCardFormUIManager)
|
|
12
|
-
class RNTPrimerHeadlessUniversalCheckoutCardFormUIManager: RCTViewManager {
|
|
13
|
-
|
|
14
|
-
@objc
|
|
15
|
-
override static func requiresMainQueueSetup() -> Bool {
|
|
16
|
-
return true
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
private lazy var cardFormUIManager: PrimerHeadlessUniversalCheckout.CardFormUIManager = {
|
|
20
|
-
return try! PrimerHeadlessUniversalCheckout.CardFormUIManager()
|
|
21
|
-
}()
|
|
22
|
-
private var successCallback: RCTResponseSenderBlock? {
|
|
23
|
-
didSet {
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
deinit {
|
|
29
|
-
print("🧨 deinit: \(self) \(Unmanaged.passUnretained(self).toOpaque())")
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
override init() {
|
|
33
|
-
super.init()
|
|
34
|
-
do {
|
|
35
|
-
self.cardFormUIManager = try PrimerHeadlessUniversalCheckout.CardFormUIManager()
|
|
36
|
-
self.cardFormUIManager.cardFormUIManagerDelegate = self
|
|
37
|
-
} catch {
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
print("⭐ init: \(self) \(Unmanaged.passUnretained(self).toOpaque())")
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
@objc
|
|
45
|
-
override func constantsToExport() -> [AnyHashable : Any]! {
|
|
46
|
-
return ["message": "Hello from native code"]
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
func cardFormUIManager(_ cardFormUIManager: PrimerHeadlessUniversalCheckout.CardFormUIManager, isCardFormValid: Bool) {
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
@objc
|
|
54
|
-
func setInputElements(_ inputElements: String, errorCallback: RCTResponseSenderBlock, successCallback: @escaping RCTResponseSenderBlock) {
|
|
55
|
-
print("RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.setInputElements\n\(inputElements)")
|
|
56
|
-
print("⭐ \(self) \(Unmanaged.passUnretained(self).toOpaque())")
|
|
57
|
-
self.successCallback = successCallback
|
|
58
|
-
self.successCallback?(["what??"])
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
@objc
|
|
62
|
-
func setInputElementsWithTags(_ tags: [NSNumber]) {
|
|
63
|
-
RCTUnsafeExecuteOnMainQueueSync {
|
|
64
|
-
guard let rctUIManager = self.bridge.module(for: RCTUIManager.self) as? RCTUIManager else {
|
|
65
|
-
return
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
for tag in tags {
|
|
69
|
-
if let view = rctUIManager.view(forReactTag: tag) {
|
|
70
|
-
if let inputElement = view as? PrimerInputElement {
|
|
71
|
-
self.cardFormUIManager.inputElements = [inputElement]
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
@objc
|
|
79
|
-
func addInput(_ tag: NSNumber) {
|
|
80
|
-
RCTUnsafeExecuteOnMainQueueSync {
|
|
81
|
-
guard let rctUIManager = self.bridge.module(for: RCTUIManager.self) as? RCTUIManager else {
|
|
82
|
-
return
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
if let view = rctUIManager.view(forReactTag: tag) {
|
|
86
|
-
if let inputElement = view as? PrimerInputElement {
|
|
87
|
-
self.cardFormUIManager.inputElements = [inputElement]
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
@objc
|
|
95
|
-
func tokenize() {
|
|
96
|
-
print("RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.tokenize")
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
extension RNTPrimerHeadlessUniversalCheckoutCardFormUIManager: PrimerInputElementDelegate {
|
|
102
|
-
|
|
103
|
-
func inputElementDidFocus(_ sender: PrimerInputElement) {
|
|
104
|
-
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
func inputElementDidBlur(_ sender: PrimerInputElement) {
|
|
108
|
-
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
extension RNTPrimerHeadlessUniversalCheckoutCardFormUIManager: PrimerCardFormDelegate {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// RNTPrimerHeadlessUniversalCheckoutRawDataManager.m
|
|
3
|
-
// primer-io-react-native
|
|
4
|
-
//
|
|
5
|
-
// Created by Evangelos on 3/8/22.
|
|
6
|
-
//
|
|
7
|
-
|
|
8
|
-
#import <React/RCTBridgeModule.h>
|
|
9
|
-
#import <React/RCTEventEmitter.h>
|
|
10
|
-
|
|
11
|
-
@interface RCT_EXTERN_MODULE(PrimerHeadlessUniversalCheckoutRawDataManager, RCTEventEmitter)
|
|
12
|
-
|
|
13
|
-
RCT_EXTERN_METHOD(initialize:(NSString *)paymentMethodTypeStr resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
|
|
14
|
-
|
|
15
|
-
RCT_EXTERN_METHOD(listRequiredInputElementTypesForPaymentMethodType:(NSString *)paymentMethodTypeStr resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
|
|
16
|
-
|
|
17
|
-
RCT_EXTERN_METHOD(setRawData:(NSString *)rawDataStr resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
|
|
18
|
-
|
|
19
|
-
RCT_EXTERN_METHOD(submit:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
|
|
20
|
-
|
|
21
|
-
RCT_EXTERN_METHOD(configure:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
|
|
22
|
-
|
|
23
|
-
@end
|