@primer-io/react-native 2.21.0 → 2.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/build.gradle +4 -4
- package/android/gradle/wrapper/gradle-wrapper.properties +1 -2
- package/android/src/main/java/com/primerioreactnative/PrimerRN.kt +2 -2
- package/android/src/main/java/com/primerioreactnative/PrimerRNEventListener.kt +10 -8
- package/android/src/main/java/com/primerioreactnative/PrimerRNHeadlessUniversalCheckout.kt +2 -2
- package/android/src/main/java/com/primerioreactnative/PrimerRNHeadlessUniversalCheckoutListener.kt +36 -13
- package/android/src/main/java/com/primerioreactnative/PrimerRNViewModelStoreOwner.kt +9 -0
- package/android/src/main/java/com/primerioreactnative/ReactNativePackage.kt +9 -1
- package/android/src/main/java/com/primerioreactnative/components/events/PrimerHeadlessUniversalCheckoutComponentEvent.kt +10 -0
- package/android/src/main/java/com/primerioreactnative/components/manager/asset/PrimerRNHeadlessUniversalCheckoutAssetManager.kt +8 -13
- package/android/src/main/java/com/primerioreactnative/components/manager/banks/PrimerRNHeadlessUniversalCheckoutBanksComponent.kt +284 -0
- package/android/src/main/java/com/primerioreactnative/components/manager/klarna/PrimerKlarnaPaymentViewManager.kt +103 -0
- package/android/src/main/java/com/primerioreactnative/components/manager/klarna/PrimerRNHeadlessUniversalCheckoutKlarnaComponent.kt +334 -0
- package/android/src/main/java/com/primerioreactnative/components/manager/nativeUi/PrimerRNHeadlessUniversalCheckoutNativeUiManager.kt +10 -8
- package/android/src/main/java/com/primerioreactnative/components/manager/raw/PrimerRNHeadlessUniversalCheckoutRawManager.kt +2 -2
- package/android/src/main/java/com/primerioreactnative/components/manager/vault/PrimerRNHeadlessUniversalCheckoutVaultManager.kt +5 -9
- package/android/src/main/java/com/primerioreactnative/datamodels/NamedComponentStepRN.kt +7 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/NamedComponentValidatableDataRN.kt +7 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerErrorRN.kt +8 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerIssuingBankRN.kt +11 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/PrimerPaymentMethodDataRN.kt +1 -1
- package/android/src/main/java/com/primerioreactnative/datamodels/banks/BanksCollectableDataRN.kt +17 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/banks/BanksStepRN.kt +20 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/extensions/banks/BanksCollectableData.kt +8 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/extensions/banks/BanksStep.kt +11 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/klarna/KlarnaPaymentCategoryRN.kt +11 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/klarna/KlarnaPaymentCollectableDataRN.kt +21 -0
- package/android/src/main/java/com/primerioreactnative/datamodels/klarna/KlarnaPaymentStepRN.kt +31 -0
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerError.kt +13 -0
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerIssuingBank.kt +7 -0
- package/android/src/main/java/com/primerioreactnative/extensions/PrimerPaymentMethodData.kt +1 -1
- package/android/src/main/java/com/primerioreactnative/extensions/klarna/KlarnaPaymentCategory.kt +12 -0
- package/android/src/main/java/com/primerioreactnative/extensions/klarna/KlarnaPaymentCategoryRN.kt +12 -0
- package/android/src/main/java/com/primerioreactnative/extensions/klarna/KlarnaPaymentCollectableData.kt +14 -0
- package/android/src/main/java/com/primerioreactnative/extensions/klarna/KlarnaPaymentStep.kt +21 -0
- package/android/src/main/java/com/primerioreactnative/utils/ErrorHelper.kt +3 -2
- package/android/src/main/java/com/primerioreactnative/utils/JsonConverter.kt +8 -1
- package/ios/ReactNative-Bridging-Header.h +1 -0
- package/ios/Sources/DataModels/Banks Component/RNTBanksCollectableData.swift +42 -0
- package/ios/Sources/DataModels/Banks Component/RNTBanksStep.swift +36 -0
- package/ios/Sources/DataModels/Klarna Component/PrimerHeadlessUniversalCheckoutComponentEvent.swift +36 -0
- package/ios/Sources/DataModels/Klarna Component/RNTKlarnaCollectableData.swift +36 -0
- package/ios/Sources/DataModels/Klarna Component/RNTKlarnaPaymentCategory.swift +33 -0
- package/ios/Sources/DataModels/Klarna Component/RNTKlarnaStep.swift +61 -0
- package/ios/Sources/DataModels/Klarna Component/RNTPrimerError.swift +67 -0
- package/ios/Sources/Headless Universal Checkout/Managers/Klarna/KlarnaPaymentView Manager/RNTPrimerKlarnaPaymentViewManager.h +14 -0
- package/ios/Sources/Headless Universal Checkout/Managers/Klarna/KlarnaPaymentView Manager/RNTPrimerKlarnaPaymentViewManager.m +25 -0
- package/ios/Sources/Headless Universal Checkout/Managers/Klarna/PrimerRNHeadlessUniversalCheckoutKlarnaComponent.m +27 -0
- package/ios/Sources/Headless Universal Checkout/Managers/Klarna/PrimerRNHeadlessUniversalCheckoutKlarnaComponent.swift +272 -0
- package/ios/Sources/Headless Universal Checkout/Managers/RNTRedirectManager.m +25 -0
- package/ios/Sources/Headless Universal Checkout/Managers/RNTRedirectManager.swift +183 -0
- package/ios/Sources/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.swift +3 -1
- package/ios/Sources/Helpers/PrimerCheckoutPaymentMethodData+RN.swift +21 -0
- package/ios/Sources/RNTPrimer.swift +4 -2
- package/ios/Sources/version.swift +1 -1
- package/lib/commonjs/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.js +9 -0
- package/lib/commonjs/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.js.map +1 -0
- package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.js +103 -0
- package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.js.map +1 -0
- package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.js +99 -0
- package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.js.map +1 -0
- package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js +4 -4
- package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js.map +1 -1
- package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.js +8 -0
- package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.js.map +1 -0
- package/lib/commonjs/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js +3 -2
- package/lib/commonjs/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js.map +1 -1
- package/lib/commonjs/Primer.js +2 -1
- package/lib/commonjs/Primer.js.map +1 -1
- package/lib/commonjs/index.js +186 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/models/IssuingBank.js +2 -0
- package/lib/commonjs/models/IssuingBank.js.map +1 -0
- package/lib/commonjs/models/NamedComponentStep.js +2 -0
- package/lib/commonjs/models/NamedComponentStep.js.map +1 -0
- package/lib/commonjs/models/NamedComponentValidatableData.js +2 -0
- package/lib/commonjs/models/NamedComponentValidatableData.js.map +1 -0
- package/lib/commonjs/models/PrimerComponentDataValidation.js +6 -0
- package/lib/commonjs/models/PrimerComponentDataValidation.js.map +1 -0
- package/lib/commonjs/models/PrimerError.js +2 -1
- package/lib/commonjs/models/PrimerError.js.map +1 -1
- package/lib/commonjs/models/banks/BanksCollectableData.js +6 -0
- package/lib/commonjs/models/banks/BanksCollectableData.js.map +1 -0
- package/lib/commonjs/models/banks/BanksSteps.js +6 -0
- package/lib/commonjs/models/banks/BanksSteps.js.map +1 -0
- package/lib/commonjs/models/klarna/KlarnaPaymentCategory.js +2 -0
- package/lib/commonjs/models/klarna/KlarnaPaymentCategory.js.map +1 -0
- package/lib/commonjs/models/klarna/KlarnaPaymentCollectableData.js +6 -0
- package/lib/commonjs/models/klarna/KlarnaPaymentCollectableData.js.map +1 -0
- package/lib/commonjs/models/klarna/KlarnaPaymentSteps.js +6 -0
- package/lib/commonjs/models/klarna/KlarnaPaymentSteps.js.map +1 -0
- package/lib/module/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.js +3 -0
- package/lib/module/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.js.map +1 -0
- package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.js +96 -0
- package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.js.map +1 -0
- package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.js +92 -0
- package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.js.map +1 -0
- package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js +4 -4
- package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js.map +1 -1
- package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.js +2 -0
- package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.js.map +1 -0
- package/lib/module/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js +3 -2
- package/lib/module/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js.map +1 -1
- package/lib/module/Primer.js +2 -1
- package/lib/module/Primer.js.map +1 -1
- package/lib/module/index.js +24 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/models/IssuingBank.js +2 -0
- package/lib/module/models/IssuingBank.js.map +1 -0
- package/lib/module/models/NamedComponentStep.js +2 -0
- package/lib/module/models/NamedComponentStep.js.map +1 -0
- package/lib/module/models/NamedComponentValidatableData.js +2 -0
- package/lib/module/models/NamedComponentValidatableData.js.map +1 -0
- package/lib/module/models/PrimerComponentDataValidation.js +2 -0
- package/lib/module/models/PrimerComponentDataValidation.js.map +1 -0
- package/lib/module/models/PrimerError.js +2 -1
- package/lib/module/models/PrimerError.js.map +1 -1
- package/lib/module/models/banks/BanksCollectableData.js +2 -0
- package/lib/module/models/banks/BanksCollectableData.js.map +1 -0
- package/lib/module/models/banks/BanksSteps.js +2 -0
- package/lib/module/models/banks/BanksSteps.js.map +1 -0
- package/lib/module/models/klarna/KlarnaPaymentCategory.js +2 -0
- package/lib/module/models/klarna/KlarnaPaymentCategory.js.map +1 -0
- package/lib/module/models/klarna/KlarnaPaymentCollectableData.js +2 -0
- package/lib/module/models/klarna/KlarnaPaymentCollectableData.js.map +1 -0
- package/lib/module/models/klarna/KlarnaPaymentSteps.js +2 -0
- package/lib/module/models/klarna/KlarnaPaymentSteps.js.map +1 -0
- package/lib/typescript/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.d.ts +2 -0
- package/lib/typescript/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.d.ts.map +1 -0
- package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.d.ts +54 -0
- package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.d.ts.map +1 -0
- package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.d.ts +50 -0
- package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.d.ts.map +1 -0
- package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.d.ts +3 -0
- package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.d.ts.map +1 -0
- package/lib/typescript/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.d.ts.map +1 -1
- package/lib/typescript/Primer.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +26 -2
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/models/IssuingBank.d.ts +9 -0
- package/lib/typescript/models/IssuingBank.d.ts.map +1 -0
- package/lib/typescript/models/NamedComponentStep.d.ts +12 -0
- package/lib/typescript/models/NamedComponentStep.d.ts.map +1 -0
- package/lib/typescript/models/NamedComponentValidatableData.d.ts +12 -0
- package/lib/typescript/models/NamedComponentValidatableData.d.ts.map +1 -0
- package/lib/typescript/models/PrimerCheckoutPaymentMethodData.d.ts +1 -0
- package/lib/typescript/models/PrimerCheckoutPaymentMethodData.d.ts.map +1 -1
- package/lib/typescript/models/PrimerComponentDataValidation.d.ts +54 -0
- package/lib/typescript/models/PrimerComponentDataValidation.d.ts.map +1 -0
- package/lib/typescript/models/PrimerError.d.ts +2 -6
- package/lib/typescript/models/PrimerError.d.ts.map +1 -1
- package/lib/typescript/models/PrimerValidationError.d.ts +3 -3
- package/lib/typescript/models/PrimerValidationError.d.ts.map +1 -1
- package/lib/typescript/models/banks/BanksCollectableData.d.ts +23 -0
- package/lib/typescript/models/banks/BanksCollectableData.d.ts.map +1 -0
- package/lib/typescript/models/banks/BanksSteps.d.ts +20 -0
- package/lib/typescript/models/banks/BanksSteps.d.ts.map +1 -0
- package/lib/typescript/models/klarna/KlarnaPaymentCategory.d.ts +24 -0
- package/lib/typescript/models/klarna/KlarnaPaymentCategory.d.ts.map +1 -0
- package/lib/typescript/models/klarna/KlarnaPaymentCollectableData.d.ts +24 -0
- package/lib/typescript/models/klarna/KlarnaPaymentCollectableData.d.ts.map +1 -0
- package/lib/typescript/models/klarna/KlarnaPaymentSteps.d.ts +36 -0
- package/lib/typescript/models/klarna/KlarnaPaymentSteps.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.tsx +5 -0
- package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.ts +161 -0
- package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.ts +147 -0
- package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.ts +4 -4
- package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.ts +10 -0
- package/src/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.ts +3 -2
- package/src/Primer.ts +2 -1
- package/src/index.tsx +62 -62
- package/src/models/IssuingBank.ts +8 -0
- package/src/models/NamedComponentStep.ts +11 -0
- package/src/models/NamedComponentValidatableData.ts +11 -0
- package/src/models/PrimerCheckoutPaymentMethodData.ts +6 -1
- package/src/models/PrimerComponentDataValidation.ts +60 -0
- package/src/models/PrimerError.ts +8 -14
- package/src/models/PrimerValidationError.ts +3 -3
- package/src/models/banks/BanksCollectableData.ts +25 -0
- package/src/models/banks/BanksSteps.ts +22 -0
- package/src/models/klarna/KlarnaPaymentCategory.ts +23 -0
- package/src/models/klarna/KlarnaPaymentCollectableData.ts +26 -0
- package/src/models/klarna/KlarnaPaymentSteps.ts +36 -0
- /package/ios/Sources/Headless Universal Checkout/Managers/{RNTAssetsManager.m → Assets Manager/RNTAssetsManager.m} +0 -0
- /package/ios/Sources/Headless Universal Checkout/Managers/{RNTAssetsManager.swift → Assets Manager/RNTAssetsManager.swift} +0 -0
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
//
|
|
2
|
+
// PrimerRNHeadlessUniversalCheckoutKlarnaComponent.k.swift
|
|
3
|
+
// primer-io-react-native
|
|
4
|
+
//
|
|
5
|
+
// Created by Stefan Vrancianu on 01.04.2024.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
import UIKit
|
|
10
|
+
import PrimerSDK
|
|
11
|
+
|
|
12
|
+
@objc(RNTPrimerHeadlessUniversalCheckoutKlarnaComponent)
|
|
13
|
+
class RNTPrimerHeadlessUniversalCheckoutKlarnaComponent: RCTEventEmitter {
|
|
14
|
+
|
|
15
|
+
private var klarnaManager: PrimerHeadlessUniversalCheckout.KlarnaManager = PrimerHeadlessUniversalCheckout.KlarnaManager()
|
|
16
|
+
var klarnaComponent: (any KlarnaComponent)?
|
|
17
|
+
var clientToken: String?
|
|
18
|
+
|
|
19
|
+
override class func requiresMainQueueSetup() -> Bool {
|
|
20
|
+
return true
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
override init() {
|
|
24
|
+
super.init()
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
override func supportedEvents() -> [String] {
|
|
28
|
+
return PrimerHeadlessUniversalCheckoutComponentEvent.allCases.compactMap({ $0.stringValue })
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// MARK: - API
|
|
32
|
+
|
|
33
|
+
@objc
|
|
34
|
+
public func configure(
|
|
35
|
+
_ primerSessionIntent: String,
|
|
36
|
+
resolver: @escaping RCTPromiseResolveBlock,
|
|
37
|
+
rejecter: @escaping RCTPromiseRejectBlock
|
|
38
|
+
) {
|
|
39
|
+
print("configure")
|
|
40
|
+
|
|
41
|
+
do {
|
|
42
|
+
guard let sessionIntent: PrimerSessionIntent = PrimerSessionIntent(rawValue: primerSessionIntent) else {
|
|
43
|
+
let err = RNTNativeError(
|
|
44
|
+
errorId: "native-ios",
|
|
45
|
+
errorDescription: "Invalid value for 'intent'.",
|
|
46
|
+
recoverySuggestion: "'intent' can be 'CHECKOUT' or 'VAULT'.")
|
|
47
|
+
throw err
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
klarnaComponent = try klarnaManager.provideKlarnaComponent(with: sessionIntent)
|
|
51
|
+
klarnaComponent?.stepDelegate = self
|
|
52
|
+
klarnaComponent?.errorDelegate = self
|
|
53
|
+
klarnaComponent?.validationDelegate = self
|
|
54
|
+
|
|
55
|
+
resolver(nil)
|
|
56
|
+
} catch {
|
|
57
|
+
rejecter(error.rnError["errorId"]!, error.rnError["description"], error)
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
@objc
|
|
62
|
+
public func cleanUp(
|
|
63
|
+
_ resolver: RCTPromiseResolveBlock,
|
|
64
|
+
rejecter: RCTPromiseRejectBlock
|
|
65
|
+
) {
|
|
66
|
+
klarnaComponent = nil
|
|
67
|
+
resolver(nil)
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
@objc
|
|
71
|
+
public func start(
|
|
72
|
+
_ resolver: RCTPromiseResolveBlock,
|
|
73
|
+
rejecter: RCTPromiseRejectBlock
|
|
74
|
+
) {
|
|
75
|
+
print("Start Klarna process")
|
|
76
|
+
|
|
77
|
+
guard let klarnaComponent = self.klarnaComponent else {
|
|
78
|
+
rejecter("UNINITIALIZED_ERROR", "Klarna component is uninitialized", nil)
|
|
79
|
+
return
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
klarnaComponent.start()
|
|
83
|
+
resolver(nil)
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
@objc
|
|
87
|
+
public func submit(
|
|
88
|
+
_ resolver: RCTPromiseResolveBlock,
|
|
89
|
+
rejecter: RCTPromiseRejectBlock
|
|
90
|
+
) {
|
|
91
|
+
guard let klarnaComponent = self.klarnaComponent else {
|
|
92
|
+
rejecter("UNINITIALIZED_ERROR", "Klarna component is uninitialized", nil)
|
|
93
|
+
return
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
klarnaComponent.submit()
|
|
97
|
+
resolver(nil)
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
@objc
|
|
101
|
+
public func onSetPaymentOptions(
|
|
102
|
+
_ paymentOptions: NSDictionary,
|
|
103
|
+
resolver: RCTPromiseResolveBlock,
|
|
104
|
+
rejecter: RCTPromiseRejectBlock
|
|
105
|
+
) {
|
|
106
|
+
guard let paymentCategoryDict = paymentOptions["paymentCategory"] as? NSDictionary else {
|
|
107
|
+
rejecter("error", "paymentCategory is missing or not a dictionary", nil)
|
|
108
|
+
return
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
guard let klarnaPaymentCategory = getDecodedKlarnaPaymentCategory(paymentCategoryDict) else {
|
|
112
|
+
rejecter("error", "Failed to parse paymentCategory", nil)
|
|
113
|
+
return
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
guard let klarnaComponent = self.klarnaComponent else {
|
|
117
|
+
rejecter("UNINITIALIZED_ERROR", "Klarna component is uninitialized", nil)
|
|
118
|
+
return
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
DispatchQueue.main.async {
|
|
122
|
+
klarnaComponent.updateCollectedData(collectableData: KlarnaCollectableData.paymentCategory(klarnaPaymentCategory, clientToken: self.clientToken))
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
resolver(nil)
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
@objc
|
|
129
|
+
public func onFinalizePayment(
|
|
130
|
+
_ resolver: RCTPromiseResolveBlock,
|
|
131
|
+
rejecter: RCTPromiseRejectBlock
|
|
132
|
+
) {
|
|
133
|
+
klarnaComponent?.updateCollectedData(collectableData: KlarnaCollectableData.finalizePayment)
|
|
134
|
+
resolver(nil)
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
private func getDecodedKlarnaPaymentCategory(_ dictionary: NSDictionary) -> KlarnaPaymentCategory? {
|
|
138
|
+
let transformedDictionary = transformKey(for: dictionary)
|
|
139
|
+
guard let jsonData = try? JSONSerialization.data(withJSONObject: transformedDictionary, options: []) else { return nil }
|
|
140
|
+
let paymentCategory = try? JSONDecoder().decode(KlarnaPaymentCategory.self, from: jsonData)
|
|
141
|
+
return paymentCategory
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
private func transformKey(for dictionary: NSDictionary) -> [String: Any] {
|
|
145
|
+
let transformedDictionary = dictionary.reduce(into: [String: Any]()) { (result, element) in
|
|
146
|
+
// Check if the current key is "identifier" and change it to "id", otherwise keep the original key
|
|
147
|
+
let key: String = (element.key as? String) == "identifier" ? "id" : (element.key as? String) ?? ""
|
|
148
|
+
result[key] = element.value
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
return transformedDictionary
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
extension RNTPrimerHeadlessUniversalCheckoutKlarnaComponent: PrimerHeadlessSteppableDelegate {
|
|
156
|
+
func didReceiveStep(step: PrimerSDK.PrimerHeadlessStep) {
|
|
157
|
+
guard let step = step as? KlarnaStep else { return }
|
|
158
|
+
|
|
159
|
+
switch step {
|
|
160
|
+
case .paymentSessionCreated(let clientToken , let categories):
|
|
161
|
+
self.clientToken = clientToken
|
|
162
|
+
let rnSessionCreated = try? step.toPaymentSessionCreatedRN(categories: categories).toJsonObject()
|
|
163
|
+
|
|
164
|
+
sendEvent(
|
|
165
|
+
withName: PrimerHeadlessUniversalCheckoutComponentEvent.onStep.stringValue,
|
|
166
|
+
body: rnSessionCreated
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
case .paymentSessionAuthorized(_ , let checkoutData):
|
|
170
|
+
let rnSessionAuthorized = try? step.toPaymentSessionAuthorizedRN(isFinalized: true).toJsonObject()
|
|
171
|
+
|
|
172
|
+
sendEvent(
|
|
173
|
+
withName: PrimerHeadlessUniversalCheckoutComponentEvent.onStep.stringValue,
|
|
174
|
+
body: rnSessionAuthorized
|
|
175
|
+
)
|
|
176
|
+
|
|
177
|
+
DispatchQueue.main.async {
|
|
178
|
+
PrimerHeadlessUniversalCheckout.current.delegate?.primerHeadlessUniversalCheckoutDidCompleteCheckoutWithData(checkoutData)
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
case .paymentSessionFinalizationRequired:
|
|
182
|
+
let rnSessionAuthorized = try? step.toPaymentSessionAuthorizedRN(isFinalized: false).toJsonObject()
|
|
183
|
+
|
|
184
|
+
sendEvent(
|
|
185
|
+
withName: PrimerHeadlessUniversalCheckoutComponentEvent.onStep.stringValue,
|
|
186
|
+
body: rnSessionAuthorized
|
|
187
|
+
)
|
|
188
|
+
|
|
189
|
+
case .paymentSessionFinalized(_ , let checkoutData):
|
|
190
|
+
let rnSessionFinalized = try? step.toPaymentSessionFinalizedRN().toJsonObject()
|
|
191
|
+
|
|
192
|
+
sendEvent(
|
|
193
|
+
withName: PrimerHeadlessUniversalCheckoutComponentEvent.onStep.stringValue,
|
|
194
|
+
body: rnSessionFinalized
|
|
195
|
+
)
|
|
196
|
+
|
|
197
|
+
DispatchQueue.main.async {
|
|
198
|
+
PrimerHeadlessUniversalCheckout.current.delegate?.primerHeadlessUniversalCheckoutDidCompleteCheckoutWithData(checkoutData)
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
case .viewLoaded(let view):
|
|
202
|
+
DispatchQueue.main.async {
|
|
203
|
+
RNTPrimerKlarnaPaymentViewManager.updatePrimerKlarnaPaymentView(view)
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
let rnPaymentViewLoaded = try? step.toPaymentViewLoadedRN().toJsonObject()
|
|
207
|
+
|
|
208
|
+
sendEvent(
|
|
209
|
+
withName: PrimerHeadlessUniversalCheckoutComponentEvent.onStep.stringValue,
|
|
210
|
+
body: rnPaymentViewLoaded
|
|
211
|
+
)
|
|
212
|
+
|
|
213
|
+
default:
|
|
214
|
+
break
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
extension RNTPrimerHeadlessUniversalCheckoutKlarnaComponent: PrimerHeadlessValidatableDelegate {
|
|
222
|
+
func didUpdate(validationStatus: PrimerSDK.PrimerValidationStatus, for data: PrimerSDK.PrimerCollectableData?) {
|
|
223
|
+
guard let data = data as? KlarnaCollectableData else { return }
|
|
224
|
+
|
|
225
|
+
let eventName: String
|
|
226
|
+
switch validationStatus {
|
|
227
|
+
case .valid:
|
|
228
|
+
eventName = PrimerHeadlessUniversalCheckoutComponentEvent.onValid.stringValue
|
|
229
|
+
case .validating:
|
|
230
|
+
eventName = PrimerHeadlessUniversalCheckoutComponentEvent.onValidating.stringValue
|
|
231
|
+
case .invalid(let errors):
|
|
232
|
+
let rnErrors = errors.map { $0.toPrimerValidationErrorRN() }
|
|
233
|
+
let serializedData = try? ["errors": rnErrors].toJsonObject()
|
|
234
|
+
|
|
235
|
+
self.sendEvent(
|
|
236
|
+
withName: PrimerHeadlessUniversalCheckoutComponentEvent.onInvalid.stringValue,
|
|
237
|
+
body: serializedData)
|
|
238
|
+
return
|
|
239
|
+
case .error(let error):
|
|
240
|
+
let rnError = error.toPrimerErrorRN()
|
|
241
|
+
let serializedData = try? ["errors": [rnError]].toJsonObject()
|
|
242
|
+
|
|
243
|
+
self.sendEvent(
|
|
244
|
+
withName: PrimerHeadlessUniversalCheckoutComponentEvent.onValidationError.stringValue,
|
|
245
|
+
body: serializedData)
|
|
246
|
+
return
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
var serializedData: Any?
|
|
250
|
+
switch data {
|
|
251
|
+
case .paymentCategory(let category, _):
|
|
252
|
+
let rnPaymentCategory = data.toKlarnaPaymentOptionsRN(category: category)
|
|
253
|
+
serializedData = try? ["data": rnPaymentCategory].toJsonObject()
|
|
254
|
+
case .finalizePayment:
|
|
255
|
+
let rnFinalizePayment = data.toFinalizePaymentRN()
|
|
256
|
+
serializedData = try? ["data": rnFinalizePayment].toJsonObject()
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
sendEvent(withName: eventName, body: serializedData)
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
extension RNTPrimerHeadlessUniversalCheckoutKlarnaComponent: PrimerHeadlessErrorableDelegate {
|
|
264
|
+
func didReceiveError(error: PrimerSDK.PrimerError) {
|
|
265
|
+
let rnError = error.toPrimerErrorRN()
|
|
266
|
+
let serializedData = try? ["errors": [rnError]].toJsonObject()
|
|
267
|
+
|
|
268
|
+
self.sendEvent(
|
|
269
|
+
withName: PrimerHeadlessUniversalCheckoutComponentEvent.onError.stringValue,
|
|
270
|
+
body: serializedData)
|
|
271
|
+
}
|
|
272
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RNTPrimerHeadlessUniversalCheckoutBanksComponent.m
|
|
3
|
+
// primer-io-react-native
|
|
4
|
+
//
|
|
5
|
+
// Created by Faisal Iqbal on 15.12.2023.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
#import <React/RCTBridgeModule.h>
|
|
9
|
+
#import <React/RCTEventEmitter.h>
|
|
10
|
+
|
|
11
|
+
@interface RCT_EXTERN_MODULE(RNTPrimerHeadlessUniversalCheckoutBanksComponent, RCTEventEmitter)
|
|
12
|
+
|
|
13
|
+
RCT_EXTERN_METHOD(configure:(NSString *)paymentMethodTypeStr resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
|
|
14
|
+
|
|
15
|
+
RCT_EXTERN_METHOD(onBankFilterChange:(NSString *)filterText resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
|
|
16
|
+
|
|
17
|
+
RCT_EXTERN_METHOD(onBankSelected:(NSString *)bankId resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
|
|
18
|
+
|
|
19
|
+
RCT_EXTERN_METHOD(start:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
|
|
20
|
+
|
|
21
|
+
RCT_EXTERN_METHOD(submit:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
|
|
22
|
+
|
|
23
|
+
RCT_EXTERN_METHOD(cleanUp:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
|
|
24
|
+
|
|
25
|
+
@end
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RNTRedirectManager.swift
|
|
3
|
+
// example_0_70_6
|
|
4
|
+
//
|
|
5
|
+
// Created by Faisal Iqbal on 15.12.2023.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
import PrimerSDK
|
|
10
|
+
|
|
11
|
+
@objc(RNTPrimerHeadlessUniversalCheckoutBanksComponent)
|
|
12
|
+
class RNTPrimerHeadlessUniversalCheckoutBanksComponent: RCTEventEmitter {
|
|
13
|
+
|
|
14
|
+
private var redirectManager: PrimerHeadlessUniversalCheckout.ComponentWithRedirectManager!
|
|
15
|
+
var banksComponent: (any BanksComponent)?
|
|
16
|
+
|
|
17
|
+
override class func requiresMainQueueSetup() -> Bool {
|
|
18
|
+
return true
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
override init() {
|
|
22
|
+
super.init()
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
override func supportedEvents() -> [String] {
|
|
26
|
+
return PrimerHeadlessUniversalCheckoutComponentEvent.allCases.compactMap({ $0.stringValue })
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// MARK: - API
|
|
30
|
+
|
|
31
|
+
@objc
|
|
32
|
+
public func configure(
|
|
33
|
+
_ paymentMethodTypeStr: String,
|
|
34
|
+
resolver: @escaping RCTPromiseResolveBlock,
|
|
35
|
+
rejecter: @escaping RCTPromiseRejectBlock
|
|
36
|
+
) {
|
|
37
|
+
print("configure")
|
|
38
|
+
do {
|
|
39
|
+
redirectManager = PrimerHeadlessUniversalCheckout.ComponentWithRedirectManager()
|
|
40
|
+
|
|
41
|
+
guard let banksComponent: any BanksComponent = try? redirectManager.provide(paymentMethodType: paymentMethodTypeStr) else {
|
|
42
|
+
let err = RNTNativeError(
|
|
43
|
+
errorId: "native-ios",
|
|
44
|
+
errorDescription: "Failed to find asset of \(paymentMethodTypeStr) for this session",
|
|
45
|
+
recoverySuggestion: nil)
|
|
46
|
+
throw err
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
self.banksComponent = banksComponent
|
|
50
|
+
|
|
51
|
+
banksComponent.stepDelegate = self
|
|
52
|
+
banksComponent.validationDelegate = self
|
|
53
|
+
banksComponent.errorDelegate = self
|
|
54
|
+
|
|
55
|
+
resolver(nil)
|
|
56
|
+
|
|
57
|
+
} catch {
|
|
58
|
+
rejecter(error.rnError["errorId"]!, error.rnError["description"], error)
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
@objc
|
|
63
|
+
public func cleanUp(
|
|
64
|
+
_ resolver: RCTPromiseResolveBlock,
|
|
65
|
+
rejecter: RCTPromiseRejectBlock
|
|
66
|
+
) {
|
|
67
|
+
self.banksComponent = nil
|
|
68
|
+
resolver(nil)
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
@objc
|
|
72
|
+
public func start(
|
|
73
|
+
_ resolver: RCTPromiseResolveBlock,
|
|
74
|
+
rejecter: RCTPromiseRejectBlock
|
|
75
|
+
) {
|
|
76
|
+
banksComponent?.start()
|
|
77
|
+
resolver(nil)
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
@objc
|
|
81
|
+
public func submit(
|
|
82
|
+
_ resolver: RCTPromiseResolveBlock,
|
|
83
|
+
rejecter: RCTPromiseRejectBlock
|
|
84
|
+
) {
|
|
85
|
+
banksComponent?.submit()
|
|
86
|
+
resolver(nil)
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
@objc
|
|
90
|
+
public func onBankFilterChange(
|
|
91
|
+
_ filterText: String,
|
|
92
|
+
resolver: RCTPromiseResolveBlock,
|
|
93
|
+
rejecter: RCTPromiseRejectBlock
|
|
94
|
+
) {
|
|
95
|
+
banksComponent?.updateCollectedData(collectableData: BanksCollectableData.bankFilterText(text: filterText))
|
|
96
|
+
resolver(nil)
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
@objc
|
|
100
|
+
public func onBankSelected(
|
|
101
|
+
_ bankId: String,
|
|
102
|
+
resolver: RCTPromiseResolveBlock,
|
|
103
|
+
rejecter: RCTPromiseRejectBlock
|
|
104
|
+
) {
|
|
105
|
+
banksComponent?.updateCollectedData(collectableData: BanksCollectableData.bankId(bankId: bankId))
|
|
106
|
+
resolver(nil)
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
extension RNTPrimerHeadlessUniversalCheckoutBanksComponent: PrimerHeadlessSteppableDelegate {
|
|
111
|
+
func didReceiveStep(step: PrimerSDK.PrimerHeadlessStep) {
|
|
112
|
+
guard let step = step as? BanksStep else { return }
|
|
113
|
+
switch step {
|
|
114
|
+
case .loading: // Handle bank list loading being in progress (e.g. show loading indicator)
|
|
115
|
+
let rnLoading = try? step.toLoadingRN().toJsonObject()
|
|
116
|
+
|
|
117
|
+
sendEvent(
|
|
118
|
+
withName: PrimerHeadlessUniversalCheckoutComponentEvent.onStep.stringValue,
|
|
119
|
+
body: rnLoading
|
|
120
|
+
)
|
|
121
|
+
case .banksRetrieved(banks: let banks): // Display list of banks
|
|
122
|
+
let rnBanks = try? step.toBanksRetrievedRN(banks: banks).toJsonObject()
|
|
123
|
+
|
|
124
|
+
sendEvent(
|
|
125
|
+
withName: PrimerHeadlessUniversalCheckoutComponentEvent.onStep.stringValue,
|
|
126
|
+
body: rnBanks)
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
extension RNTPrimerHeadlessUniversalCheckoutBanksComponent: PrimerHeadlessValidatableDelegate {
|
|
132
|
+
func didUpdate(validationStatus: PrimerSDK.PrimerValidationStatus, for data: PrimerSDK.PrimerCollectableData?) {
|
|
133
|
+
guard let data = data as? BanksCollectableData else { return }
|
|
134
|
+
|
|
135
|
+
let eventName: String
|
|
136
|
+
switch validationStatus {
|
|
137
|
+
case .valid:
|
|
138
|
+
eventName = PrimerHeadlessUniversalCheckoutComponentEvent.onValid.stringValue
|
|
139
|
+
case .validating:
|
|
140
|
+
eventName = PrimerHeadlessUniversalCheckoutComponentEvent.onValidating.stringValue
|
|
141
|
+
case .invalid(let errors):
|
|
142
|
+
let rnErrors = errors.map { $0.toPrimerValidationErrorRN() }
|
|
143
|
+
let serializedData = try? ["errors": rnErrors].toJsonObject()
|
|
144
|
+
|
|
145
|
+
self.sendEvent(
|
|
146
|
+
withName: PrimerHeadlessUniversalCheckoutComponentEvent.onInvalid.stringValue,
|
|
147
|
+
body: serializedData)
|
|
148
|
+
return
|
|
149
|
+
case .error(let error):
|
|
150
|
+
let rnError = error.toPrimerErrorRN()
|
|
151
|
+
let serializedData = try? ["errors": [rnError]].toJsonObject()
|
|
152
|
+
|
|
153
|
+
self.sendEvent(
|
|
154
|
+
withName: PrimerHeadlessUniversalCheckoutComponentEvent.onValidationError.stringValue,
|
|
155
|
+
body: serializedData)
|
|
156
|
+
return
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
var serializedData: Any?
|
|
160
|
+
switch data {
|
|
161
|
+
case .bankId(let bankId):
|
|
162
|
+
let rnBankId = data.toBankIdRN(bankId: bankId)
|
|
163
|
+
serializedData = try? ["data": rnBankId].toJsonObject()
|
|
164
|
+
case .bankFilterText(let text):
|
|
165
|
+
let rnText = data.toFilterRN(text: text)
|
|
166
|
+
serializedData = try? ["data": rnText].toJsonObject()
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
sendEvent(withName: eventName, body: serializedData)
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
extension RNTPrimerHeadlessUniversalCheckoutBanksComponent: PrimerHeadlessErrorableDelegate {
|
|
174
|
+
func didReceiveError(error: PrimerSDK.PrimerError) {
|
|
175
|
+
let rnError = error.toPrimerErrorRN()
|
|
176
|
+
let serializedData = try? ["errors": [rnError]].toJsonObject()
|
|
177
|
+
|
|
178
|
+
self.sendEvent(
|
|
179
|
+
withName: PrimerHeadlessUniversalCheckoutComponentEvent.onError.stringValue,
|
|
180
|
+
body: serializedData)
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
@@ -450,7 +450,9 @@ extension RNTPrimerHeadlessUniversalCheckout: PrimerHeadlessUniversalCheckoutDel
|
|
|
450
450
|
}
|
|
451
451
|
|
|
452
452
|
do {
|
|
453
|
-
let checkoutPaymentmethodJson = try data
|
|
453
|
+
let checkoutPaymentmethodJson = try data
|
|
454
|
+
.toPrimerCheckoutPaymentMethodDataRN()
|
|
455
|
+
.toJsonObject()
|
|
454
456
|
self.sendEvent(
|
|
455
457
|
withName: rnCallbackName,
|
|
456
458
|
body: checkoutPaymentmethodJson)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//
|
|
2
|
+
// PrimerCheckoutPaymentMethodData+RN.swift
|
|
3
|
+
// primer-io-react-native
|
|
4
|
+
//
|
|
5
|
+
// Created by Niall Quinn on 19/03/24.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
import PrimerSDK
|
|
10
|
+
|
|
11
|
+
extension PrimerCheckoutPaymentMethodData {
|
|
12
|
+
func toPrimerCheckoutPaymentMethodDataRN() -> PrimerCheckoutPaymentMethodDataRN {
|
|
13
|
+
PrimerCheckoutPaymentMethodDataRN(paymentMethodType: self.paymentMethodType,
|
|
14
|
+
paymentMethod: self.paymentMethodType.type)
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
struct PrimerCheckoutPaymentMethodDataRN: Codable {
|
|
19
|
+
let paymentMethodType: PrimerCheckoutPaymentMethodType
|
|
20
|
+
let paymentMethod: String
|
|
21
|
+
}
|
|
@@ -348,6 +348,7 @@ extension RNTPrimer: PrimerDelegate {
|
|
|
348
348
|
|
|
349
349
|
|
|
350
350
|
func primerWillCreatePaymentWithData(_ data: PrimerCheckoutPaymentMethodData, decisionHandler: @escaping (PrimerPaymentCreationDecision) -> Void) {
|
|
351
|
+
|
|
351
352
|
if self.implementedRNCallbacks?.isOnBeforePaymentCreateImplemented == true {
|
|
352
353
|
self.primerWillCreatePaymentWithDataDecisionHandler = { errorMessage in
|
|
353
354
|
DispatchQueue.main.async {
|
|
@@ -361,8 +362,9 @@ extension RNTPrimer: PrimerDelegate {
|
|
|
361
362
|
|
|
362
363
|
DispatchQueue.main.async {
|
|
363
364
|
do {
|
|
364
|
-
let
|
|
365
|
-
|
|
365
|
+
let checkoutPaymentmethodJson = try data
|
|
366
|
+
.toPrimerCheckoutPaymentMethodDataRN()
|
|
367
|
+
.toJsonObject()
|
|
366
368
|
self.sendEvent(withName: PrimerEvents.onBeforePaymentCreate.stringValue, body: checkoutPaymentmethodJson)
|
|
367
369
|
} catch {
|
|
368
370
|
self.handleRNBridgeError(error, checkoutData: nil, stopOnDebug: true)
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// swiftlint:disable:next identifier_name
|
|
2
|
-
public let PrimerReactNativeSDKVersion = "2.
|
|
2
|
+
public let PrimerReactNativeSDKVersion = "2.22.0"
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.PrimerKlarnaPaymentView = void 0;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
const PrimerKlarnaPaymentView = exports.PrimerKlarnaPaymentView = (0, _reactNative.requireNativeComponent)('PrimerKlarnaPaymentView');
|
|
9
|
+
//# sourceMappingURL=PrimerKlarnaPaymentView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","PrimerKlarnaPaymentView","exports","requireNativeComponent"],"sourceRoot":"../../../../src","sources":["HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEO,MAAMC,uBAAuB,GAAAC,OAAA,CAAAD,uBAAA,GAAG,IAAAE,mCAAsB,EACzD,yBACJ,CAAC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.PrimerHeadlessUniversalCheckoutComponentWithRedirectManager = void 0;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
var _EventType = require("./Utils/EventType");
|
|
9
|
+
const {
|
|
10
|
+
RNTPrimerHeadlessUniversalCheckoutBanksComponent
|
|
11
|
+
} = _reactNative.NativeModules;
|
|
12
|
+
const eventEmitter = new _reactNative.NativeEventEmitter(RNTPrimerHeadlessUniversalCheckoutBanksComponent);
|
|
13
|
+
class PrimerHeadlessUniversalCheckoutComponentWithRedirectManager {
|
|
14
|
+
///////////////////////////////////////////
|
|
15
|
+
// Init
|
|
16
|
+
///////////////////////////////////////////
|
|
17
|
+
constructor() {}
|
|
18
|
+
|
|
19
|
+
///////////////////////////////////////////
|
|
20
|
+
// API
|
|
21
|
+
///////////////////////////////////////////
|
|
22
|
+
|
|
23
|
+
async provide(props) {
|
|
24
|
+
await this.configureListeners(props);
|
|
25
|
+
if (props.paymentMethodType == "ADYEN_IDEAL") {
|
|
26
|
+
const banksComponent = {
|
|
27
|
+
start: async () => {
|
|
28
|
+
RNTPrimerHeadlessUniversalCheckoutBanksComponent.start();
|
|
29
|
+
},
|
|
30
|
+
submit: async () => {
|
|
31
|
+
RNTPrimerHeadlessUniversalCheckoutBanksComponent.submit();
|
|
32
|
+
},
|
|
33
|
+
onBankFilterChange: async filter => {
|
|
34
|
+
RNTPrimerHeadlessUniversalCheckoutBanksComponent.onBankFilterChange(filter);
|
|
35
|
+
},
|
|
36
|
+
onBankSelected: async bankId => {
|
|
37
|
+
RNTPrimerHeadlessUniversalCheckoutBanksComponent.onBankSelected(bankId);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
await RNTPrimerHeadlessUniversalCheckoutBanksComponent.configure(props.paymentMethodType);
|
|
41
|
+
return banksComponent;
|
|
42
|
+
} else {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
async configureListeners(props) {
|
|
47
|
+
if (props !== null && props !== void 0 && props.onStep) {
|
|
48
|
+
this.addListener('onStep', data => {
|
|
49
|
+
var _props$onStep;
|
|
50
|
+
(_props$onStep = props.onStep) === null || _props$onStep === void 0 || _props$onStep.call(props, data);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
if (props !== null && props !== void 0 && props.onInvalid) {
|
|
54
|
+
this.addListener('onInvalid', data => {
|
|
55
|
+
var _props$onInvalid;
|
|
56
|
+
(_props$onInvalid = props.onInvalid) === null || _props$onInvalid === void 0 || _props$onInvalid.call(props, data);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
if (props !== null && props !== void 0 && props.onError) {
|
|
60
|
+
this.addListener('onError', data => {
|
|
61
|
+
var _props$onError;
|
|
62
|
+
(_props$onError = props.onError) === null || _props$onError === void 0 || _props$onError.call(props, data);
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
if (props !== null && props !== void 0 && props.onValid) {
|
|
66
|
+
this.addListener('onValid', data => {
|
|
67
|
+
var _props$onValid;
|
|
68
|
+
(_props$onValid = props.onValid) === null || _props$onValid === void 0 || _props$onValid.call(props, data);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
if (props !== null && props !== void 0 && props.onValidating) {
|
|
72
|
+
this.addListener('onValidating', data => {
|
|
73
|
+
var _props$onValidating;
|
|
74
|
+
(_props$onValidating = props.onValidating) === null || _props$onValidating === void 0 || _props$onValidating.call(props, data);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
if (props !== null && props !== void 0 && props.onValidationError) {
|
|
78
|
+
this.addListener('onValidationError', data => {
|
|
79
|
+
var _props$onValidationEr;
|
|
80
|
+
(_props$onValidationEr = props.onValidationError) === null || _props$onValidationEr === void 0 || _props$onValidationEr.call(props, data);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
///////////////////////////////////////////
|
|
86
|
+
// HELPERS
|
|
87
|
+
///////////////////////////////////////////
|
|
88
|
+
|
|
89
|
+
async addListener(eventType, listener) {
|
|
90
|
+
return eventEmitter.addListener(eventType, listener);
|
|
91
|
+
}
|
|
92
|
+
removeListener(subscription) {
|
|
93
|
+
return subscription.remove();
|
|
94
|
+
}
|
|
95
|
+
removeAllListenersForEvent(eventType) {
|
|
96
|
+
eventEmitter.removeAllListeners(eventType);
|
|
97
|
+
}
|
|
98
|
+
removeAllListeners() {
|
|
99
|
+
_EventType.eventTypes.forEach(eventType => this.removeAllListenersForEvent(eventType));
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
exports.PrimerHeadlessUniversalCheckoutComponentWithRedirectManager = PrimerHeadlessUniversalCheckoutComponentWithRedirectManager;
|
|
103
|
+
//# sourceMappingURL=ComponentWithRedirectManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_EventType","RNTPrimerHeadlessUniversalCheckoutBanksComponent","NativeModules","eventEmitter","NativeEventEmitter","PrimerHeadlessUniversalCheckoutComponentWithRedirectManager","constructor","provide","props","configureListeners","paymentMethodType","banksComponent","start","submit","onBankFilterChange","filter","onBankSelected","bankId","configure","onStep","addListener","data","_props$onStep","call","onInvalid","_props$onInvalid","onError","_props$onError","onValid","_props$onValid","onValidating","_props$onValidating","onValidationError","_props$onValidationEr","eventType","listener","removeListener","subscription","remove","removeAllListenersForEvent","removeAllListeners","eventTypes","forEach","exports"],"sourceRoot":"../../../../../src","sources":["HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.ts"],"mappings":"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"}
|