@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
@@ -1,17 +1,17 @@
1
1
  package com.primerioreactnative.components.events
2
2
 
3
3
  internal enum class PrimerHeadlessUniversalCheckoutEvent(val eventName: String) {
4
- ON_AVAILABLE_PAYMENT_METHODS_LOAD("onAvailablePaymentMethodsLoad"),
5
- ON_PREPARE_START("onPreparationStart"),
6
- ON_PAYMENT_METHOD_SHOW("onPaymentMethodShow"),
7
- ON_TOKENIZE_START("onTokenizationStart"),
8
- ON_CHECKOUT_COMPLETE("onCheckoutComplete"),
9
- ON_CHECKOUT_PENDING("onCheckoutPending"),
10
- ON_BEFORE_CLIENT_SESSION_UPDATE("onBeforeClientSessionUpdate"),
11
- ON_CLIENT_SESSION_UPDATE("onClientSessionUpdate"),
12
- ON_BEFORE_PAYMENT_CREATE("onBeforePaymentCreate"),
13
- ON_TOKENIZE_SUCCESS("onTokenizationSuccess"),
14
- ON_CHECKOUT_SUCCESS("onCheckoutResume"),
15
- ON_CHECKOUT_ADDITIONAL_INFO("onCheckoutAdditionalInfo"),
16
- ON_ERROR("onError"),
4
+ ON_AVAILABLE_PAYMENT_METHODS_LOAD("onAvailablePaymentMethodsLoad"),
5
+ ON_PREPARE_START("onPreparationStart"),
6
+ ON_PAYMENT_METHOD_SHOW("onPaymentMethodShow"),
7
+ ON_TOKENIZE_START("onTokenizationStart"),
8
+ ON_CHECKOUT_COMPLETE("onCheckoutComplete"),
9
+ ON_CHECKOUT_PENDING("onCheckoutPending"),
10
+ ON_BEFORE_CLIENT_SESSION_UPDATE("onBeforeClientSessionUpdate"),
11
+ ON_CLIENT_SESSION_UPDATE("onClientSessionUpdate"),
12
+ ON_BEFORE_PAYMENT_CREATE("onBeforePaymentCreate"),
13
+ ON_TOKENIZE_SUCCESS("onTokenizationSuccess"),
14
+ ON_CHECKOUT_SUCCESS("onCheckoutResume"),
15
+ ON_CHECKOUT_ADDITIONAL_INFO("onCheckoutAdditionalInfo"),
16
+ ON_ERROR("onError"),
17
17
  }
@@ -1,6 +1,6 @@
1
1
  package com.primerioreactnative.components.events
2
2
 
3
3
  internal enum class PrimerHeadlessUniversalCheckoutRawDataManagerEvent(val eventName: String) {
4
- ON_METADATA_CHANGED("onMetadataChange"),
5
- ON_VALIDATION_CHANGED("onValidation"),
4
+ ON_METADATA_CHANGED("onMetadataChange"),
5
+ ON_VALIDATION_CHANGED("onValidation"),
6
6
  }
@@ -13,7 +13,7 @@ class NativeViewContainer(private val context: ThemedReactContext) : FrameLayout
13
13
  ?: run {
14
14
  Log.e(
15
15
  "NativeViewContainer",
16
- "Unable to find parent of NativeViewContainer."
16
+ "Unable to find parent of NativeViewContainer.",
17
17
  )
18
18
  }
19
19
  }
@@ -25,11 +25,12 @@ class NativeViewContainer(private val context: ThemedReactContext) : FrameLayout
25
25
  post(mLayoutRunnable)
26
26
  }
27
27
 
28
- private val mLayoutRunnable = Runnable {
29
- measure(
30
- MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
31
- MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)
32
- )
33
- layout(left, top, right, bottom)
34
- }
28
+ private val mLayoutRunnable =
29
+ Runnable {
30
+ measure(
31
+ MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
32
+ MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY),
33
+ )
34
+ layout(left, top, right, bottom)
35
+ }
35
36
  }
@@ -11,7 +11,7 @@ import com.primerioreactnative.utils.errorTo
11
11
  import kotlinx.coroutines.launch
12
12
 
13
13
  class PrimerRNAchMandateManager(
14
- private val reactContext: ReactApplicationContext,
14
+ private val reactContext: ReactApplicationContext,
15
15
  ) : ReactContextBaseJavaModule(reactContext) {
16
16
  override fun getName() = "RNTAchMandateManager"
17
17
 
@@ -19,15 +19,19 @@ class PrimerRNAchMandateManager(
19
19
  fun acceptMandate(promise: Promise) {
20
20
  executeMandateAction(promise, PrimerRNAchMandateManager.Companion.acceptMandate, UNITIALIZED_ACCEPT_MANDATE)
21
21
  }
22
-
22
+
23
23
  @ReactMethod
24
24
  fun declineMandate(promise: Promise) {
25
25
  executeMandateAction(promise, PrimerRNAchMandateManager.Companion.declineMandate, UNITIALIZED_DECLINE_MANDATE)
26
26
  }
27
-
28
- private fun executeMandateAction(promise: Promise, action: (suspend () -> Unit)?, error: String) {
27
+
28
+ private fun executeMandateAction(
29
+ promise: Promise,
30
+ action: (suspend () -> Unit)?,
31
+ error: String,
32
+ ) {
29
33
  val lifecycleScope = getLifecycleScopeOrNull()
30
-
34
+
31
35
  if (lifecycleScope == null) {
32
36
  val exception = ErrorTypeRN.NativeBridgeFailed errorTo UNSUPPORTED_ACTIVITY_ERROR
33
37
  promise.reject(exception.errorId, exception.description)
@@ -44,27 +48,26 @@ class PrimerRNAchMandateManager(
44
48
  }
45
49
  }
46
50
 
47
- private fun getLifecycleScopeOrNull() =
48
- (reactContext.currentActivity as? LifecycleOwner)?.lifecycleScope
51
+ private fun getLifecycleScopeOrNull() = (reactContext.currentActivity as? LifecycleOwner)?.lifecycleScope
49
52
 
50
53
  companion object {
51
54
  var acceptMandate: (suspend () -> Unit)? = null
52
55
  var declineMandate: (suspend () -> Unit)? = null
53
56
 
54
57
  val UNSUPPORTED_ACTIVITY_ERROR =
55
- """
56
- Unsupported activity type.
57
- Make sure your root activity extends LifecycleOwner.
58
- """.trimIndent()
58
+ """
59
+ Unsupported activity type.
60
+ Make sure your root activity extends LifecycleOwner.
61
+ """.trimIndent()
59
62
 
60
63
  val UNITIALIZED_ACCEPT_MANDATE =
61
- """
62
- Unitialized 'acceptMandate' property.
63
- """.trimIndent()
64
+ """
65
+ Unitialized 'acceptMandate' property.
66
+ """.trimIndent()
64
67
 
65
68
  val UNITIALIZED_DECLINE_MANDATE =
66
- """
67
- Unitialized 'declineMandate' property.
68
- """.trimIndent()
69
+ """
70
+ Unitialized 'declineMandate' property.
71
+ """.trimIndent()
69
72
  }
70
73
  }
@@ -4,36 +4,29 @@ import androidx.activity.ComponentActivity
4
4
  import androidx.lifecycle.LifecycleOwner
5
5
  import androidx.lifecycle.ViewModelStoreOwner
6
6
  import androidx.lifecycle.lifecycleScope
7
- import com.facebook.react.bridge.Arguments
8
7
  import com.facebook.react.bridge.Promise
9
8
  import com.facebook.react.bridge.ReactApplicationContext
10
9
  import com.facebook.react.bridge.ReactContextBaseJavaModule
11
10
  import com.facebook.react.bridge.ReactMethod
12
- import com.facebook.react.bridge.WritableArray
13
- import com.facebook.react.bridge.WritableMap
14
11
  import com.facebook.react.modules.core.DeviceEventManagerModule
15
12
  import com.primerioreactnative.PrimerRNViewModelStoreOwner
16
13
  import com.primerioreactnative.components.events.PrimerHeadlessUniversalCheckoutComponentEvent
17
14
  import com.primerioreactnative.datamodels.ErrorTypeRN
18
- import com.primerioreactnative.datamodels.PrimerValidationErrorRN
19
- import com.primerioreactnative.datamodels.extensions.ach.toUserDetailsCollectedRN
20
15
  import com.primerioreactnative.datamodels.extensions.ach.toEmailAddressRN
21
16
  import com.primerioreactnative.datamodels.extensions.ach.toFirstNameRN
22
17
  import com.primerioreactnative.datamodels.extensions.ach.toLastNameRN
18
+ import com.primerioreactnative.datamodels.extensions.ach.toUserDetailsCollectedRN
23
19
  import com.primerioreactnative.datamodels.extensions.ach.toUserDetailsRetrievedRN
24
- import com.primerioreactnative.utils.convertJsonToArray
25
- import com.primerioreactnative.utils.convertJsonToMap
20
+ import com.primerioreactnative.extensions.putErrors
21
+ import com.primerioreactnative.extensions.putValidationErrors
26
22
  import com.primerioreactnative.utils.errorTo
23
+ import com.primerioreactnative.utils.toWritableArray
24
+ import com.primerioreactnative.utils.toWritableMap
27
25
  import io.primer.android.components.ach.PrimerHeadlessUniversalCheckoutAchManager
28
26
  import io.primer.android.components.manager.core.composable.PrimerValidationStatus
29
27
  import io.primer.android.stripe.ach.api.component.StripeAchUserDetailsComponent
30
28
  import io.primer.android.stripe.ach.api.composable.AchUserDetailsCollectableData
31
29
  import io.primer.android.stripe.ach.api.composable.AchUserDetailsStep
32
- import io.primer.android.domain.error.models.PrimerError
33
- import com.primerioreactnative.utils.toWritableArray
34
- import com.primerioreactnative.utils.toWritableMap
35
- import com.primerioreactnative.extensions.putErrors
36
- import com.primerioreactnative.extensions.putValidationErrors
37
30
  import kotlinx.coroutines.Job
38
31
  import kotlinx.coroutines.coroutineScope
39
32
  import kotlinx.coroutines.flow.collectLatest
@@ -42,242 +35,264 @@ import kotlinx.serialization.encodeToString
42
35
  import kotlinx.serialization.json.Json
43
36
  import org.json.JSONArray
44
37
  import org.json.JSONObject
45
- import android.util.Log
46
38
 
39
+ @Suppress("TooManyFunctions")
47
40
  class PrimerRNHeadlessUniversalCheckoutStripeAchUserDetailsComponent(
48
41
  private val reactContext: ReactApplicationContext,
49
42
  ) : ReactContextBaseJavaModule(reactContext) {
50
- override fun getName() = "RNTPrimerHeadlessUniversalCheckoutStripeAchUserDetailsComponent"
43
+ override fun getName() = "RNTPrimerHeadlessUniversalCheckoutStripeAchUserDetailsComponent"
51
44
 
52
- private var job: Job? = null
53
- private var viewModelStoreOwner: ViewModelStoreOwner? = null
54
- private var component: StripeAchUserDetailsComponent? = null
45
+ private var job: Job? = null
46
+ private var viewModelStoreOwner: ViewModelStoreOwner? = null
47
+ private var component: StripeAchUserDetailsComponent? = null
55
48
 
56
- @ReactMethod
57
- fun configure(promise: Promise) {
58
- val currentViewModelStoreOwner =
59
- reactContext.currentActivity as? ViewModelStoreOwner
60
- ?: run { PrimerRNViewModelStoreOwner() }
49
+ @ReactMethod
50
+ fun configure(promise: Promise) {
51
+ val currentViewModelStoreOwner =
52
+ reactContext.currentActivity as? ViewModelStoreOwner
53
+ ?: run { PrimerRNViewModelStoreOwner() }
61
54
 
62
- val activity = reactContext.currentActivity as? ComponentActivity
55
+ val activity = reactContext.currentActivity as? ComponentActivity
63
56
 
64
- if (activity == null) {
65
- val exception = ErrorTypeRN.NativeBridgeFailed errorTo UNSUPPORTED_ACTIVITY_ERROR
66
- promise.reject(exception.errorId, exception.description)
67
- return
68
- }
57
+ if (activity == null) {
58
+ val exception = ErrorTypeRN.NativeBridgeFailed errorTo UNSUPPORTED_ACTIVITY_ERROR
59
+ promise.reject(exception.errorId, exception.description)
60
+ return
61
+ }
69
62
 
70
- viewModelStoreOwner = currentViewModelStoreOwner
63
+ viewModelStoreOwner = currentViewModelStoreOwner
71
64
 
72
- runCatching {
73
- PrimerHeadlessUniversalCheckoutAchManager(currentViewModelStoreOwner)
74
- .provide<StripeAchUserDetailsComponent>("STRIPE_ACH")
75
- }
76
- .onSuccess { component = it }
77
- .onFailure {
78
- val exception = ErrorTypeRN.NativeBridgeFailed errorTo "$INITIALIZATION_ERROR: ${it.message}"
79
- promise.reject(exception.errorId, exception.description)
80
- return
81
- }
65
+ runCatching {
66
+ PrimerHeadlessUniversalCheckoutAchManager(currentViewModelStoreOwner)
67
+ .provide<StripeAchUserDetailsComponent>("STRIPE_ACH")
68
+ }
69
+ .onSuccess { component = it }
70
+ .onFailure {
71
+ val exception = ErrorTypeRN.NativeBridgeFailed errorTo "$INITIALIZATION_ERROR: ${it.message}"
72
+ promise.reject(exception.errorId, exception.description)
73
+ return
74
+ }
82
75
 
83
- val lifecycleScope = (activity as LifecycleOwner).lifecycleScope
76
+ val lifecycleScope = (activity as LifecycleOwner).lifecycleScope
84
77
 
85
- job =
86
- lifecycleScope.launch {
87
- coroutineScope {
88
- launch { configureStepListener() }
78
+ job =
79
+ lifecycleScope.launch {
80
+ coroutineScope {
81
+ launch { configureStepListener() }
89
82
 
90
- launch { configureValidationListener() }
83
+ launch { configureValidationListener() }
84
+
85
+ launch { configureErrorListener() }
86
+ promise.resolve(null)
87
+ }
88
+ }
89
+ }
91
90
 
92
- launch { configureErrorListener() }
91
+ @ReactMethod
92
+ fun start(promise: Promise) {
93
+ if (component == null) {
94
+ val exception = ErrorTypeRN.NativeBridgeFailed errorTo UNINITIALIZED_ERROR
95
+ promise.reject(exception.errorId, exception.description)
96
+ } else {
97
+ component?.start()
93
98
  promise.resolve(null)
94
- }
95
99
  }
96
- }
97
-
98
- @ReactMethod
99
- fun start(promise: Promise) {
100
- if (component == null) {
101
- val exception = ErrorTypeRN.NativeBridgeFailed errorTo UNINITIALIZED_ERROR
102
- promise.reject(exception.errorId, exception.description)
103
- } else {
104
- component?.start()
105
- promise.resolve(null)
106
- }
107
- }
108
-
109
- @ReactMethod
110
- fun submit(promise: Promise) {
111
- if (component == null) {
112
- val exception = ErrorTypeRN.NativeBridgeFailed errorTo UNINITIALIZED_ERROR
113
- promise.reject(exception.errorId, exception.description)
114
- } else {
115
- component?.submit()
116
- promise.resolve(null)
117
- }
118
- }
119
-
120
- @ReactMethod
121
- fun onSetFirstName(firstName: String, promise: Promise) {
122
- if (component == null) {
123
- val exception = ErrorTypeRN.NativeBridgeFailed errorTo UNINITIALIZED_ERROR
124
- promise.reject(exception.errorId, exception.description)
125
- } else {
126
- component?.updateCollectedData(AchUserDetailsCollectableData.FirstName(firstName))
127
- promise.resolve(null)
128
- }
129
- }
130
-
131
- @ReactMethod
132
- fun onSetLastName(lastName: String, promise: Promise) {
133
- if (component == null) {
134
- val exception = ErrorTypeRN.NativeBridgeFailed errorTo UNINITIALIZED_ERROR
135
- promise.reject(exception.errorId, exception.description)
136
- } else {
137
- component?.updateCollectedData(AchUserDetailsCollectableData.LastName(lastName))
138
- promise.resolve(null)
139
100
  }
140
- }
141
-
142
- @ReactMethod
143
- fun onSetEmailAddress(emailAddress: String, promise: Promise) {
144
- if (component == null) {
145
- val exception = ErrorTypeRN.NativeBridgeFailed errorTo UNINITIALIZED_ERROR
146
- promise.reject(exception.errorId, exception.description)
147
- } else {
148
- component?.updateCollectedData(AchUserDetailsCollectableData.EmailAddress(emailAddress))
149
- promise.resolve(null)
150
- }
151
- }
152
-
153
- private suspend fun configureErrorListener() {
154
- component?.componentError?.collectLatest { error ->
155
- sendEvent(
156
- PrimerHeadlessUniversalCheckoutComponentEvent.ON_ERROR.eventName,
157
- JSONObject().apply { putErrors(error) }
158
- )
159
- }
160
- }
161
-
162
- private suspend fun configureStepListener() {
163
- component?.componentStep?.collectLatest { step ->
164
- when (step) {
165
- is AchUserDetailsStep.UserDetailsRetrieved -> {
166
- sendEvent(
167
- PrimerHeadlessUniversalCheckoutComponentEvent.ON_STEP.eventName,
168
- JSONObject(json.encodeToString(step.toUserDetailsRetrievedRN()))
169
- )
101
+
102
+ @ReactMethod
103
+ fun submit(promise: Promise) {
104
+ if (component == null) {
105
+ val exception = ErrorTypeRN.NativeBridgeFailed errorTo UNINITIALIZED_ERROR
106
+ promise.reject(exception.errorId, exception.description)
107
+ } else {
108
+ component?.submit()
109
+ promise.resolve(null)
170
110
  }
171
- is AchUserDetailsStep.UserDetailsCollected -> {
172
- sendEvent(
173
- PrimerHeadlessUniversalCheckoutComponentEvent.ON_STEP.eventName,
174
- JSONObject(json.encodeToString(step.toUserDetailsCollectedRN()))
175
- )
111
+ }
112
+
113
+ @ReactMethod
114
+ fun onSetFirstName(
115
+ firstName: String,
116
+ promise: Promise,
117
+ ) {
118
+ if (component == null) {
119
+ val exception = ErrorTypeRN.NativeBridgeFailed errorTo UNINITIALIZED_ERROR
120
+ promise.reject(exception.errorId, exception.description)
121
+ } else {
122
+ component?.updateCollectedData(AchUserDetailsCollectableData.FirstName(firstName))
123
+ promise.resolve(null)
176
124
  }
177
- }
178
125
  }
179
- }
180
-
181
- private suspend fun configureValidationListener() {
182
- component?.componentValidationStatus?.collectLatest { validationStatus ->
183
- when (validationStatus) {
184
- is PrimerValidationStatus.Validating -> {
185
- sendEvent(
186
- PrimerHeadlessUniversalCheckoutComponentEvent.ON_VALIDATING.eventName,
187
- JSONObject().apply {
188
- putData(validationStatus.collectableData as AchUserDetailsCollectableData)
189
- }
190
- )
126
+
127
+ @ReactMethod
128
+ fun onSetLastName(
129
+ lastName: String,
130
+ promise: Promise,
131
+ ) {
132
+ if (component == null) {
133
+ val exception = ErrorTypeRN.NativeBridgeFailed errorTo UNINITIALIZED_ERROR
134
+ promise.reject(exception.errorId, exception.description)
135
+ } else {
136
+ component?.updateCollectedData(AchUserDetailsCollectableData.LastName(lastName))
137
+ promise.resolve(null)
191
138
  }
192
- is PrimerValidationStatus.Invalid -> {
193
- sendEvent(
194
- PrimerHeadlessUniversalCheckoutComponentEvent.ON_IN_VALID.eventName,
195
- JSONObject().apply {
196
- putData(validationStatus.collectableData as AchUserDetailsCollectableData)
197
- putValidationErrors(validationStatus.validationErrors)
198
- }
199
- )
139
+ }
140
+
141
+ @ReactMethod
142
+ fun onSetEmailAddress(
143
+ emailAddress: String,
144
+ promise: Promise,
145
+ ) {
146
+ if (component == null) {
147
+ val exception = ErrorTypeRN.NativeBridgeFailed errorTo UNINITIALIZED_ERROR
148
+ promise.reject(exception.errorId, exception.description)
149
+ } else {
150
+ component?.updateCollectedData(AchUserDetailsCollectableData.EmailAddress(emailAddress))
151
+ promise.resolve(null)
200
152
  }
201
- is PrimerValidationStatus.Valid -> {
202
- sendEvent(
203
- PrimerHeadlessUniversalCheckoutComponentEvent.ON_VALID.eventName,
204
- JSONObject().apply {
205
- putData(validationStatus.collectableData as AchUserDetailsCollectableData)
206
- }
207
- )
153
+ }
154
+
155
+ private suspend fun configureErrorListener() {
156
+ component?.componentError?.collectLatest { error ->
157
+ sendEvent(
158
+ PrimerHeadlessUniversalCheckoutComponentEvent.ON_ERROR.eventName,
159
+ JSONObject().apply { putErrors(error) },
160
+ )
208
161
  }
209
- is PrimerValidationStatus.Error -> {
210
- sendEvent(
211
- PrimerHeadlessUniversalCheckoutComponentEvent.ON_VALIDATION_ERROR.eventName,
212
- JSONObject().apply {
213
- putData(validationStatus.collectableData as AchUserDetailsCollectableData)
214
- putErrors(validationStatus.error)
215
- }
216
- )
162
+ }
163
+
164
+ private suspend fun configureStepListener() {
165
+ component?.componentStep?.collectLatest { step ->
166
+ when (step) {
167
+ is AchUserDetailsStep.UserDetailsRetrieved -> {
168
+ sendEvent(
169
+ PrimerHeadlessUniversalCheckoutComponentEvent.ON_STEP.eventName,
170
+ JSONObject(json.encodeToString(step.toUserDetailsRetrievedRN())),
171
+ )
172
+ }
173
+
174
+ is AchUserDetailsStep.UserDetailsCollected -> {
175
+ sendEvent(
176
+ PrimerHeadlessUniversalCheckoutComponentEvent.ON_STEP.eventName,
177
+ JSONObject(json.encodeToString(step.toUserDetailsCollectedRN())),
178
+ )
179
+ }
180
+ }
217
181
  }
218
- }
219
182
  }
220
- }
221
-
222
- private fun JSONObject.putData(collectableData: AchUserDetailsCollectableData) {
223
- put(
224
- "data",
225
- JSONObject(
226
- json.encodeToString(
227
- when (collectableData) {
228
- is AchUserDetailsCollectableData.FirstName ->
229
- collectableData.toFirstNameRN()
230
- is AchUserDetailsCollectableData.LastName -> collectableData.toLastNameRN()
231
- is AchUserDetailsCollectableData.EmailAddress ->
232
- collectableData.toEmailAddressRN()
183
+
184
+ private suspend fun configureValidationListener() {
185
+ component?.componentValidationStatus?.collectLatest { validationStatus ->
186
+ when (validationStatus) {
187
+ is PrimerValidationStatus.Validating -> {
188
+ sendEvent(
189
+ PrimerHeadlessUniversalCheckoutComponentEvent.ON_VALIDATING.eventName,
190
+ JSONObject().apply {
191
+ putData(validationStatus.collectableData as AchUserDetailsCollectableData)
192
+ },
193
+ )
233
194
  }
234
- )
195
+
196
+ is PrimerValidationStatus.Invalid -> {
197
+ sendEvent(
198
+ PrimerHeadlessUniversalCheckoutComponentEvent.ON_IN_VALID.eventName,
199
+ JSONObject().apply {
200
+ putData(validationStatus.collectableData as AchUserDetailsCollectableData)
201
+ putValidationErrors(validationStatus.validationErrors)
202
+ },
203
+ )
204
+ }
205
+
206
+ is PrimerValidationStatus.Valid -> {
207
+ sendEvent(
208
+ PrimerHeadlessUniversalCheckoutComponentEvent.ON_VALID.eventName,
209
+ JSONObject().apply {
210
+ putData(validationStatus.collectableData as AchUserDetailsCollectableData)
211
+ },
212
+ )
213
+ }
214
+
215
+ is PrimerValidationStatus.Error -> {
216
+ sendEvent(
217
+ PrimerHeadlessUniversalCheckoutComponentEvent.ON_VALIDATION_ERROR.eventName,
218
+ JSONObject().apply {
219
+ putData(validationStatus.collectableData as AchUserDetailsCollectableData)
220
+ putErrors(validationStatus.error)
221
+ },
222
+ )
223
+ }
224
+ }
225
+ }
226
+ }
227
+
228
+ private fun JSONObject.putData(collectableData: AchUserDetailsCollectableData) {
229
+ put(
230
+ "data",
231
+ JSONObject(
232
+ json.encodeToString(
233
+ when (collectableData) {
234
+ is AchUserDetailsCollectableData.FirstName ->
235
+ collectableData.toFirstNameRN()
236
+
237
+ is AchUserDetailsCollectableData.LastName -> collectableData.toLastNameRN()
238
+ is AchUserDetailsCollectableData.EmailAddress ->
239
+ collectableData.toEmailAddressRN()
240
+ },
241
+ ),
242
+ ),
235
243
  )
236
- )
237
- }
238
-
239
- @ReactMethod fun addListener(eventName: String?) = Unit
240
-
241
- @ReactMethod fun removeListeners(count: Int?) = Unit
242
-
243
- private fun sendEvent(name: String, data: JSONObject?) {
244
- reactApplicationContext
245
- .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
246
- .emit(name, data.toWritableMap())
247
- }
248
-
249
- private fun sendEvent(name: String, data: JSONArray?) {
250
- reactApplicationContext
251
- .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
252
- .emit(name, data.toWritableArray())
253
- }
254
-
255
- @ReactMethod
256
- fun cleanUp(promise: Promise) {
257
- job?.cancel()
258
- job = null
259
- component = null
260
- viewModelStoreOwner?.viewModelStore?.clear()
261
- promise.resolve(null)
262
- }
263
-
264
- companion object {
265
- const val INITIALIZATION_ERROR = """
244
+ }
245
+
246
+ @ReactMethod
247
+ fun addListener(eventName: String?) = Unit
248
+
249
+ @ReactMethod
250
+ fun removeListeners(count: Int?) = Unit
251
+
252
+ private fun sendEvent(
253
+ name: String,
254
+ data: JSONObject?,
255
+ ) {
256
+ reactApplicationContext
257
+ .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
258
+ .emit(name, data.toWritableMap())
259
+ }
260
+
261
+ private fun sendEvent(
262
+ name: String,
263
+ data: JSONArray?,
264
+ ) {
265
+ reactApplicationContext
266
+ .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
267
+ .emit(name, data.toWritableArray())
268
+ }
269
+
270
+ @ReactMethod
271
+ fun cleanUp(promise: Promise) {
272
+ job?.cancel()
273
+ job = null
274
+ component = null
275
+ viewModelStoreOwner?.viewModelStore?.clear()
276
+ promise.resolve(null)
277
+ }
278
+
279
+ companion object {
280
+ const val INITIALIZATION_ERROR = """
266
281
  An error occurred during component initialization.
267
282
  """
268
283
 
269
- const val UNINITIALIZED_ERROR =
270
- """
284
+ const val UNINITIALIZED_ERROR =
285
+ """
271
286
  The component has not been initialized.
272
287
  Make sure you have initialized the `component` first.
273
288
  """
274
289
 
275
- const val UNSUPPORTED_ACTIVITY_ERROR =
276
- """
290
+ const val UNSUPPORTED_ACTIVITY_ERROR =
291
+ """
277
292
  Unsupported activity type.
278
293
  Make sure your root activity extends ComponentActivity.
279
294
  """
280
295
 
281
- val json = Json { encodeDefaults = true }
282
- }
296
+ val json = Json { encodeDefaults = true }
297
+ }
283
298
  }