@primer-io/react-native 2.29.0 → 2.30.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/android/.editorconfig +2 -0
  2. package/android/build.gradle +29 -1
  3. package/android/detekt-baseline.xml +24 -0
  4. package/android/src/main/java/com/primerioreactnative/PrimerRN.kt +248 -195
  5. package/android/src/main/java/com/primerioreactnative/PrimerRNEventListener.kt +261 -253
  6. package/android/src/main/java/com/primerioreactnative/PrimerRNHeadlessUniversalCheckout.kt +177 -143
  7. package/android/src/main/java/com/primerioreactnative/PrimerRNHeadlessUniversalCheckoutListener.kt +298 -291
  8. package/android/src/main/java/com/primerioreactnative/PrimerRNViewModelStoreOwner.kt +2 -3
  9. package/android/src/main/java/com/primerioreactnative/ReactNativePackage.kt +33 -36
  10. package/android/src/main/java/com/primerioreactnative/components/assets/AssetsManager.kt +29 -30
  11. package/android/src/main/java/com/primerioreactnative/components/assets/CardNetworkImageFileProvider.kt +15 -15
  12. package/android/src/main/java/com/primerioreactnative/components/assets/PaymentMethodAssetFileProvider.kt +16 -16
  13. package/android/src/main/java/com/primerioreactnative/components/datamodels/core/PrimerRNHeadlessUniversalCheckoutPaymentMethod.kt +9 -9
  14. package/android/src/main/java/com/primerioreactnative/components/datamodels/core/PrimerRawPaymentMethodType.kt +5 -5
  15. package/android/src/main/java/com/primerioreactnative/components/datamodels/manager/asset/Resources.kt +143 -0
  16. package/android/src/main/java/com/primerioreactnative/components/datamodels/manager/raw/card/PrimerRNCardData.kt +11 -11
  17. package/android/src/main/java/com/primerioreactnative/components/datamodels/manager/raw/cardRedirect/PrimerRNBancontactCardData.kt +19 -0
  18. package/android/src/main/java/com/primerioreactnative/components/datamodels/manager/raw/phoneNumber/PrimerRNPhoneNumberData.kt +5 -5
  19. package/android/src/main/java/com/primerioreactnative/components/datamodels/manager/raw/retailOutlets/PrimerRNRetailOutletData.kt +2 -3
  20. package/android/src/main/java/com/primerioreactnative/components/datamodels/manager/raw/retailOutlets/RNRetailOutletsList.kt +15 -14
  21. package/android/src/main/java/com/primerioreactnative/components/datamodels/manager/vault/PrimerRNValidationError.kt +10 -10
  22. package/android/src/main/java/com/primerioreactnative/components/datamodels/manager/vault/PrimerRNVaultedPaymentMethod.kt +15 -16
  23. package/android/src/main/java/com/primerioreactnative/components/datamodels/manager/vault/PrimerRNVaultedPaymentMethodAdditionalData.kt +4 -2
  24. package/android/src/main/java/com/primerioreactnative/components/events/PrimerHeadlessUniversalCheckoutComponentEvent.kt +6 -6
  25. package/android/src/main/java/com/primerioreactnative/components/events/PrimerHeadlessUniversalCheckoutEvent.kt +13 -13
  26. package/android/src/main/java/com/primerioreactnative/components/events/PrimerHeadlessUniversalCheckoutRawDataManagerEvent.kt +2 -2
  27. package/android/src/main/java/com/primerioreactnative/components/manager/NativeViewContainer.kt +9 -8
  28. package/android/src/main/java/com/primerioreactnative/components/manager/ach/{AchMandateManager.kt → PrimerRNAchMandateManager.kt} +20 -17
  29. package/android/src/main/java/com/primerioreactnative/components/manager/ach/PrimerRNHeadlessUniversalCheckoutStripeAchUserDetailsComponent.kt +227 -212
  30. package/android/src/main/java/com/primerioreactnative/components/manager/asset/PrimerRNHeadlessUniversalCheckoutAssetManager.kt +178 -163
  31. package/android/src/main/java/com/primerioreactnative/components/manager/banks/PrimerRNHeadlessUniversalCheckoutBanksComponent.kt +207 -194
  32. package/android/src/main/java/com/primerioreactnative/components/manager/googlePay/PrimerGooglePayButtonConstantsModule.kt +23 -26
  33. package/android/src/main/java/com/primerioreactnative/components/manager/googlePay/PrimerGooglePayButtonManager.kt +25 -23
  34. package/android/src/main/java/com/primerioreactnative/components/manager/klarna/PrimerKlarnaPaymentViewManager.kt +24 -23
  35. package/android/src/main/java/com/primerioreactnative/components/manager/klarna/PrimerRNHeadlessUniversalCheckoutKlarnaComponent.kt +111 -87
  36. package/android/src/main/java/com/primerioreactnative/components/manager/nativeUi/PrimerRNHeadlessUniversalCheckoutNativeUiManager.kt +68 -63
  37. package/android/src/main/java/com/primerioreactnative/components/manager/raw/PrimerRNHeadlessUniversalCheckoutRawManager.kt +189 -164
  38. package/android/src/main/java/com/primerioreactnative/components/manager/raw/PrimerRNHeadlessUniversalCheckoutRawManagerListener.kt +39 -37
  39. package/android/src/main/java/com/primerioreactnative/components/manager/vault/PrimerRNHeadlessUniversalCheckoutVaultManager.kt +128 -118
  40. package/android/src/main/java/com/primerioreactnative/datamodels/{NamedComponentStepRN.kt → NamedComponentStep.kt} +0 -2
  41. package/android/src/main/java/com/primerioreactnative/datamodels/{NamedComponentValidatableDataRN.kt → NamedComponentValidatableData.kt} +1 -3
  42. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerCheckoutAdditionalInfoRN.kt +14 -14
  43. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerCheckoutDataRN.kt +4 -4
  44. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerClientSessionRN.kt +34 -35
  45. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerErrorRN.kt +14 -14
  46. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerEvents.kt +10 -11
  47. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerInputValidationErrorRN.kt +4 -4
  48. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerIssuingBankRN.kt +1 -1
  49. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerPaymentInstrumentTokenRN.kt +66 -67
  50. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerSettingsRN.kt +128 -111
  51. package/android/src/main/java/com/primerioreactnative/datamodels/ach/AchUserDetailsStepRN.kt +2 -3
  52. package/android/src/main/java/com/primerioreactnative/datamodels/banks/BanksStepRN.kt +3 -3
  53. package/android/src/main/java/com/primerioreactnative/datamodels/extensions/ach/AchUserDetailsCollectableData.kt +11 -6
  54. package/android/src/main/java/com/primerioreactnative/datamodels/extensions/ach/AchUserDetailsStep.kt +1 -1
  55. package/android/src/main/java/com/primerioreactnative/datamodels/extensions/banks/BanksCollectableData.kt +2 -2
  56. package/android/src/main/java/com/primerioreactnative/datamodels/extensions/banks/BanksStep.kt +8 -4
  57. package/android/src/main/java/com/primerioreactnative/datamodels/klarna/KlarnaPaymentCategoryRN.kt +2 -2
  58. package/android/src/main/java/com/primerioreactnative/datamodels/klarna/KlarnaPaymentCollectableDataRN.kt +2 -3
  59. package/android/src/main/java/com/primerioreactnative/datamodels/klarna/KlarnaPaymentStepRN.kt +6 -6
  60. package/android/src/main/java/com/primerioreactnative/extensions/JSONExtensions.kt +26 -26
  61. package/android/src/main/java/com/primerioreactnative/extensions/LocaleSettingsRN.kt +5 -5
  62. package/android/src/main/java/com/primerioreactnative/extensions/PaymentInstrumentData.kt +37 -31
  63. package/android/src/main/java/com/primerioreactnative/extensions/PrimerAddress.kt +11 -10
  64. package/android/src/main/java/com/primerioreactnative/extensions/PrimerCheckoutAdditionalInfo.kt +19 -14
  65. package/android/src/main/java/com/primerioreactnative/extensions/PrimerCheckoutData.kt +1 -1
  66. package/android/src/main/java/com/primerioreactnative/extensions/PrimerClientSession.kt +9 -9
  67. package/android/src/main/java/com/primerioreactnative/extensions/PrimerCustomer.kt +9 -8
  68. package/android/src/main/java/com/primerioreactnative/extensions/PrimerDebugOptionsRN.kt +1 -2
  69. package/android/src/main/java/com/primerioreactnative/extensions/PrimerError.kt +3 -3
  70. package/android/src/main/java/com/primerioreactnative/extensions/PrimerIssuingBank.kt +1 -2
  71. package/android/src/main/java/com/primerioreactnative/extensions/PrimerLineItem.kt +10 -3
  72. package/android/src/main/java/com/primerioreactnative/extensions/PrimerOrder.kt +5 -3
  73. package/android/src/main/java/com/primerioreactnative/extensions/PrimerPaymentMethodData.kt +4 -1
  74. package/android/src/main/java/com/primerioreactnative/extensions/PrimerPaymentMethodOptionsRN.kt +69 -54
  75. package/android/src/main/java/com/primerioreactnative/extensions/PrimerUIOptionsRN.kt +16 -16
  76. package/android/src/main/java/com/primerioreactnative/extensions/ThreeDsAuthenticationData.kt +7 -7
  77. package/android/src/main/java/com/primerioreactnative/extensions/klarna/KlarnaPaymentCategory.kt +1 -1
  78. package/android/src/main/java/com/primerioreactnative/extensions/klarna/KlarnaPaymentCategoryRN.kt +1 -1
  79. package/android/src/main/java/com/primerioreactnative/extensions/klarna/KlarnaPaymentCollectableData.kt +4 -4
  80. package/android/src/main/java/com/primerioreactnative/extensions/klarna/KlarnaPaymentStep.kt +8 -7
  81. package/android/src/main/java/com/primerioreactnative/utils/ErrorHelper.kt +6 -5
  82. package/android/src/main/java/com/primerioreactnative/utils/JsonConverter.kt +33 -34
  83. package/android/src/main/java/com/primerioreactnative/utils/PrimerHeadlessUniversalCheckoutImplementedRNCallbacks.kt +26 -26
  84. package/android/src/main/java/com/primerioreactnative/utils/PrimerImplementedRNCallbacks.kt +20 -20
  85. package/android/src/test/java/com/primerioreactnative/utils/ErrorHelperTest.kt +12 -13
  86. package/android/tooling/code-analysis/detekt.yml +68 -0
  87. package/ios/Sources/DataModels/Ach Component/RNTAchUserDetailsCollectableData.swift +2 -2
  88. package/ios/Sources/DataModels/Banks Component/RNTBanksCollectableData.swift +0 -1
  89. package/ios/Sources/DataModels/ImplementedRNCallbacks.swift +83 -63
  90. package/ios/Sources/DataModels/Klarna Component/PrimerHeadlessUniversalCheckoutComponentEvent.swift +3 -1
  91. package/ios/Sources/DataModels/Klarna Component/RNTKlarnaCollectableData.swift +2 -2
  92. package/ios/Sources/DataModels/Klarna Component/RNTKlarnaPaymentCategory.swift +1 -1
  93. package/ios/Sources/DataModels/Klarna Component/RNTKlarnaStep.swift +5 -5
  94. package/ios/Sources/DataModels/Klarna Component/RNTPrimerError.swift +1 -1
  95. package/ios/Sources/DataModels/PrimerBancontactCardRedirectData+Extension.swift +1 -2
  96. package/ios/Sources/DataModels/PrimerCardData+Extension.swift +6 -7
  97. package/ios/Sources/DataModels/PrimerCheckoutAdditionalInfoRN.swift +6 -7
  98. package/ios/Sources/DataModels/PrimerHeadlessUniversalCheckout_PaymentMethod.swift +10 -7
  99. package/ios/Sources/DataModels/PrimerPhoneNumberData+Extension.swift +1 -2
  100. package/ios/Sources/DataModels/PrimerRawRetailerData+Extension.swift +1 -2
  101. package/ios/Sources/DataModels/PrimerSettings+Extensions.swift +235 -177
  102. package/ios/Sources/DataModels/PrimerThemeRN.swift +6 -6
  103. package/ios/Sources/DataModels/RNTNativeError.swift +3 -4
  104. package/ios/Sources/DataModels/RNTPrimerPaymentMethodAsset.swift +54 -48
  105. package/ios/Sources/Headless Universal Checkout/Managers/Ach/PrimerRNHeadlessUniversalCheckoutStripeAchUserDetailsComponent.swift +225 -202
  106. package/ios/Sources/Headless Universal Checkout/Managers/Ach/RNTAchMandateManager.swift +6 -6
  107. package/ios/Sources/Headless Universal Checkout/Managers/Assets Manager/RNTAssetsManager.swift +163 -161
  108. package/ios/Sources/Headless Universal Checkout/Managers/Klarna/PrimerRNHeadlessUniversalCheckoutKlarnaComponent.swift +268 -250
  109. package/ios/Sources/Headless Universal Checkout/Managers/Payment Method Managers/RNPrimerHeadlessUniversalCheckoutVaultManager.swift +88 -66
  110. package/ios/Sources/Headless Universal Checkout/Managers/Payment Method Managers/RNTNativeUIManager.swift +51 -43
  111. package/ios/Sources/Headless Universal Checkout/Managers/Payment Method Managers/RNTRawDataManager.swift +181 -158
  112. package/ios/Sources/Headless Universal Checkout/Managers/RNTRedirectManager.swift +165 -156
  113. package/ios/Sources/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.swift +526 -459
  114. package/ios/Sources/Helpers/Encodable+Extension.swift +5 -1
  115. package/ios/Sources/Helpers/Error+Extensions.swift +5 -5
  116. package/ios/Sources/Helpers/UIColor+Extensions.swift +23 -20
  117. package/ios/Sources/RNTPrimer.swift +135 -48
  118. package/ios/Sources/version.swift +1 -1
  119. package/lib/commonjs/HeadlessUniversalCheckout/Components/NativeResourceView.js.map +1 -1
  120. package/lib/commonjs/HeadlessUniversalCheckout/Components/PrimerGooglePayButton.js.map +1 -1
  121. package/lib/commonjs/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.js.map +1 -1
  122. package/lib/commonjs/HeadlessUniversalCheckout/Managers/AssetsManager.js +4 -4
  123. package/lib/commonjs/HeadlessUniversalCheckout/Managers/AssetsManager.js.map +1 -1
  124. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/AchManager.js +1 -1
  125. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/AchManager.js.map +1 -1
  126. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/AchMandateManager.js +2 -2
  127. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/AchMandateManager.js.map +1 -1
  128. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.js +1 -1
  129. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.js.map +1 -1
  130. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.js.map +1 -1
  131. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/NativeUIManager.js.map +1 -1
  132. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js +6 -6
  133. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js.map +1 -1
  134. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.js.map +1 -1
  135. package/lib/commonjs/HeadlessUniversalCheckout/Managers/VaultManager.js.map +1 -1
  136. package/lib/commonjs/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js +4 -4
  137. package/lib/commonjs/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js.map +1 -1
  138. package/lib/commonjs/HeadlessUniversalCheckout/RNPrimerHeadlessUniversalCheckout.js +1 -1
  139. package/lib/commonjs/HeadlessUniversalCheckout/RNPrimerHeadlessUniversalCheckout.js.map +1 -1
  140. package/lib/commonjs/HeadlessUniversalCheckout/types.js +5 -5
  141. package/lib/commonjs/Primer.js +2 -2
  142. package/lib/commonjs/Primer.js.map +1 -1
  143. package/lib/commonjs/RNPrimer.js +5 -5
  144. package/lib/commonjs/RNPrimer.js.map +1 -1
  145. package/lib/commonjs/index.js +6 -0
  146. package/lib/commonjs/index.js.map +1 -1
  147. package/lib/commonjs/models/PrimerError.js.map +1 -1
  148. package/lib/module/HeadlessUniversalCheckout/Components/NativeResourceView.js +3 -3
  149. package/lib/module/HeadlessUniversalCheckout/Components/NativeResourceView.js.map +1 -1
  150. package/lib/module/HeadlessUniversalCheckout/Components/PrimerGooglePayButton.js +1 -1
  151. package/lib/module/HeadlessUniversalCheckout/Components/PrimerGooglePayButton.js.map +1 -1
  152. package/lib/module/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.js +1 -1
  153. package/lib/module/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.js.map +1 -1
  154. package/lib/module/HeadlessUniversalCheckout/Managers/AssetsManager.js +4 -4
  155. package/lib/module/HeadlessUniversalCheckout/Managers/AssetsManager.js.map +1 -1
  156. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/AchManager.js +1 -1
  157. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/AchManager.js.map +1 -1
  158. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/AchMandateManager.js +2 -2
  159. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/AchMandateManager.js.map +1 -1
  160. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.js +1 -1
  161. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.js.map +1 -1
  162. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.js.map +1 -1
  163. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/NativeUIManager.js.map +1 -1
  164. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js +6 -6
  165. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js.map +1 -1
  166. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.js.map +1 -1
  167. package/lib/module/HeadlessUniversalCheckout/Managers/VaultManager.js.map +1 -1
  168. package/lib/module/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js +4 -4
  169. package/lib/module/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js.map +1 -1
  170. package/lib/module/HeadlessUniversalCheckout/RNPrimerHeadlessUniversalCheckout.js +1 -1
  171. package/lib/module/HeadlessUniversalCheckout/RNPrimerHeadlessUniversalCheckout.js.map +1 -1
  172. package/lib/module/HeadlessUniversalCheckout/types.js +5 -5
  173. package/lib/module/Primer.js +2 -2
  174. package/lib/module/Primer.js.map +1 -1
  175. package/lib/module/RNPrimer.js +5 -5
  176. package/lib/module/RNPrimer.js.map +1 -1
  177. package/lib/module/index.js +1 -1
  178. package/lib/module/index.js.map +1 -1
  179. package/lib/module/models/PrimerError.js.map +1 -1
  180. package/lib/typescript/HeadlessUniversalCheckout/Components/NativeResourceView.d.ts +2 -2
  181. package/lib/typescript/HeadlessUniversalCheckout/Components/NativeResourceView.d.ts.map +1 -1
  182. package/lib/typescript/HeadlessUniversalCheckout/Components/PrimerGooglePayButton.d.ts +1 -1
  183. package/lib/typescript/HeadlessUniversalCheckout/Components/PrimerGooglePayButton.d.ts.map +1 -1
  184. package/lib/typescript/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.d.ts.map +1 -1
  185. package/lib/typescript/HeadlessUniversalCheckout/Managers/AssetsManager.d.ts +4 -4
  186. package/lib/typescript/HeadlessUniversalCheckout/Managers/AssetsManager.d.ts.map +1 -1
  187. package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/AchManager.d.ts.map +1 -1
  188. package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/AchMandateManager.d.ts.map +1 -1
  189. package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.d.ts.map +1 -1
  190. package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.d.ts.map +1 -1
  191. package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/NativeUIManager.d.ts.map +1 -1
  192. package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.d.ts.map +1 -1
  193. package/lib/typescript/HeadlessUniversalCheckout/Managers/VaultManager.d.ts.map +1 -1
  194. package/lib/typescript/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.d.ts.map +1 -1
  195. package/lib/typescript/HeadlessUniversalCheckout/RNPrimerHeadlessUniversalCheckout.d.ts.map +1 -1
  196. package/lib/typescript/Primer.d.ts.map +1 -1
  197. package/lib/typescript/RNPrimer.d.ts.map +1 -1
  198. package/lib/typescript/index.d.ts +5 -5
  199. package/lib/typescript/index.d.ts.map +1 -1
  200. package/lib/typescript/models/IssuingBank.d.ts.map +1 -1
  201. package/lib/typescript/models/NamedComponentStep.d.ts.map +1 -1
  202. package/lib/typescript/models/NamedComponentValidatableData.d.ts.map +1 -1
  203. package/lib/typescript/models/PrimerCheckoutAdditionalInfo.d.ts +4 -4
  204. package/lib/typescript/models/PrimerCheckoutAdditionalInfo.d.ts.map +1 -1
  205. package/lib/typescript/models/PrimerCheckoutData.d.ts +1 -1
  206. package/lib/typescript/models/PrimerCheckoutData.d.ts.map +1 -1
  207. package/lib/typescript/models/PrimerCheckoutPaymentMethodData.d.ts.map +1 -1
  208. package/lib/typescript/models/PrimerClientSession.d.ts.map +1 -1
  209. package/lib/typescript/models/PrimerComponentDataValidation.d.ts +5 -5
  210. package/lib/typescript/models/PrimerComponentDataValidation.d.ts.map +1 -1
  211. package/lib/typescript/models/PrimerCountryCode.d.ts +1 -1
  212. package/lib/typescript/models/PrimerCountryCode.d.ts.map +1 -1
  213. package/lib/typescript/models/PrimerCurrencyCode.d.ts +1 -1
  214. package/lib/typescript/models/PrimerCurrencyCode.d.ts.map +1 -1
  215. package/lib/typescript/models/PrimerError.d.ts.map +1 -1
  216. package/lib/typescript/models/PrimerHandlers.d.ts.map +1 -1
  217. package/lib/typescript/models/PrimerHeadlessUniversalCheckoutPaymentMethod.d.ts +2 -2
  218. package/lib/typescript/models/PrimerHeadlessUniversalCheckoutPaymentMethod.d.ts.map +1 -1
  219. package/lib/typescript/models/PrimerImplementedRNCallbacks.d.ts.map +1 -1
  220. package/lib/typescript/models/PrimerInitializationData.d.ts +1 -1
  221. package/lib/typescript/models/PrimerInitializationData.d.ts.map +1 -1
  222. package/lib/typescript/models/PrimerInputElementType.d.ts.map +1 -1
  223. package/lib/typescript/models/PrimerInterfaces.d.ts +1 -1
  224. package/lib/typescript/models/PrimerPaymentMethodManagerCategory.d.ts.map +1 -1
  225. package/lib/typescript/models/PrimerPaymentMethodResource.d.ts.map +1 -1
  226. package/lib/typescript/models/PrimerRawData.d.ts.map +1 -1
  227. package/lib/typescript/models/PrimerSettings.d.ts +15 -10
  228. package/lib/typescript/models/PrimerSettings.d.ts.map +1 -1
  229. package/lib/typescript/models/PrimerValidationError.d.ts.map +1 -1
  230. package/lib/typescript/models/PrimerValidationErrorResult.d.ts +1 -1
  231. package/lib/typescript/models/PrimerValidationErrorResult.d.ts.map +1 -1
  232. package/lib/typescript/models/PrimerVaultedPaymentMethod.d.ts +1 -1
  233. package/lib/typescript/models/PrimerVaultedPaymentMethod.d.ts.map +1 -1
  234. package/lib/typescript/models/PrimerVaultedPaymentMethodAdditionalData.d.ts.map +1 -1
  235. package/lib/typescript/models/PrimerVaultedPaymentMethodResult.d.ts +1 -1
  236. package/lib/typescript/models/PrimerVaultedPaymentMethodResult.d.ts.map +1 -1
  237. package/lib/typescript/models/RetailOutletsRetail.d.ts.map +1 -1
  238. package/lib/typescript/models/ach/AchCollectableData.d.ts +4 -4
  239. package/lib/typescript/models/ach/AchCollectableData.d.ts.map +1 -1
  240. package/lib/typescript/models/ach/AchSteps.d.ts +3 -3
  241. package/lib/typescript/models/ach/AchSteps.d.ts.map +1 -1
  242. package/lib/typescript/models/banks/BanksCollectableData.d.ts +3 -3
  243. package/lib/typescript/models/banks/BanksCollectableData.d.ts.map +1 -1
  244. package/lib/typescript/models/banks/BanksSteps.d.ts +6 -6
  245. package/lib/typescript/models/banks/BanksSteps.d.ts.map +1 -1
  246. package/lib/typescript/models/klarna/KlarnaPaymentCategory.d.ts +2 -2
  247. package/lib/typescript/models/klarna/KlarnaPaymentCategory.d.ts.map +1 -1
  248. package/lib/typescript/models/klarna/KlarnaPaymentCollectableData.d.ts +4 -4
  249. package/lib/typescript/models/klarna/KlarnaPaymentCollectableData.d.ts.map +1 -1
  250. package/lib/typescript/models/klarna/KlarnaPaymentSteps.d.ts +6 -6
  251. package/lib/typescript/models/klarna/KlarnaPaymentSteps.d.ts.map +1 -1
  252. package/lib/typescript/utils/index.d.ts +1 -1
  253. package/package.json +5 -4
  254. package/primer-io-react-native.podspec +1 -1
  255. package/src/HeadlessUniversalCheckout/Components/NativeResourceView.tsx +17 -21
  256. package/src/HeadlessUniversalCheckout/Components/PrimerGooglePayButton.tsx +3 -6
  257. package/src/HeadlessUniversalCheckout/Components/PrimerKlarnaPaymentView.tsx +2 -4
  258. package/src/HeadlessUniversalCheckout/Managers/AssetsManager.ts +68 -69
  259. package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/AchManager.ts +127 -131
  260. package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/AchMandateManager.ts +23 -25
  261. package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/ComponentWithRedirectManager.ts +21 -30
  262. package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/KlarnaManager.ts +137 -141
  263. package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/NativeUIManager.ts +17 -18
  264. package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.ts +158 -142
  265. package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/Utils/EventType.ts +7 -7
  266. package/src/HeadlessUniversalCheckout/Managers/VaultManager.ts +96 -87
  267. package/src/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.ts +159 -170
  268. package/src/HeadlessUniversalCheckout/RNPrimerHeadlessUniversalCheckout.ts +2 -6
  269. package/src/HeadlessUniversalCheckout/types.ts +5 -5
  270. package/src/Primer.ts +60 -57
  271. package/src/RNPrimer.ts +53 -54
  272. package/src/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.tsx +1 -1
  273. package/src/index.tsx +74 -37
  274. package/src/models/IssuingBank.ts +5 -5
  275. package/src/models/NamedComponentStep.ts +5 -5
  276. package/src/models/NamedComponentValidatableData.ts +5 -5
  277. package/src/models/PrimerCheckoutAdditionalInfo.ts +18 -23
  278. package/src/models/PrimerCheckoutData.ts +8 -8
  279. package/src/models/PrimerCheckoutPaymentMethodData.ts +6 -6
  280. package/src/models/PrimerClientSession.ts +34 -34
  281. package/src/models/PrimerComponentDataValidation.ts +33 -33
  282. package/src/models/PrimerCountryCode.ts +1 -1
  283. package/src/models/PrimerCurrencyCode.ts +1 -1
  284. package/src/models/PrimerError.ts +7 -1
  285. package/src/models/PrimerHandlers.ts +24 -24
  286. package/src/models/PrimerHeadlessUniversalCheckoutPaymentMethod.ts +4 -4
  287. package/src/models/PrimerImplementedRNCallbacks.ts +15 -15
  288. package/src/models/PrimerInitializationData.ts +3 -3
  289. package/src/models/PrimerInputElementType.ts +9 -9
  290. package/src/models/PrimerInterfaces.ts +1 -1
  291. package/src/models/PrimerPaymentMethodManagerCategory.ts +4 -4
  292. package/src/models/PrimerPaymentMethodResource.ts +11 -11
  293. package/src/models/PrimerRawData.ts +9 -9
  294. package/src/models/PrimerSessionIntent.ts +1 -1
  295. package/src/models/PrimerSettings.ts +47 -21
  296. package/src/models/PrimerValidationError.ts +3 -3
  297. package/src/models/PrimerValidationErrorResult.ts +2 -2
  298. package/src/models/PrimerVaultedPaymentMethod.ts +7 -7
  299. package/src/models/PrimerVaultedPaymentMethodAdditionalData.ts +1 -1
  300. package/src/models/PrimerVaultedPaymentMethodResult.ts +3 -3
  301. package/src/models/RetailOutletsRetail.ts +5 -5
  302. package/src/models/ach/AchCollectableData.ts +12 -12
  303. package/src/models/ach/AchSteps.ts +18 -18
  304. package/src/models/banks/BanksCollectableData.ts +14 -14
  305. package/src/models/banks/BanksSteps.ts +13 -13
  306. package/src/models/klarna/KlarnaPaymentCategory.ts +16 -16
  307. package/src/models/klarna/KlarnaPaymentCollectableData.ts +16 -15
  308. package/src/models/klarna/KlarnaPaymentSteps.ts +21 -17
  309. package/src/utils/index.ts +1 -1
  310. package/android/src/main/java/com/primerioreactnative/components/datamodels/manager/raw/cardRedirect/PrimerRNCardRedirectData.kt +0 -19
  311. package/android/src/main/java/com/primerioreactnative/components/datamodels/manager/resource/Resources.kt +0 -138
@@ -6,278 +6,296 @@
6
6
  //
7
7
 
8
8
  import Foundation
9
- import UIKit
10
9
  import PrimerSDK
10
+ import UIKit
11
11
 
12
+ // swiftlint:disable type_name
12
13
  @objc(RNTPrimerHeadlessUniversalCheckoutKlarnaComponent)
13
14
  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
- }
15
+ // swiftlint:enable type_name
16
+
17
+ #if canImport(PrimerKlarnaSDK)
18
+ private var klarnaManager: PrimerHeadlessUniversalCheckout.KlarnaManager =
19
+ PrimerHeadlessUniversalCheckout.KlarnaManager()
20
+ #endif
21
+ var klarnaComponent: (any KlarnaComponent)?
22
+ var clientToken: String?
23
+
24
+ override class func requiresMainQueueSetup() -> Bool {
25
+ return true
26
+ }
27
+
28
+ override init() {
29
+ super.init()
30
+ }
31
+
32
+ override func supportedEvents() -> [String] {
33
+ return PrimerHeadlessUniversalCheckoutComponentEvent.allCases.compactMap({ $0.stringValue })
34
+ }
35
+
36
+ // MARK: - API
37
+
38
+ @objc
39
+ public func configure(
40
+ _ primerSessionIntent: String,
41
+ resolver: @escaping RCTPromiseResolveBlock,
42
+ rejecter: @escaping RCTPromiseRejectBlock
43
+ ) {
44
+ print("configure")
45
+
46
+ do {
47
+ guard
48
+ let sessionIntent: PrimerSessionIntent = PrimerSessionIntent(rawValue: primerSessionIntent)
49
+ else {
50
+ let err = RNTNativeError(
51
+ errorId: "native-ios",
52
+ errorDescription: "Invalid value for 'intent'.",
53
+ recoverySuggestion: "'intent' can be 'CHECKOUT' or 'VAULT'.")
54
+ throw err
55
+ }
56
+ #if canImport(PrimerKlarnaSDK)
57
+ klarnaComponent = try klarnaManager.provideKlarnaComponent(with: sessionIntent)
58
+ klarnaComponent?.stepDelegate = self
59
+ klarnaComponent?.errorDelegate = self
60
+ klarnaComponent?.validationDelegate = self
61
+ #else
62
+ let err = RNTNativeError(
63
+ errorId: "native-ios",
64
+ errorDescription: "PrimerKlarnaSDK missing",
65
+ recoverySuggestion: "Check if PrimerKlarnaSDK is included in your Podfile")
66
+
67
+ throw err
68
+ #endif
69
+
70
+ resolver(nil)
71
+ } catch {
72
+ rejecter(error.rnError["errorId"]!, error.rnError["description"], error)
70
73
  }
74
+ }
75
+
76
+ @objc
77
+ public func cleanUp(
78
+ _ resolver: RCTPromiseResolveBlock,
79
+ rejecter: RCTPromiseRejectBlock
80
+ ) {
81
+ klarnaComponent = nil
82
+ resolver(nil)
83
+ }
71
84
 
72
- @objc
73
- public func cleanUp(
74
- _ resolver: RCTPromiseResolveBlock,
75
- rejecter: RCTPromiseRejectBlock
76
- ) {
77
- klarnaComponent = nil
78
- resolver(nil)
85
+ @objc
86
+ public func start(
87
+ _ resolver: RCTPromiseResolveBlock,
88
+ rejecter: RCTPromiseRejectBlock
89
+ ) {
90
+ print("Start Klarna process")
91
+
92
+ guard let klarnaComponent = self.klarnaComponent else {
93
+ rejecter("UNINITIALIZED_ERROR", "Klarna component is uninitialized", nil)
94
+ return
79
95
  }
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)
96
+
97
+ klarnaComponent.start()
98
+ resolver(nil)
99
+ }
100
+
101
+ @objc
102
+ public func submit(
103
+ _ resolver: RCTPromiseResolveBlock,
104
+ rejecter: RCTPromiseRejectBlock
105
+ ) {
106
+ guard let klarnaComponent = self.klarnaComponent else {
107
+ rejecter("UNINITIALIZED_ERROR", "Klarna component is uninitialized", nil)
108
+ return
95
109
  }
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)
110
+
111
+ klarnaComponent.submit()
112
+ resolver(nil)
113
+ }
114
+
115
+ @objc
116
+ public func onSetPaymentOptions(
117
+ _ paymentOptions: NSDictionary,
118
+ resolver: RCTPromiseResolveBlock,
119
+ rejecter: RCTPromiseRejectBlock
120
+ ) {
121
+ guard let paymentCategoryDict = paymentOptions["paymentCategory"] as? NSDictionary else {
122
+ rejecter("error", "paymentCategory is missing or not a dictionary", nil)
123
+ return
109
124
  }
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)
125
+
126
+ guard let klarnaPaymentCategory = getDecodedKlarnaPaymentCategory(paymentCategoryDict) else {
127
+ rejecter("error", "Failed to parse paymentCategory", nil)
128
+ return
137
129
  }
138
-
139
- @objc
140
- public func onFinalizePayment(
141
- _ resolver: RCTPromiseResolveBlock,
142
- rejecter: RCTPromiseRejectBlock
143
- ) {
144
- klarnaComponent?.updateCollectedData(collectableData: KlarnaCollectableData.finalizePayment)
145
- resolver(nil)
130
+
131
+ guard let klarnaComponent = self.klarnaComponent else {
132
+ rejecter("UNINITIALIZED_ERROR", "Klarna component is uninitialized", nil)
133
+ return
146
134
  }
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
135
+
136
+ DispatchQueue.main.async {
137
+ klarnaComponent.updateCollectedData(
138
+ collectableData: KlarnaCollectableData.paymentCategory(
139
+ klarnaPaymentCategory, clientToken: self.clientToken)
140
+ )
153
141
  }
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
142
+
143
+ resolver(nil)
144
+ }
145
+
146
+ @objc
147
+ public func onFinalizePayment(
148
+ _ resolver: RCTPromiseResolveBlock,
149
+ rejecter: RCTPromiseRejectBlock
150
+ ) {
151
+ klarnaComponent?.updateCollectedData(collectableData: KlarnaCollectableData.finalizePayment)
152
+ resolver(nil)
153
+ }
154
+
155
+ private func getDecodedKlarnaPaymentCategory(_ dictionary: NSDictionary) -> KlarnaPaymentCategory? {
156
+ let transformedDictionary = transformKey(for: dictionary)
157
+ guard
158
+ let jsonData = try? JSONSerialization.data(withJSONObject: transformedDictionary, options: [])
159
+ else { return nil }
160
+ let paymentCategory = try? JSONDecoder().decode(KlarnaPaymentCategory.self, from: jsonData)
161
+ return paymentCategory
162
+ }
163
+
164
+ private func transformKey(for dictionary: NSDictionary) -> [String: Any] {
165
+ let transformedDictionary = dictionary.reduce(into: [String: Any]()) { (result, element) in
166
+ // Check if the current key is "identifier" and change it to "id", otherwise keep the original key
167
+ let key: String =
168
+ (element.key as? String) == "identifier" ? "id" : (element.key as? String) ?? ""
169
+ result[key] = element.value
163
170
  }
171
+
172
+ return transformedDictionary
173
+ }
164
174
  }
165
175
 
166
176
  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
-
177
+ func didReceiveStep(step: PrimerSDK.PrimerHeadlessStep) {
178
+ guard let step = step as? KlarnaStep else { return }
179
+
180
+ switch step {
181
+ case .paymentSessionCreated(let clientToken, let categories):
182
+ self.clientToken = clientToken
183
+ let rnSessionCreated = try? step.toPaymentSessionCreatedRN(categories: categories)
184
+ .toJsonObject()
185
+
186
+ sendEvent(
187
+ withName: PrimerHeadlessUniversalCheckoutComponentEvent.onStep.stringValue,
188
+ body: rnSessionCreated
189
+ )
190
+
191
+ case .paymentSessionAuthorized(_, let checkoutData):
192
+ let rnSessionAuthorized = try? step.toPaymentSessionAuthorizedRN(isFinalized: true)
193
+ .toJsonObject()
194
+
195
+ sendEvent(
196
+ withName: PrimerHeadlessUniversalCheckoutComponentEvent.onStep.stringValue,
197
+ body: rnSessionAuthorized
198
+ )
199
+
200
+ DispatchQueue.main.async {
201
+ PrimerHeadlessUniversalCheckout.current.delegate?
202
+ .primerHeadlessUniversalCheckoutDidCompleteCheckoutWithData(checkoutData)
203
+ }
204
+
205
+ case .paymentSessionFinalizationRequired:
206
+ let rnSessionAuthorized = try? step.toPaymentSessionAuthorizedRN(isFinalized: false)
207
+ .toJsonObject()
208
+
209
+ sendEvent(
210
+ withName: PrimerHeadlessUniversalCheckoutComponentEvent.onStep.stringValue,
211
+ body: rnSessionAuthorized
212
+ )
213
+
214
+ case .paymentSessionFinalized(_, let checkoutData):
215
+ let rnSessionFinalized = try? step.toPaymentSessionFinalizedRN().toJsonObject()
216
+
217
+ sendEvent(
218
+ withName: PrimerHeadlessUniversalCheckoutComponentEvent.onStep.stringValue,
219
+ body: rnSessionFinalized
220
+ )
221
+
222
+ DispatchQueue.main.async {
223
+ PrimerHeadlessUniversalCheckout.current.delegate?
224
+ .primerHeadlessUniversalCheckoutDidCompleteCheckoutWithData(checkoutData)
225
+ }
226
+
227
+ case .viewLoaded(let view):
228
+ DispatchQueue.main.async {
229
+ RNTPrimerKlarnaPaymentViewManager.updatePrimerKlarnaPaymentView(view)
230
+ }
231
+
232
+ let rnPaymentViewLoaded = try? step.toPaymentViewLoadedRN().toJsonObject()
233
+
234
+ sendEvent(
235
+ withName: PrimerHeadlessUniversalCheckoutComponentEvent.onStep.stringValue,
236
+ body: rnPaymentViewLoaded
237
+ )
238
+
239
+ default:
240
+ break
229
241
  }
242
+
243
+ }
230
244
  }
231
245
 
246
+ // swiftlint:disable todo
232
247
  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() // TODO TWS iOS: include 'data'
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() // TODO TWS iOS: include 'data'
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)
248
+ func didUpdate(
249
+ validationStatus: PrimerSDK.PrimerValidationStatus, for data: PrimerSDK.PrimerCollectableData?
250
+ ) {
251
+ guard let data = data as? KlarnaCollectableData else { return }
252
+
253
+ let eventName: String
254
+ switch validationStatus {
255
+ case .valid:
256
+ eventName = PrimerHeadlessUniversalCheckoutComponentEvent.onValid.stringValue
257
+ case .validating:
258
+ eventName = PrimerHeadlessUniversalCheckoutComponentEvent.onValidating.stringValue
259
+ case .invalid(let errors):
260
+ let rnErrors = errors.map { $0.toPrimerValidationErrorRN() }
261
+ let serializedData = try? ["errors": rnErrors].toJsonObject() // TODO TWS iOS: include 'data'
262
+
263
+ self.sendEvent(
264
+ withName: PrimerHeadlessUniversalCheckoutComponentEvent.onInvalid.stringValue,
265
+ body: serializedData)
266
+ return
267
+ case .error(let error):
268
+ let rnError = error.toPrimerErrorRN()
269
+ let serializedData = try? ["errors": [rnError]].toJsonObject() // TODO TWS iOS: include 'data'
270
+
271
+ self.sendEvent(
272
+ withName: PrimerHeadlessUniversalCheckoutComponentEvent.onValidationError.stringValue,
273
+ body: serializedData)
274
+ return
275
+ }
276
+
277
+ var serializedData: Any?
278
+ switch data {
279
+ case .paymentCategory(let category, _):
280
+ let rnPaymentCategory = data.toKlarnaPaymentOptionsRN(category: category)
281
+ serializedData = try? ["data": rnPaymentCategory].toJsonObject()
282
+ case .finalizePayment:
283
+ let rnFinalizePayment = data.toFinalizePaymentRN()
284
+ serializedData = try? ["data": rnFinalizePayment].toJsonObject()
271
285
  }
286
+
287
+ sendEvent(withName: eventName, body: serializedData)
288
+ }
272
289
  }
290
+ // swiftlint:enable todo
273
291
 
274
292
  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
- }
293
+ func didReceiveError(error: PrimerSDK.PrimerError) {
294
+ let rnError = error.toPrimerErrorRN()
295
+ let serializedData = try? ["errors": [rnError]].toJsonObject()
296
+
297
+ self.sendEvent(
298
+ withName: PrimerHeadlessUniversalCheckoutComponentEvent.onError.stringValue,
299
+ body: serializedData)
300
+ }
283
301
  }