@primer-io/react-native 2.21.1 → 2.23.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.
Files changed (183) hide show
  1. package/android/build.gradle +23 -6
  2. package/android/config/coverage-scripts/kover.gradle +26 -0
  3. package/android/gradle/wrapper/gradle-wrapper.properties +1 -2
  4. package/android/src/main/java/com/primerioreactnative/PrimerRN.kt +2 -2
  5. package/android/src/main/java/com/primerioreactnative/PrimerRNEventListener.kt +10 -8
  6. package/android/src/main/java/com/primerioreactnative/PrimerRNHeadlessUniversalCheckout.kt +2 -2
  7. package/android/src/main/java/com/primerioreactnative/PrimerRNHeadlessUniversalCheckoutListener.kt +12 -10
  8. package/android/src/main/java/com/primerioreactnative/PrimerRNViewModelStoreOwner.kt +9 -0
  9. package/android/src/main/java/com/primerioreactnative/ReactNativePackage.kt +9 -1
  10. package/android/src/main/java/com/primerioreactnative/components/events/PrimerHeadlessUniversalCheckoutComponentEvent.kt +10 -0
  11. package/android/src/main/java/com/primerioreactnative/components/manager/asset/PrimerRNHeadlessUniversalCheckoutAssetManager.kt +8 -13
  12. package/android/src/main/java/com/primerioreactnative/components/manager/banks/PrimerRNHeadlessUniversalCheckoutBanksComponent.kt +284 -0
  13. package/android/src/main/java/com/primerioreactnative/components/manager/klarna/PrimerKlarnaPaymentViewManager.kt +103 -0
  14. package/android/src/main/java/com/primerioreactnative/components/manager/klarna/PrimerRNHeadlessUniversalCheckoutKlarnaComponent.kt +334 -0
  15. package/android/src/main/java/com/primerioreactnative/components/manager/nativeUi/PrimerRNHeadlessUniversalCheckoutNativeUiManager.kt +10 -8
  16. package/android/src/main/java/com/primerioreactnative/components/manager/raw/PrimerRNHeadlessUniversalCheckoutRawManager.kt +2 -2
  17. package/android/src/main/java/com/primerioreactnative/components/manager/vault/PrimerRNHeadlessUniversalCheckoutVaultManager.kt +5 -9
  18. package/android/src/main/java/com/primerioreactnative/datamodels/NamedComponentStepRN.kt +7 -0
  19. package/android/src/main/java/com/primerioreactnative/datamodels/NamedComponentValidatableDataRN.kt +7 -0
  20. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerErrorRN.kt +8 -0
  21. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerIssuingBankRN.kt +11 -0
  22. package/android/src/main/java/com/primerioreactnative/datamodels/banks/BanksCollectableDataRN.kt +17 -0
  23. package/android/src/main/java/com/primerioreactnative/datamodels/banks/BanksStepRN.kt +20 -0
  24. package/android/src/main/java/com/primerioreactnative/datamodels/extensions/banks/BanksCollectableData.kt +8 -0
  25. package/android/src/main/java/com/primerioreactnative/datamodels/extensions/banks/BanksStep.kt +11 -0
  26. package/android/src/main/java/com/primerioreactnative/datamodels/klarna/KlarnaPaymentCategoryRN.kt +11 -0
  27. package/android/src/main/java/com/primerioreactnative/datamodels/klarna/KlarnaPaymentCollectableDataRN.kt +21 -0
  28. package/android/src/main/java/com/primerioreactnative/datamodels/klarna/KlarnaPaymentStepRN.kt +31 -0
  29. package/android/src/main/java/com/primerioreactnative/extensions/PrimerError.kt +13 -0
  30. package/android/src/main/java/com/primerioreactnative/extensions/PrimerIssuingBank.kt +7 -0
  31. package/android/src/main/java/com/primerioreactnative/extensions/klarna/KlarnaPaymentCategory.kt +12 -0
  32. package/android/src/main/java/com/primerioreactnative/extensions/klarna/KlarnaPaymentCategoryRN.kt +12 -0
  33. package/android/src/main/java/com/primerioreactnative/extensions/klarna/KlarnaPaymentCollectableData.kt +14 -0
  34. package/android/src/main/java/com/primerioreactnative/extensions/klarna/KlarnaPaymentStep.kt +21 -0
  35. package/android/src/main/java/com/primerioreactnative/utils/ErrorHelper.kt +3 -2
  36. package/android/src/main/java/com/primerioreactnative/utils/JsonConverter.kt +8 -1
  37. package/android/src/test/java/com/primerioreactnative/utils/ErrorHelperTest.kt +24 -0
  38. package/ios/ReactNative-Bridging-Header.h +1 -0
  39. package/ios/Sources/DataModels/Banks Component/RNTBanksCollectableData.swift +42 -0
  40. package/ios/Sources/DataModels/Banks Component/RNTBanksStep.swift +36 -0
  41. package/ios/Sources/DataModels/Klarna Component/PrimerHeadlessUniversalCheckoutComponentEvent.swift +36 -0
  42. package/ios/Sources/DataModels/Klarna Component/RNTKlarnaCollectableData.swift +36 -0
  43. package/ios/Sources/DataModels/Klarna Component/RNTKlarnaPaymentCategory.swift +33 -0
  44. package/ios/Sources/DataModels/Klarna Component/RNTKlarnaStep.swift +61 -0
  45. package/ios/Sources/DataModels/Klarna Component/RNTPrimerError.swift +67 -0
  46. package/ios/Sources/Headless Universal Checkout/Managers/Klarna/KlarnaPaymentView Manager/RNTPrimerKlarnaPaymentViewManager.h +14 -0
  47. package/ios/Sources/Headless Universal Checkout/Managers/Klarna/KlarnaPaymentView Manager/RNTPrimerKlarnaPaymentViewManager.m +25 -0
  48. package/ios/Sources/Headless Universal Checkout/Managers/Klarna/PrimerRNHeadlessUniversalCheckoutKlarnaComponent.m +27 -0
  49. package/ios/Sources/Headless Universal Checkout/Managers/Klarna/PrimerRNHeadlessUniversalCheckoutKlarnaComponent.swift +283 -0
  50. package/ios/Sources/Headless Universal Checkout/Managers/RNTRedirectManager.m +25 -0
  51. package/ios/Sources/Headless Universal Checkout/Managers/RNTRedirectManager.swift +182 -0
  52. package/ios/Sources/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.swift +5 -5
  53. package/ios/Sources/RNTPrimer.swift +12 -8
  54. package/ios/Sources/version.swift +1 -1
  55. package/lib/commonjs/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.js +9 -0
  56. package/lib/commonjs/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.js.map +1 -0
  57. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.js +103 -0
  58. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.js.map +1 -0
  59. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.js +99 -0
  60. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.js.map +1 -0
  61. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js +4 -4
  62. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js.map +1 -1
  63. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.js +8 -0
  64. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.js.map +1 -0
  65. package/lib/commonjs/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js +3 -2
  66. package/lib/commonjs/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js.map +1 -1
  67. package/lib/commonjs/Primer.js +2 -1
  68. package/lib/commonjs/Primer.js.map +1 -1
  69. package/lib/commonjs/index.js +186 -0
  70. package/lib/commonjs/index.js.map +1 -1
  71. package/lib/commonjs/models/IssuingBank.js +2 -0
  72. package/lib/commonjs/models/IssuingBank.js.map +1 -0
  73. package/lib/commonjs/models/NamedComponentStep.js +2 -0
  74. package/lib/commonjs/models/NamedComponentStep.js.map +1 -0
  75. package/lib/commonjs/models/NamedComponentValidatableData.js +2 -0
  76. package/lib/commonjs/models/NamedComponentValidatableData.js.map +1 -0
  77. package/lib/commonjs/models/PrimerComponentDataValidation.js +6 -0
  78. package/lib/commonjs/models/PrimerComponentDataValidation.js.map +1 -0
  79. package/lib/commonjs/models/PrimerError.js +2 -1
  80. package/lib/commonjs/models/PrimerError.js.map +1 -1
  81. package/lib/commonjs/models/banks/BanksCollectableData.js +6 -0
  82. package/lib/commonjs/models/banks/BanksCollectableData.js.map +1 -0
  83. package/lib/commonjs/models/banks/BanksSteps.js +6 -0
  84. package/lib/commonjs/models/banks/BanksSteps.js.map +1 -0
  85. package/lib/commonjs/models/klarna/KlarnaPaymentCategory.js +2 -0
  86. package/lib/commonjs/models/klarna/KlarnaPaymentCategory.js.map +1 -0
  87. package/lib/commonjs/models/klarna/KlarnaPaymentCollectableData.js +6 -0
  88. package/lib/commonjs/models/klarna/KlarnaPaymentCollectableData.js.map +1 -0
  89. package/lib/commonjs/models/klarna/KlarnaPaymentSteps.js +6 -0
  90. package/lib/commonjs/models/klarna/KlarnaPaymentSteps.js.map +1 -0
  91. package/lib/module/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.js +3 -0
  92. package/lib/module/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.js.map +1 -0
  93. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.js +96 -0
  94. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.js.map +1 -0
  95. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.js +92 -0
  96. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.js.map +1 -0
  97. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js +4 -4
  98. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js.map +1 -1
  99. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.js +2 -0
  100. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.js.map +1 -0
  101. package/lib/module/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js +3 -2
  102. package/lib/module/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js.map +1 -1
  103. package/lib/module/Primer.js +2 -1
  104. package/lib/module/Primer.js.map +1 -1
  105. package/lib/module/index.js +24 -0
  106. package/lib/module/index.js.map +1 -1
  107. package/lib/module/models/IssuingBank.js +2 -0
  108. package/lib/module/models/IssuingBank.js.map +1 -0
  109. package/lib/module/models/NamedComponentStep.js +2 -0
  110. package/lib/module/models/NamedComponentStep.js.map +1 -0
  111. package/lib/module/models/NamedComponentValidatableData.js +2 -0
  112. package/lib/module/models/NamedComponentValidatableData.js.map +1 -0
  113. package/lib/module/models/PrimerComponentDataValidation.js +2 -0
  114. package/lib/module/models/PrimerComponentDataValidation.js.map +1 -0
  115. package/lib/module/models/PrimerError.js +2 -1
  116. package/lib/module/models/PrimerError.js.map +1 -1
  117. package/lib/module/models/banks/BanksCollectableData.js +2 -0
  118. package/lib/module/models/banks/BanksCollectableData.js.map +1 -0
  119. package/lib/module/models/banks/BanksSteps.js +2 -0
  120. package/lib/module/models/banks/BanksSteps.js.map +1 -0
  121. package/lib/module/models/klarna/KlarnaPaymentCategory.js +2 -0
  122. package/lib/module/models/klarna/KlarnaPaymentCategory.js.map +1 -0
  123. package/lib/module/models/klarna/KlarnaPaymentCollectableData.js +2 -0
  124. package/lib/module/models/klarna/KlarnaPaymentCollectableData.js.map +1 -0
  125. package/lib/module/models/klarna/KlarnaPaymentSteps.js +2 -0
  126. package/lib/module/models/klarna/KlarnaPaymentSteps.js.map +1 -0
  127. package/lib/typescript/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.d.ts +2 -0
  128. package/lib/typescript/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.d.ts.map +1 -0
  129. package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.d.ts +54 -0
  130. package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.d.ts.map +1 -0
  131. package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.d.ts +50 -0
  132. package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.d.ts.map +1 -0
  133. package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.d.ts +3 -0
  134. package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.d.ts.map +1 -0
  135. package/lib/typescript/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.d.ts.map +1 -1
  136. package/lib/typescript/Primer.d.ts.map +1 -1
  137. package/lib/typescript/index.d.ts +26 -2
  138. package/lib/typescript/index.d.ts.map +1 -1
  139. package/lib/typescript/models/IssuingBank.d.ts +9 -0
  140. package/lib/typescript/models/IssuingBank.d.ts.map +1 -0
  141. package/lib/typescript/models/NamedComponentStep.d.ts +12 -0
  142. package/lib/typescript/models/NamedComponentStep.d.ts.map +1 -0
  143. package/lib/typescript/models/NamedComponentValidatableData.d.ts +12 -0
  144. package/lib/typescript/models/NamedComponentValidatableData.d.ts.map +1 -0
  145. package/lib/typescript/models/PrimerComponentDataValidation.d.ts +54 -0
  146. package/lib/typescript/models/PrimerComponentDataValidation.d.ts.map +1 -0
  147. package/lib/typescript/models/PrimerError.d.ts +2 -6
  148. package/lib/typescript/models/PrimerError.d.ts.map +1 -1
  149. package/lib/typescript/models/PrimerValidationError.d.ts +3 -3
  150. package/lib/typescript/models/PrimerValidationError.d.ts.map +1 -1
  151. package/lib/typescript/models/banks/BanksCollectableData.d.ts +23 -0
  152. package/lib/typescript/models/banks/BanksCollectableData.d.ts.map +1 -0
  153. package/lib/typescript/models/banks/BanksSteps.d.ts +20 -0
  154. package/lib/typescript/models/banks/BanksSteps.d.ts.map +1 -0
  155. package/lib/typescript/models/klarna/KlarnaPaymentCategory.d.ts +24 -0
  156. package/lib/typescript/models/klarna/KlarnaPaymentCategory.d.ts.map +1 -0
  157. package/lib/typescript/models/klarna/KlarnaPaymentCollectableData.d.ts +24 -0
  158. package/lib/typescript/models/klarna/KlarnaPaymentCollectableData.d.ts.map +1 -0
  159. package/lib/typescript/models/klarna/KlarnaPaymentSteps.d.ts +36 -0
  160. package/lib/typescript/models/klarna/KlarnaPaymentSteps.d.ts.map +1 -0
  161. package/package.json +4 -9
  162. package/primer-io-react-native.podspec +1 -1
  163. package/src/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.tsx +5 -0
  164. package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.ts +161 -0
  165. package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.ts +147 -0
  166. package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.ts +4 -4
  167. package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.ts +10 -0
  168. package/src/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.ts +3 -2
  169. package/src/Primer.ts +2 -1
  170. package/src/index.tsx +62 -62
  171. package/src/models/IssuingBank.ts +8 -0
  172. package/src/models/NamedComponentStep.ts +11 -0
  173. package/src/models/NamedComponentValidatableData.ts +11 -0
  174. package/src/models/PrimerComponentDataValidation.ts +60 -0
  175. package/src/models/PrimerError.ts +8 -14
  176. package/src/models/PrimerValidationError.ts +3 -3
  177. package/src/models/banks/BanksCollectableData.ts +25 -0
  178. package/src/models/banks/BanksSteps.ts +22 -0
  179. package/src/models/klarna/KlarnaPaymentCategory.ts +23 -0
  180. package/src/models/klarna/KlarnaPaymentCollectableData.ts +26 -0
  181. package/src/models/klarna/KlarnaPaymentSteps.ts +36 -0
  182. /package/ios/Sources/Headless Universal Checkout/Managers/{RNTAssetsManager.m → Assets Manager/RNTAssetsManager.m} +0 -0
  183. /package/ios/Sources/Headless Universal Checkout/Managers/{RNTAssetsManager.swift → Assets Manager/RNTAssetsManager.swift} +0 -0
@@ -0,0 +1,283 @@
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
+ #if canImport(PrimerKlarnaSDK)
16
+ private var klarnaManager: PrimerHeadlessUniversalCheckout.KlarnaManager = PrimerHeadlessUniversalCheckout.KlarnaManager()
17
+ #endif
18
+ var klarnaComponent: (any KlarnaComponent)?
19
+ var clientToken: String?
20
+
21
+ override class func requiresMainQueueSetup() -> Bool {
22
+ return true
23
+ }
24
+
25
+ override init() {
26
+ super.init()
27
+ }
28
+
29
+ override func supportedEvents() -> [String] {
30
+ return PrimerHeadlessUniversalCheckoutComponentEvent.allCases.compactMap({ $0.stringValue })
31
+ }
32
+
33
+ // MARK: - API
34
+
35
+ @objc
36
+ public func configure(
37
+ _ primerSessionIntent: String,
38
+ resolver: @escaping RCTPromiseResolveBlock,
39
+ rejecter: @escaping RCTPromiseRejectBlock
40
+ ) {
41
+ print("configure")
42
+
43
+ do {
44
+ guard let sessionIntent: PrimerSessionIntent = PrimerSessionIntent(rawValue: primerSessionIntent) else {
45
+ let err = RNTNativeError(
46
+ errorId: "native-ios",
47
+ errorDescription: "Invalid value for 'intent'.",
48
+ recoverySuggestion: "'intent' can be 'CHECKOUT' or 'VAULT'.")
49
+ throw err
50
+ }
51
+ #if canImport(PrimerKlarnaSDK)
52
+ klarnaComponent = try klarnaManager.provideKlarnaComponent(with: sessionIntent)
53
+ klarnaComponent?.stepDelegate = self
54
+ klarnaComponent?.errorDelegate = self
55
+ klarnaComponent?.validationDelegate = self
56
+ #else
57
+ let err = RNTNativeError(
58
+ errorId: "native-ios",
59
+ errorDescription: "PrimerKlarnaSDK missing",
60
+ recoverySuggestion: "Check if PrimerKlarnaSDK is included in your Podfile")
61
+
62
+ throw err
63
+ #endif
64
+
65
+
66
+ resolver(nil)
67
+ } catch {
68
+ rejecter(error.rnError["errorId"]!, error.rnError["description"], error)
69
+ }
70
+ }
71
+
72
+ @objc
73
+ public func cleanUp(
74
+ _ resolver: RCTPromiseResolveBlock,
75
+ rejecter: RCTPromiseRejectBlock
76
+ ) {
77
+ klarnaComponent = nil
78
+ resolver(nil)
79
+ }
80
+
81
+ @objc
82
+ public func start(
83
+ _ resolver: RCTPromiseResolveBlock,
84
+ rejecter: RCTPromiseRejectBlock
85
+ ) {
86
+ print("Start Klarna process")
87
+
88
+ guard let klarnaComponent = self.klarnaComponent else {
89
+ rejecter("UNINITIALIZED_ERROR", "Klarna component is uninitialized", nil)
90
+ return
91
+ }
92
+
93
+ klarnaComponent.start()
94
+ resolver(nil)
95
+ }
96
+
97
+ @objc
98
+ public func submit(
99
+ _ resolver: RCTPromiseResolveBlock,
100
+ rejecter: RCTPromiseRejectBlock
101
+ ) {
102
+ guard let klarnaComponent = self.klarnaComponent else {
103
+ rejecter("UNINITIALIZED_ERROR", "Klarna component is uninitialized", nil)
104
+ return
105
+ }
106
+
107
+ klarnaComponent.submit()
108
+ resolver(nil)
109
+ }
110
+
111
+ @objc
112
+ public func onSetPaymentOptions(
113
+ _ paymentOptions: NSDictionary,
114
+ resolver: RCTPromiseResolveBlock,
115
+ rejecter: RCTPromiseRejectBlock
116
+ ) {
117
+ guard let paymentCategoryDict = paymentOptions["paymentCategory"] as? NSDictionary else {
118
+ rejecter("error", "paymentCategory is missing or not a dictionary", nil)
119
+ return
120
+ }
121
+
122
+ guard let klarnaPaymentCategory = getDecodedKlarnaPaymentCategory(paymentCategoryDict) else {
123
+ rejecter("error", "Failed to parse paymentCategory", nil)
124
+ return
125
+ }
126
+
127
+ guard let klarnaComponent = self.klarnaComponent else {
128
+ rejecter("UNINITIALIZED_ERROR", "Klarna component is uninitialized", nil)
129
+ return
130
+ }
131
+
132
+ DispatchQueue.main.async {
133
+ klarnaComponent.updateCollectedData(collectableData: KlarnaCollectableData.paymentCategory(klarnaPaymentCategory, clientToken: self.clientToken))
134
+ }
135
+
136
+ resolver(nil)
137
+ }
138
+
139
+ @objc
140
+ public func onFinalizePayment(
141
+ _ resolver: RCTPromiseResolveBlock,
142
+ rejecter: RCTPromiseRejectBlock
143
+ ) {
144
+ klarnaComponent?.updateCollectedData(collectableData: KlarnaCollectableData.finalizePayment)
145
+ resolver(nil)
146
+ }
147
+
148
+ private func getDecodedKlarnaPaymentCategory(_ dictionary: NSDictionary) -> KlarnaPaymentCategory? {
149
+ let transformedDictionary = transformKey(for: dictionary)
150
+ guard let jsonData = try? JSONSerialization.data(withJSONObject: transformedDictionary, options: []) else { return nil }
151
+ let paymentCategory = try? JSONDecoder().decode(KlarnaPaymentCategory.self, from: jsonData)
152
+ return paymentCategory
153
+ }
154
+
155
+ private func transformKey(for dictionary: NSDictionary) -> [String: Any] {
156
+ let transformedDictionary = dictionary.reduce(into: [String: Any]()) { (result, element) in
157
+ // Check if the current key is "identifier" and change it to "id", otherwise keep the original key
158
+ let key: String = (element.key as? String) == "identifier" ? "id" : (element.key as? String) ?? ""
159
+ result[key] = element.value
160
+ }
161
+
162
+ return transformedDictionary
163
+ }
164
+ }
165
+
166
+ extension RNTPrimerHeadlessUniversalCheckoutKlarnaComponent: PrimerHeadlessSteppableDelegate {
167
+ func didReceiveStep(step: PrimerSDK.PrimerHeadlessStep) {
168
+ guard let step = step as? KlarnaStep else { return }
169
+
170
+ switch step {
171
+ case .paymentSessionCreated(let clientToken , let categories):
172
+ self.clientToken = clientToken
173
+ let rnSessionCreated = try? step.toPaymentSessionCreatedRN(categories: categories).toJsonObject()
174
+
175
+ sendEvent(
176
+ withName: PrimerHeadlessUniversalCheckoutComponentEvent.onStep.stringValue,
177
+ body: rnSessionCreated
178
+ )
179
+
180
+ case .paymentSessionAuthorized(_ , let checkoutData):
181
+ let rnSessionAuthorized = try? step.toPaymentSessionAuthorizedRN(isFinalized: true).toJsonObject()
182
+
183
+ sendEvent(
184
+ withName: PrimerHeadlessUniversalCheckoutComponentEvent.onStep.stringValue,
185
+ body: rnSessionAuthorized
186
+ )
187
+
188
+ DispatchQueue.main.async {
189
+ PrimerHeadlessUniversalCheckout.current.delegate?.primerHeadlessUniversalCheckoutDidCompleteCheckoutWithData(checkoutData)
190
+ }
191
+
192
+ case .paymentSessionFinalizationRequired:
193
+ let rnSessionAuthorized = try? step.toPaymentSessionAuthorizedRN(isFinalized: false).toJsonObject()
194
+
195
+ sendEvent(
196
+ withName: PrimerHeadlessUniversalCheckoutComponentEvent.onStep.stringValue,
197
+ body: rnSessionAuthorized
198
+ )
199
+
200
+ case .paymentSessionFinalized(_ , let checkoutData):
201
+ let rnSessionFinalized = try? step.toPaymentSessionFinalizedRN().toJsonObject()
202
+
203
+ sendEvent(
204
+ withName: PrimerHeadlessUniversalCheckoutComponentEvent.onStep.stringValue,
205
+ body: rnSessionFinalized
206
+ )
207
+
208
+ DispatchQueue.main.async {
209
+ PrimerHeadlessUniversalCheckout.current.delegate?.primerHeadlessUniversalCheckoutDidCompleteCheckoutWithData(checkoutData)
210
+ }
211
+
212
+ case .viewLoaded(let view):
213
+ DispatchQueue.main.async {
214
+ RNTPrimerKlarnaPaymentViewManager.updatePrimerKlarnaPaymentView(view)
215
+ }
216
+
217
+ let rnPaymentViewLoaded = try? step.toPaymentViewLoadedRN().toJsonObject()
218
+
219
+ sendEvent(
220
+ withName: PrimerHeadlessUniversalCheckoutComponentEvent.onStep.stringValue,
221
+ body: rnPaymentViewLoaded
222
+ )
223
+
224
+ default:
225
+ break
226
+ }
227
+
228
+
229
+ }
230
+ }
231
+
232
+ extension RNTPrimerHeadlessUniversalCheckoutKlarnaComponent: PrimerHeadlessValidatableDelegate {
233
+ func didUpdate(validationStatus: PrimerSDK.PrimerValidationStatus, for data: PrimerSDK.PrimerCollectableData?) {
234
+ guard let data = data as? KlarnaCollectableData else { return }
235
+
236
+ let eventName: String
237
+ switch validationStatus {
238
+ case .valid:
239
+ eventName = PrimerHeadlessUniversalCheckoutComponentEvent.onValid.stringValue
240
+ case .validating:
241
+ eventName = PrimerHeadlessUniversalCheckoutComponentEvent.onValidating.stringValue
242
+ case .invalid(let errors):
243
+ let rnErrors = errors.map { $0.toPrimerValidationErrorRN() }
244
+ let serializedData = try? ["errors": rnErrors].toJsonObject()
245
+
246
+ self.sendEvent(
247
+ withName: PrimerHeadlessUniversalCheckoutComponentEvent.onInvalid.stringValue,
248
+ body: serializedData)
249
+ return
250
+ case .error(let error):
251
+ let rnError = error.toPrimerErrorRN()
252
+ let serializedData = try? ["errors": [rnError]].toJsonObject()
253
+
254
+ self.sendEvent(
255
+ withName: PrimerHeadlessUniversalCheckoutComponentEvent.onValidationError.stringValue,
256
+ body: serializedData)
257
+ return
258
+ }
259
+
260
+ var serializedData: Any?
261
+ switch data {
262
+ case .paymentCategory(let category, _):
263
+ let rnPaymentCategory = data.toKlarnaPaymentOptionsRN(category: category)
264
+ serializedData = try? ["data": rnPaymentCategory].toJsonObject()
265
+ case .finalizePayment:
266
+ let rnFinalizePayment = data.toFinalizePaymentRN()
267
+ serializedData = try? ["data": rnFinalizePayment].toJsonObject()
268
+ }
269
+
270
+ sendEvent(withName: eventName, body: serializedData)
271
+ }
272
+ }
273
+
274
+ extension RNTPrimerHeadlessUniversalCheckoutKlarnaComponent: PrimerHeadlessErrorableDelegate {
275
+ func didReceiveError(error: PrimerSDK.PrimerError) {
276
+ let rnError = error.toPrimerErrorRN()
277
+ let serializedData = try? ["errors": [rnError]].toJsonObject()
278
+
279
+ self.sendEvent(
280
+ withName: PrimerHeadlessUniversalCheckoutComponentEvent.onError.stringValue,
281
+ body: serializedData)
282
+ }
283
+ }
@@ -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,182 @@
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
+ }
@@ -63,11 +63,11 @@ enum PrimerHeadlessUniversalCheckoutEvents: Int, CaseIterable {
63
63
  @objc(PrimerHeadlessUniversalCheckout)
64
64
  class RNTPrimerHeadlessUniversalCheckout: RCTEventEmitter {
65
65
 
66
- private var settings: PrimerSettings?
67
- private var primerWillCreatePaymentWithDataDecisionHandler: ((_ errorMessage: String?) -> Void)?
68
- private var primerDidTokenizePaymentMethodDecisionHandler: ((_ resumeToken: String?, _ errorMessage: String?) -> Void)?
69
- private var primerDidResumeWithDecisionHandler: ((_ resumeToken: String?, _ errorMessage: String?) -> Void)?
70
- private var implementedRNCallbacks: ImplementedRNCallbacks?
66
+ var settings: PrimerSettings?
67
+ var primerWillCreatePaymentWithDataDecisionHandler: ((_ errorMessage: String?) -> Void)?
68
+ var primerDidTokenizePaymentMethodDecisionHandler: ((_ resumeToken: String?, _ errorMessage: String?) -> Void)?
69
+ var primerDidResumeWithDecisionHandler: ((_ resumeToken: String?, _ errorMessage: String?) -> Void)?
70
+ var implementedRNCallbacks: ImplementedRNCallbacks?
71
71
 
72
72
  override class func requiresMainQueueSetup() -> Bool {
73
73
  return true
@@ -55,11 +55,11 @@ enum PrimerEvents: Int, CaseIterable {
55
55
  @objc(NativePrimer)
56
56
  class RNTPrimer: RCTEventEmitter {
57
57
 
58
- private var primerWillCreatePaymentWithDataDecisionHandler: ((_ errorMessage: String?) -> Void)?
59
- private var primerDidTokenizePaymentMethodDecisionHandler: ((_ resumeToken: String?, _ errorMessage: String?) -> Void)?
60
- private var primerDidResumeWithDecisionHandler: ((_ resumeToken: String?, _ errorMessage: String?) -> Void)?
61
- private var primerDidFailWithErrorDecisionHandler: ((_ errorMessage: String) -> Void)?
62
- private var implementedRNCallbacks: ImplementedRNCallbacks?
58
+ var primerWillCreatePaymentWithDataDecisionHandler: ((_ errorMessage: String?) -> Void)?
59
+ var primerDidTokenizePaymentMethodDecisionHandler: ((_ resumeToken: String?, _ errorMessage: String?) -> Void)?
60
+ var primerDidResumeWithDecisionHandler: ((_ resumeToken: String?, _ errorMessage: String?) -> Void)?
61
+ var primerDidFailWithErrorDecisionHandler: ((_ errorMessage: String) -> Void)?
62
+ var implementedRNCallbacks: ImplementedRNCallbacks?
63
63
 
64
64
  // MARK: - INITIALIZATION & REACT NATIVE SUPPORT
65
65
 
@@ -291,13 +291,17 @@ class RNTPrimer: RCTEventEmitter {
291
291
  var body: [String: Any] = ["error": error.rnError]
292
292
  if let checkoutData = checkoutData,
293
293
  let data = try? JSONEncoder().encode(checkoutData),
294
- let json = try? JSONSerialization.jsonObject(with: data){
294
+ let json = try? JSONSerialization.jsonObject(with: data) {
295
295
  body["checkoutData"] = json
296
296
  }
297
- print(body)
298
- self.sendEvent(withName: PrimerEvents.onError.stringValue, body: body)
297
+ if self.bridge != nil {
298
+ self.sendEvent(withName: PrimerEvents.onError.stringValue, body: body)
299
+ } else {
300
+ print("Bridge is not set")
301
+ }
299
302
  }
300
303
  }
304
+
301
305
  }
302
306
 
303
307
  // MARK: - PRIMER DELEGATE
@@ -1,2 +1,2 @@
1
1
  // swiftlint:disable:next identifier_name
2
- public let PrimerReactNativeSDKVersion = "2.21.1"
2
+ public let PrimerReactNativeSDKVersion = "2.23.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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"}