@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.
Files changed (186) hide show
  1. package/android/build.gradle +4 -4
  2. package/android/gradle/wrapper/gradle-wrapper.properties +1 -2
  3. package/android/src/main/java/com/primerioreactnative/PrimerRN.kt +2 -2
  4. package/android/src/main/java/com/primerioreactnative/PrimerRNEventListener.kt +10 -8
  5. package/android/src/main/java/com/primerioreactnative/PrimerRNHeadlessUniversalCheckout.kt +2 -2
  6. package/android/src/main/java/com/primerioreactnative/PrimerRNHeadlessUniversalCheckoutListener.kt +36 -13
  7. package/android/src/main/java/com/primerioreactnative/PrimerRNViewModelStoreOwner.kt +9 -0
  8. package/android/src/main/java/com/primerioreactnative/ReactNativePackage.kt +9 -1
  9. package/android/src/main/java/com/primerioreactnative/components/events/PrimerHeadlessUniversalCheckoutComponentEvent.kt +10 -0
  10. package/android/src/main/java/com/primerioreactnative/components/manager/asset/PrimerRNHeadlessUniversalCheckoutAssetManager.kt +8 -13
  11. package/android/src/main/java/com/primerioreactnative/components/manager/banks/PrimerRNHeadlessUniversalCheckoutBanksComponent.kt +284 -0
  12. package/android/src/main/java/com/primerioreactnative/components/manager/klarna/PrimerKlarnaPaymentViewManager.kt +103 -0
  13. package/android/src/main/java/com/primerioreactnative/components/manager/klarna/PrimerRNHeadlessUniversalCheckoutKlarnaComponent.kt +334 -0
  14. package/android/src/main/java/com/primerioreactnative/components/manager/nativeUi/PrimerRNHeadlessUniversalCheckoutNativeUiManager.kt +10 -8
  15. package/android/src/main/java/com/primerioreactnative/components/manager/raw/PrimerRNHeadlessUniversalCheckoutRawManager.kt +2 -2
  16. package/android/src/main/java/com/primerioreactnative/components/manager/vault/PrimerRNHeadlessUniversalCheckoutVaultManager.kt +5 -9
  17. package/android/src/main/java/com/primerioreactnative/datamodels/NamedComponentStepRN.kt +7 -0
  18. package/android/src/main/java/com/primerioreactnative/datamodels/NamedComponentValidatableDataRN.kt +7 -0
  19. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerErrorRN.kt +8 -0
  20. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerIssuingBankRN.kt +11 -0
  21. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerPaymentMethodDataRN.kt +1 -1
  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/PrimerPaymentMethodData.kt +1 -1
  32. package/android/src/main/java/com/primerioreactnative/extensions/klarna/KlarnaPaymentCategory.kt +12 -0
  33. package/android/src/main/java/com/primerioreactnative/extensions/klarna/KlarnaPaymentCategoryRN.kt +12 -0
  34. package/android/src/main/java/com/primerioreactnative/extensions/klarna/KlarnaPaymentCollectableData.kt +14 -0
  35. package/android/src/main/java/com/primerioreactnative/extensions/klarna/KlarnaPaymentStep.kt +21 -0
  36. package/android/src/main/java/com/primerioreactnative/utils/ErrorHelper.kt +3 -2
  37. package/android/src/main/java/com/primerioreactnative/utils/JsonConverter.kt +8 -1
  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 +272 -0
  50. package/ios/Sources/Headless Universal Checkout/Managers/RNTRedirectManager.m +25 -0
  51. package/ios/Sources/Headless Universal Checkout/Managers/RNTRedirectManager.swift +183 -0
  52. package/ios/Sources/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.swift +3 -1
  53. package/ios/Sources/Helpers/PrimerCheckoutPaymentMethodData+RN.swift +21 -0
  54. package/ios/Sources/RNTPrimer.swift +4 -2
  55. package/ios/Sources/version.swift +1 -1
  56. package/lib/commonjs/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.js +9 -0
  57. package/lib/commonjs/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.js.map +1 -0
  58. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.js +103 -0
  59. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.js.map +1 -0
  60. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.js +99 -0
  61. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.js.map +1 -0
  62. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js +4 -4
  63. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js.map +1 -1
  64. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.js +8 -0
  65. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.js.map +1 -0
  66. package/lib/commonjs/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js +3 -2
  67. package/lib/commonjs/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js.map +1 -1
  68. package/lib/commonjs/Primer.js +2 -1
  69. package/lib/commonjs/Primer.js.map +1 -1
  70. package/lib/commonjs/index.js +186 -0
  71. package/lib/commonjs/index.js.map +1 -1
  72. package/lib/commonjs/models/IssuingBank.js +2 -0
  73. package/lib/commonjs/models/IssuingBank.js.map +1 -0
  74. package/lib/commonjs/models/NamedComponentStep.js +2 -0
  75. package/lib/commonjs/models/NamedComponentStep.js.map +1 -0
  76. package/lib/commonjs/models/NamedComponentValidatableData.js +2 -0
  77. package/lib/commonjs/models/NamedComponentValidatableData.js.map +1 -0
  78. package/lib/commonjs/models/PrimerComponentDataValidation.js +6 -0
  79. package/lib/commonjs/models/PrimerComponentDataValidation.js.map +1 -0
  80. package/lib/commonjs/models/PrimerError.js +2 -1
  81. package/lib/commonjs/models/PrimerError.js.map +1 -1
  82. package/lib/commonjs/models/banks/BanksCollectableData.js +6 -0
  83. package/lib/commonjs/models/banks/BanksCollectableData.js.map +1 -0
  84. package/lib/commonjs/models/banks/BanksSteps.js +6 -0
  85. package/lib/commonjs/models/banks/BanksSteps.js.map +1 -0
  86. package/lib/commonjs/models/klarna/KlarnaPaymentCategory.js +2 -0
  87. package/lib/commonjs/models/klarna/KlarnaPaymentCategory.js.map +1 -0
  88. package/lib/commonjs/models/klarna/KlarnaPaymentCollectableData.js +6 -0
  89. package/lib/commonjs/models/klarna/KlarnaPaymentCollectableData.js.map +1 -0
  90. package/lib/commonjs/models/klarna/KlarnaPaymentSteps.js +6 -0
  91. package/lib/commonjs/models/klarna/KlarnaPaymentSteps.js.map +1 -0
  92. package/lib/module/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.js +3 -0
  93. package/lib/module/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.js.map +1 -0
  94. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.js +96 -0
  95. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.js.map +1 -0
  96. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.js +92 -0
  97. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.js.map +1 -0
  98. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js +4 -4
  99. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js.map +1 -1
  100. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.js +2 -0
  101. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.js.map +1 -0
  102. package/lib/module/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js +3 -2
  103. package/lib/module/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js.map +1 -1
  104. package/lib/module/Primer.js +2 -1
  105. package/lib/module/Primer.js.map +1 -1
  106. package/lib/module/index.js +24 -0
  107. package/lib/module/index.js.map +1 -1
  108. package/lib/module/models/IssuingBank.js +2 -0
  109. package/lib/module/models/IssuingBank.js.map +1 -0
  110. package/lib/module/models/NamedComponentStep.js +2 -0
  111. package/lib/module/models/NamedComponentStep.js.map +1 -0
  112. package/lib/module/models/NamedComponentValidatableData.js +2 -0
  113. package/lib/module/models/NamedComponentValidatableData.js.map +1 -0
  114. package/lib/module/models/PrimerComponentDataValidation.js +2 -0
  115. package/lib/module/models/PrimerComponentDataValidation.js.map +1 -0
  116. package/lib/module/models/PrimerError.js +2 -1
  117. package/lib/module/models/PrimerError.js.map +1 -1
  118. package/lib/module/models/banks/BanksCollectableData.js +2 -0
  119. package/lib/module/models/banks/BanksCollectableData.js.map +1 -0
  120. package/lib/module/models/banks/BanksSteps.js +2 -0
  121. package/lib/module/models/banks/BanksSteps.js.map +1 -0
  122. package/lib/module/models/klarna/KlarnaPaymentCategory.js +2 -0
  123. package/lib/module/models/klarna/KlarnaPaymentCategory.js.map +1 -0
  124. package/lib/module/models/klarna/KlarnaPaymentCollectableData.js +2 -0
  125. package/lib/module/models/klarna/KlarnaPaymentCollectableData.js.map +1 -0
  126. package/lib/module/models/klarna/KlarnaPaymentSteps.js +2 -0
  127. package/lib/module/models/klarna/KlarnaPaymentSteps.js.map +1 -0
  128. package/lib/typescript/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.d.ts +2 -0
  129. package/lib/typescript/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.d.ts.map +1 -0
  130. package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.d.ts +54 -0
  131. package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.d.ts.map +1 -0
  132. package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.d.ts +50 -0
  133. package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.d.ts.map +1 -0
  134. package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.d.ts +3 -0
  135. package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.d.ts.map +1 -0
  136. package/lib/typescript/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.d.ts.map +1 -1
  137. package/lib/typescript/Primer.d.ts.map +1 -1
  138. package/lib/typescript/index.d.ts +26 -2
  139. package/lib/typescript/index.d.ts.map +1 -1
  140. package/lib/typescript/models/IssuingBank.d.ts +9 -0
  141. package/lib/typescript/models/IssuingBank.d.ts.map +1 -0
  142. package/lib/typescript/models/NamedComponentStep.d.ts +12 -0
  143. package/lib/typescript/models/NamedComponentStep.d.ts.map +1 -0
  144. package/lib/typescript/models/NamedComponentValidatableData.d.ts +12 -0
  145. package/lib/typescript/models/NamedComponentValidatableData.d.ts.map +1 -0
  146. package/lib/typescript/models/PrimerCheckoutPaymentMethodData.d.ts +1 -0
  147. package/lib/typescript/models/PrimerCheckoutPaymentMethodData.d.ts.map +1 -1
  148. package/lib/typescript/models/PrimerComponentDataValidation.d.ts +54 -0
  149. package/lib/typescript/models/PrimerComponentDataValidation.d.ts.map +1 -0
  150. package/lib/typescript/models/PrimerError.d.ts +2 -6
  151. package/lib/typescript/models/PrimerError.d.ts.map +1 -1
  152. package/lib/typescript/models/PrimerValidationError.d.ts +3 -3
  153. package/lib/typescript/models/PrimerValidationError.d.ts.map +1 -1
  154. package/lib/typescript/models/banks/BanksCollectableData.d.ts +23 -0
  155. package/lib/typescript/models/banks/BanksCollectableData.d.ts.map +1 -0
  156. package/lib/typescript/models/banks/BanksSteps.d.ts +20 -0
  157. package/lib/typescript/models/banks/BanksSteps.d.ts.map +1 -0
  158. package/lib/typescript/models/klarna/KlarnaPaymentCategory.d.ts +24 -0
  159. package/lib/typescript/models/klarna/KlarnaPaymentCategory.d.ts.map +1 -0
  160. package/lib/typescript/models/klarna/KlarnaPaymentCollectableData.d.ts +24 -0
  161. package/lib/typescript/models/klarna/KlarnaPaymentCollectableData.d.ts.map +1 -0
  162. package/lib/typescript/models/klarna/KlarnaPaymentSteps.d.ts +36 -0
  163. package/lib/typescript/models/klarna/KlarnaPaymentSteps.d.ts.map +1 -0
  164. package/package.json +1 -1
  165. package/src/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.tsx +5 -0
  166. package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.ts +161 -0
  167. package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.ts +147 -0
  168. package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.ts +4 -4
  169. package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.ts +10 -0
  170. package/src/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.ts +3 -2
  171. package/src/Primer.ts +2 -1
  172. package/src/index.tsx +62 -62
  173. package/src/models/IssuingBank.ts +8 -0
  174. package/src/models/NamedComponentStep.ts +11 -0
  175. package/src/models/NamedComponentValidatableData.ts +11 -0
  176. package/src/models/PrimerCheckoutPaymentMethodData.ts +6 -1
  177. package/src/models/PrimerComponentDataValidation.ts +60 -0
  178. package/src/models/PrimerError.ts +8 -14
  179. package/src/models/PrimerValidationError.ts +3 -3
  180. package/src/models/banks/BanksCollectableData.ts +25 -0
  181. package/src/models/banks/BanksSteps.ts +22 -0
  182. package/src/models/klarna/KlarnaPaymentCategory.ts +23 -0
  183. package/src/models/klarna/KlarnaPaymentCollectableData.ts +26 -0
  184. package/src/models/klarna/KlarnaPaymentSteps.ts +36 -0
  185. /package/ios/Sources/Headless Universal Checkout/Managers/{RNTAssetsManager.m → Assets Manager/RNTAssetsManager.m} +0 -0
  186. /package/ios/Sources/Headless Universal Checkout/Managers/{RNTAssetsManager.swift → Assets Manager/RNTAssetsManager.swift} +0 -0
@@ -0,0 +1,21 @@
1
+ package com.primerioreactnative.datamodels.klarna
2
+
3
+ import com.primerioreactnative.datamodels.klarna.KlarnaPaymentCategoryRN
4
+ import com.primerioreactnative.datamodels.NamedComponentValidatableData
5
+ import kotlinx.serialization.Serializable
6
+
7
+ @Serializable
8
+ internal sealed interface KlarnaPaymentCollectableDataRN : NamedComponentValidatableData {
9
+ @Serializable
10
+ data class PaymentOptionsRN(
11
+ val returnIntentUrl: String,
12
+ val paymentCategory: KlarnaPaymentCategoryRN
13
+ ) : KlarnaPaymentCollectableDataRN {
14
+ override val validatableDataName: String = "klarnaPaymentOptions"
15
+ }
16
+
17
+ @Serializable
18
+ class FinalizePaymentRN : KlarnaPaymentCollectableDataRN {
19
+ override val validatableDataName = "klarnaPaymentFinalization"
20
+ }
21
+ }
@@ -0,0 +1,31 @@
1
+ package com.primerioreactnative.datamodels.klarna
2
+
3
+ import kotlinx.serialization.Serializable
4
+ import com.primerioreactnative.datamodels.NamedComponentStep
5
+
6
+ @Serializable
7
+ internal sealed interface KlarnaPaymentStepRN : NamedComponentStep {
8
+ @Serializable
9
+ data class PaymentSessionCreatedRN(
10
+ val paymentCategories: List<KlarnaPaymentCategoryRN>
11
+ ) : KlarnaPaymentStepRN {
12
+ override val stepName: String = "paymentSessionCreated"
13
+ }
14
+
15
+ @Serializable
16
+ class PaymentViewLoadedRN : KlarnaPaymentStepRN {
17
+ override val stepName: String = "paymentViewLoaded"
18
+ }
19
+
20
+ @Serializable
21
+ data class PaymentSessionAuthorizedRN(
22
+ val isFinalized: Boolean
23
+ ) : KlarnaPaymentStepRN {
24
+ override val stepName: String = "paymentSessionAuthorized"
25
+ }
26
+
27
+ @Serializable
28
+ class PaymentSessionFinalizedRN : KlarnaPaymentStepRN {
29
+ override val stepName: String = "paymentSessionFinalized"
30
+ }
31
+ }
@@ -0,0 +1,13 @@
1
+ package com.primerioreactnative.extensions
2
+
3
+ import io.primer.android.domain.error.models.PrimerError
4
+ import com.primerioreactnative.datamodels.PrimerErrorRN
5
+
6
+ fun PrimerError.toPrimerErrorRN(): PrimerErrorRN =
7
+ PrimerErrorRN(
8
+ errorId = errorId,
9
+ errorCode = errorCode,
10
+ description = description,
11
+ diagnosticsId = diagnosticsId,
12
+ recoverySuggestion = recoverySuggestion
13
+ )
@@ -0,0 +1,7 @@
1
+ package com.primerioreactnative.extensions
2
+
3
+ import com.primerioreactnative.datamodels.PrimerIssuingBankRN
4
+ import io.primer.android.domain.rpc.banks.models.IssuingBank
5
+
6
+ internal fun IssuingBank.toPrimerIssuingBankRN() =
7
+ PrimerIssuingBankRN(id, name, disabled, iconUrl)
@@ -4,4 +4,4 @@ import com.primerioreactnative.datamodels.PrimerPaymentMethodDataRN
4
4
  import io.primer.android.domain.tokenization.models.PrimerPaymentMethodData
5
5
 
6
6
  internal fun PrimerPaymentMethodData.toPrimerPaymentMethodDataRN() =
7
- PrimerPaymentMethodDataRN(paymentMethodType)
7
+ PrimerPaymentMethodDataRN(paymentMethodType, paymentMethodType)
@@ -0,0 +1,12 @@
1
+ package com.primerioreactnative.extensions.klarna
2
+
3
+ import com.primerioreactnative.datamodels.klarna.KlarnaPaymentCategoryRN
4
+ import io.primer.android.components.domain.payments.paymentMethods.nativeUi.klarna.models.KlarnaPaymentCategory
5
+
6
+ internal fun KlarnaPaymentCategory.toKlarnaPaymentCategoryRN() =
7
+ KlarnaPaymentCategoryRN(
8
+ identifier = identifier,
9
+ name = name,
10
+ descriptiveAssetUrl = descriptiveAssetUrl,
11
+ standardAssetUrl = standardAssetUrl
12
+ )
@@ -0,0 +1,12 @@
1
+ package com.primerioreactnative.extensions.klarna
2
+
3
+ import com.primerioreactnative.datamodels.klarna.KlarnaPaymentCategoryRN
4
+ import io.primer.android.components.domain.payments.paymentMethods.nativeUi.klarna.models.KlarnaPaymentCategory
5
+
6
+ internal fun KlarnaPaymentCategoryRN.toKlarnaPaymentCategory() =
7
+ KlarnaPaymentCategory(
8
+ identifier = identifier,
9
+ name = name,
10
+ descriptiveAssetUrl = descriptiveAssetUrl,
11
+ standardAssetUrl = standardAssetUrl
12
+ )
@@ -0,0 +1,14 @@
1
+ package com.primerioreactnative.extensions.klarna
2
+
3
+ import com.primerioreactnative.datamodels.klarna.KlarnaPaymentCollectableDataRN.PaymentOptionsRN
4
+ import com.primerioreactnative.datamodels.klarna.KlarnaPaymentCollectableDataRN.FinalizePaymentRN
5
+ import io.primer.android.components.presentation.paymentMethods.nativeUi.klarna.models.KlarnaPaymentCollectableData.PaymentOptions
6
+ import io.primer.android.components.presentation.paymentMethods.nativeUi.klarna.models.KlarnaPaymentCollectableData.FinalizePayment
7
+
8
+ internal fun PaymentOptions.toPaymentOptionsRN() =
9
+ PaymentOptionsRN(
10
+ returnIntentUrl = returnIntentUrl,
11
+ paymentCategory = paymentCategory.toKlarnaPaymentCategoryRN()
12
+ )
13
+
14
+ internal fun FinalizePayment.toFinalizePaymentRN() = FinalizePaymentRN()
@@ -0,0 +1,21 @@
1
+ package com.primerioreactnative.extensions.klarna
2
+
3
+ import com.primerioreactnative.datamodels.klarna.KlarnaPaymentStepRN.PaymentSessionCreatedRN
4
+ import com.primerioreactnative.datamodels.klarna.KlarnaPaymentStepRN.PaymentViewLoadedRN
5
+ import com.primerioreactnative.datamodels.klarna.KlarnaPaymentStepRN.PaymentSessionAuthorizedRN
6
+ import com.primerioreactnative.datamodels.klarna.KlarnaPaymentStepRN.PaymentSessionFinalizedRN
7
+ import com.primerioreactnative.extensions.klarna.toKlarnaPaymentCategoryRN
8
+ import io.primer.android.components.presentation.paymentMethods.nativeUi.klarna.models.KlarnaPaymentStep.PaymentSessionCreated
9
+ import io.primer.android.components.presentation.paymentMethods.nativeUi.klarna.models.KlarnaPaymentStep.PaymentViewLoaded
10
+ import io.primer.android.components.presentation.paymentMethods.nativeUi.klarna.models.KlarnaPaymentStep.PaymentSessionAuthorized
11
+ import io.primer.android.components.presentation.paymentMethods.nativeUi.klarna.models.KlarnaPaymentStep.PaymentSessionFinalized
12
+
13
+ internal fun PaymentSessionCreated.toPaymentSessionCreatedRN() =
14
+ PaymentSessionCreatedRN(paymentCategories = paymentCategories.map { it.toKlarnaPaymentCategoryRN() })
15
+
16
+ internal fun PaymentViewLoaded.toPaymentViewLoadedRN() = PaymentViewLoadedRN()
17
+
18
+ internal fun PaymentSessionAuthorized.toPaymentSessionAuthorizedRN() =
19
+ PaymentSessionAuthorizedRN(isFinalized = isFinalized)
20
+
21
+ internal fun PaymentSessionFinalized.toPaymentSessionFinalizedRN() = PaymentSessionFinalizedRN()
@@ -4,6 +4,7 @@ import com.primerioreactnative.datamodels.ErrorTypeRN
4
4
  import com.primerioreactnative.datamodels.PrimerErrorRN
5
5
 
6
6
  infix fun ErrorTypeRN.errorTo(message: String) = PrimerErrorRN(
7
- errorId,
8
- message
7
+ errorId = errorId,
8
+ errorCode = null,
9
+ description = message
9
10
  )
@@ -7,6 +7,13 @@ import org.json.JSONException
7
7
 
8
8
  import org.json.JSONObject
9
9
 
10
+
11
+ internal fun JSONObject?.toWritableMap(): WritableMap =
12
+ this?.let { convertJsonToMap(this) } ?: Arguments.createMap()
13
+
14
+ internal fun JSONArray?.toWritableArray(): WritableArray =
15
+ this?.let { convertJsonToArray(this) } ?: Arguments.createArray()
16
+
10
17
  @Throws(JSONException::class)
11
18
  internal fun convertJsonToMap(jsonObject: JSONObject): WritableMap {
12
19
  val map = Arguments.createMap()
@@ -27,7 +34,7 @@ internal fun convertJsonToMap(jsonObject: JSONObject): WritableMap {
27
34
  }
28
35
 
29
36
  @Throws(JSONException::class)
30
- private fun convertJsonToArray(jsonArray: JSONArray): WritableArray {
37
+ internal fun convertJsonToArray(jsonArray: JSONArray): WritableArray {
31
38
  val array: WritableArray = Arguments.createArray()
32
39
  for (i in 0 until jsonArray.length()) {
33
40
  when (val value = jsonArray[i]) {
@@ -3,6 +3,7 @@
3
3
  #import <React/RCTViewManager.h>
4
4
  #import <React/RCTUIManager.h>
5
5
  #import <React/RCTView.h>
6
+ #import "RNTPrimerKlarnaPaymentViewManager.h"
6
7
 
7
8
  // for view controller implementation https://stackoverflow.com/questions/45741903/react-native-ios-how-can-i-navigate-to-a-non-react-native-view-native-ios-vie/46007680#46007680
8
9
  //#import "React/RCTBridge.h"
@@ -0,0 +1,42 @@
1
+ //
2
+ // RNTBanksCollectableData.swift
3
+ // primer-io-react-native
4
+ //
5
+ // Created by Stefan Vrancianu on 27.03.2024.
6
+ //
7
+
8
+ import Foundation
9
+ import PrimerSDK
10
+
11
+ protocol BanksCollectableDataRN {
12
+ var validatableDataName: String { get }
13
+ }
14
+
15
+ class FilterRN: BanksCollectableDataRN, Encodable {
16
+ var validatableDataName: String = "bankListFilter"
17
+ var text: String
18
+
19
+ init(text: String) {
20
+ self.text = text
21
+ }
22
+ }
23
+
24
+ class BankIdRN: BanksCollectableDataRN, Encodable {
25
+ var validatableDataName: String = "bankId"
26
+ var id: String
27
+
28
+ init(id: String) {
29
+ self.id = id
30
+ }
31
+ }
32
+
33
+ extension BanksCollectableData {
34
+ func toBankIdRN(bankId: String) -> BankIdRN {
35
+ return BankIdRN(id: bankId)
36
+ }
37
+
38
+ func toFilterRN(text: String) -> FilterRN {
39
+ return FilterRN(text: text)
40
+ }
41
+ }
42
+
@@ -0,0 +1,36 @@
1
+ //
2
+ // RNTBanksStep.swift
3
+ // primer-io-react-native
4
+ //
5
+ // Created by Stefan Vrancianu on 27.03.2024.
6
+ //
7
+
8
+ import Foundation
9
+ import PrimerSDK
10
+
11
+ protocol BanksStepRN {
12
+ var stepName: String { get }
13
+ }
14
+
15
+ class LoadingRN: BanksStepRN, Encodable {
16
+ var stepName: String = "banksLoading"
17
+ }
18
+
19
+ class BanksRetrievedRN: BanksStepRN, Encodable {
20
+ var stepName: String = "banksRetrieved"
21
+ var banks: [IssuingBank]
22
+
23
+ init(banks: [IssuingBank]) {
24
+ self.banks = banks
25
+ }
26
+ }
27
+
28
+ extension BanksStep {
29
+ func toLoadingRN() -> LoadingRN {
30
+ return LoadingRN()
31
+ }
32
+
33
+ func toBanksRetrievedRN(banks: [IssuingBank]) -> BanksRetrievedRN {
34
+ return BanksRetrievedRN(banks: banks)
35
+ }
36
+ }
@@ -0,0 +1,36 @@
1
+ //
2
+ // PrimerHeadlessUniversalCheckoutComponentEvent.swift
3
+ // primer-io-react-native
4
+ //
5
+ // Created by Stefan Vrancianu on 01.04.2024.
6
+ //
7
+
8
+ import Foundation
9
+
10
+ @objc
11
+ enum PrimerHeadlessUniversalCheckoutComponentEvent: Int, CaseIterable {
12
+
13
+ case onStep
14
+ case onError
15
+ case onValid
16
+ case onInvalid
17
+ case onValidating
18
+ case onValidationError
19
+
20
+ var stringValue: String {
21
+ switch self {
22
+ case .onStep:
23
+ return "onStep"
24
+ case .onError:
25
+ return "onError"
26
+ case .onValid:
27
+ return "onValid"
28
+ case .onInvalid:
29
+ return "onInvalid"
30
+ case .onValidating:
31
+ return "onValidating"
32
+ case .onValidationError:
33
+ return "onValidationError"
34
+ }
35
+ }
36
+ }
@@ -0,0 +1,36 @@
1
+ //
2
+ // RNTKlarnaCollectableData.swift
3
+ // primer-io-react-native
4
+ //
5
+ // Created by Stefan Vrancianu on 03.04.2024.
6
+ //
7
+
8
+ import Foundation
9
+ import PrimerSDK
10
+
11
+ protocol KlarnaCollectableDataRN {
12
+ var validatableDataName: String { get }
13
+ }
14
+
15
+ class KlarnaPaymentOptionsRN: KlarnaCollectableDataRN, Encodable {
16
+ var validatableDataName: String = "klarnaPaymentOptions"
17
+ var paymentCategory: KlarnaPaymentCategoryRN
18
+
19
+ init(paymentCategory: KlarnaPaymentCategory) {
20
+ self.paymentCategory = paymentCategory.toKlarnaPaymentCategoryRN()
21
+ }
22
+ }
23
+
24
+ class FinalizePaymentRN: KlarnaCollectableDataRN, Encodable {
25
+ var validatableDataName: String = "klarnaPaymentFinalization"
26
+ }
27
+
28
+ extension KlarnaCollectableData {
29
+ func toKlarnaPaymentOptionsRN(category: KlarnaPaymentCategory) -> KlarnaPaymentOptionsRN {
30
+ return KlarnaPaymentOptionsRN(paymentCategory: category)
31
+ }
32
+
33
+ func toFinalizePaymentRN() -> FinalizePaymentRN {
34
+ return FinalizePaymentRN()
35
+ }
36
+ }
@@ -0,0 +1,33 @@
1
+ //
2
+ // RNTKlarnaPaymentCategory.swift
3
+ // primer-io-react-native
4
+ //
5
+ // Created by Stefan Vrancianu on 03.04.2024.
6
+ //
7
+
8
+ import Foundation
9
+ import PrimerSDK
10
+
11
+ @objc
12
+ class KlarnaPaymentCategoryRN: NSObject, Codable {
13
+ var identifier: String
14
+ var name: String
15
+ var descriptiveAssetUrl: String
16
+ var standardAssetUrl: String
17
+
18
+ init(identifier: String, name: String, descriptiveAssetUrl: String, standardAssetUrl: String) {
19
+ self.identifier = identifier
20
+ self.name = name
21
+ self.descriptiveAssetUrl = descriptiveAssetUrl
22
+ self.standardAssetUrl = standardAssetUrl
23
+ }
24
+ }
25
+
26
+ extension KlarnaPaymentCategory {
27
+ func toKlarnaPaymentCategoryRN() -> KlarnaPaymentCategoryRN {
28
+ return KlarnaPaymentCategoryRN(identifier: self.id,
29
+ name: self.name,
30
+ descriptiveAssetUrl: self.descriptiveAssetUrl,
31
+ standardAssetUrl: self.descriptiveAssetUrl)
32
+ }
33
+ }
@@ -0,0 +1,61 @@
1
+ //
2
+ // RNTKlarnaStep.swift
3
+ // primer-io-react-native
4
+ //
5
+ // Created by Stefan Vrancianu on 03.04.2024.
6
+ //
7
+
8
+ import Foundation
9
+ import PrimerSDK
10
+
11
+ protocol KlarnaStepRN {
12
+ var stepName: String { get }
13
+ }
14
+
15
+ /// Session creation
16
+ class PaymentSessionCreatedRN: KlarnaStepRN, Encodable {
17
+ var stepName: String = "paymentSessionCreated"
18
+ var paymentCategories: [KlarnaPaymentCategoryRN]
19
+
20
+ init(paymentCategories: [KlarnaPaymentCategory]) {
21
+ self.paymentCategories = paymentCategories.map { $0.toKlarnaPaymentCategoryRN() }
22
+ }
23
+ }
24
+
25
+ /// Session authorization
26
+ class PaymentSessionAuthorizedRN: KlarnaStepRN, Encodable {
27
+ var stepName: String = "paymentSessionAuthorized"
28
+ var isFinalized: Bool
29
+
30
+ init(isFinalized: Bool) {
31
+ self.isFinalized = isFinalized
32
+ }
33
+ }
34
+
35
+ /// Session finalization
36
+ class PaymentSessionFinalizedRN: KlarnaStepRN, Encodable {
37
+ var stepName: String = "paymentSessionFinalized"
38
+ }
39
+
40
+ /// Payment view loaded
41
+ class PaymentViewLoadedRN: KlarnaStepRN, Encodable {
42
+ var stepName: String = "paymentViewLoaded"
43
+ }
44
+
45
+ extension KlarnaStep {
46
+ func toPaymentSessionCreatedRN(categories: [KlarnaPaymentCategory]) -> PaymentSessionCreatedRN {
47
+ return PaymentSessionCreatedRN(paymentCategories: categories)
48
+ }
49
+
50
+ func toPaymentSessionAuthorizedRN(isFinalized: Bool) -> PaymentSessionAuthorizedRN {
51
+ return PaymentSessionAuthorizedRN(isFinalized: isFinalized)
52
+ }
53
+
54
+ func toPaymentSessionFinalizedRN() -> PaymentSessionFinalizedRN {
55
+ return PaymentSessionFinalizedRN()
56
+ }
57
+
58
+ func toPaymentViewLoadedRN() -> PaymentViewLoadedRN {
59
+ return PaymentViewLoadedRN()
60
+ }
61
+ }
@@ -0,0 +1,67 @@
1
+ //
2
+ // RNTPrimerError.swift
3
+ // primer-io-react-native
4
+ //
5
+ // Created by Stefan Vrancianu on 03.04.2024.
6
+ //
7
+
8
+ import Foundation
9
+ import PrimerSDK
10
+
11
+ struct PrimerErrorRN: Encodable {
12
+ var errorId: String?
13
+ var errorCode: Int?
14
+ var description: String?
15
+ var diagnosticsId: String?
16
+ var recoverySuggestion: String?
17
+
18
+ init(
19
+ errorId: String? = nil,
20
+ errorCode: Int? = nil,
21
+ description: String? = nil,
22
+ diagnosticsId: String? = nil,
23
+ recoverySuggestion: String? = nil
24
+ ) {
25
+ self.errorId = errorId
26
+ self.errorCode = errorCode
27
+ self.description = description
28
+ self.diagnosticsId = diagnosticsId
29
+ self.recoverySuggestion = recoverySuggestion
30
+ }
31
+ }
32
+
33
+ struct PrimerValidationErrorRN: Encodable {
34
+ var errorId: String?
35
+ var description: String?
36
+ var diagnosticsId: String?
37
+
38
+ init(errorId: String? = nil,
39
+ description: String? = nil,
40
+ diagnosticsId: String? = nil
41
+ ) {
42
+ self.errorId = errorId
43
+ self.description = description
44
+ self.diagnosticsId = diagnosticsId
45
+ }
46
+ }
47
+
48
+ extension PrimerError {
49
+ func toPrimerErrorRN() -> PrimerErrorRN {
50
+ return PrimerErrorRN(
51
+ errorId: self.errorId,
52
+ errorCode: self.errorCode,
53
+ description: self.errorDescription,
54
+ diagnosticsId: self.diagnosticsId,
55
+ recoverySuggestion: self.recoverySuggestion
56
+ )
57
+ }
58
+ }
59
+
60
+ extension PrimerValidationError {
61
+ func toPrimerValidationErrorRN() -> PrimerValidationErrorRN {
62
+ return PrimerValidationErrorRN(errorId: self.errorId,
63
+ description: self.errorDescription,
64
+ diagnosticsId: self.diagnosticsId
65
+ )
66
+ }
67
+ }
@@ -0,0 +1,14 @@
1
+ //
2
+ // RNTPrimerKlarnaPaymentViewManager.h
3
+ // Pods
4
+ //
5
+ // Created by Stefan Vrancianu on 08.04.2024.
6
+ //
7
+
8
+ #import <React/RCTViewManager.h>
9
+
10
+ @interface RNTPrimerKlarnaPaymentViewManager : RCTViewManager
11
+
12
+ + (void)updatePrimerKlarnaPaymentView:(UIView *)view;
13
+
14
+ @end
@@ -0,0 +1,25 @@
1
+ //
2
+ // RNTPrimerKlarnaPaymentViewManager.m
3
+ // primer-io-react-native
4
+ //
5
+ // Created by Stefan Vrancianu on 08.04.2024.
6
+ //
7
+
8
+ #import <React/RCTViewManager.h>
9
+ #import "RNTPrimerKlarnaPaymentViewManager.h"
10
+
11
+ @implementation RNTPrimerKlarnaPaymentViewManager
12
+
13
+ RCT_EXPORT_MODULE(PrimerKlarnaPaymentView)
14
+
15
+ static __weak UIView *primerKlarnaPaymentView = nil;
16
+
17
+ + (void)updatePrimerKlarnaPaymentView:(UIView *)view {
18
+ primerKlarnaPaymentView = view;
19
+ }
20
+
21
+ - (UIView *)view {
22
+ return primerKlarnaPaymentView;
23
+ }
24
+
25
+ @end
@@ -0,0 +1,27 @@
1
+ //
2
+ // PrimerRNHeadlessUniversalCheckoutKlarnaComponent.m
3
+ // primer-io-react-native
4
+ //
5
+ // Created by Stefan Vrancianu on 01.04.2024.
6
+ //
7
+
8
+ #import <Foundation/Foundation.h>
9
+ #import <React/RCTBridgeModule.h>
10
+ #import <React/RCTEventEmitter.h>
11
+
12
+ @interface RCT_EXTERN_MODULE(RNTPrimerHeadlessUniversalCheckoutKlarnaComponent, RCTEventEmitter)
13
+
14
+ RCT_EXTERN_METHOD(configure:(NSString *)primerSessionIntent resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
15
+
16
+ RCT_EXTERN_METHOD(onSetPaymentOptions:(NSDictionary *)paymentOptions resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
17
+
18
+ RCT_EXTERN_METHOD(start:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
19
+
20
+ RCT_EXTERN_METHOD(submit:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
21
+
22
+ RCT_EXTERN_METHOD(onFinalizePayment:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
23
+
24
+ RCT_EXTERN_METHOD(cleanUp:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
25
+
26
+ @end
27
+