@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
@@ -10,11 +10,14 @@ import PrimerSDK
10
10
 
11
11
  extension PrimerHeadlessUniversalCheckout.PaymentMethod {
12
12
 
13
- func toJsonObject() -> [String: Any] {
14
- return [
15
- "paymentMethodType": paymentMethodType,
16
- "supportedPrimerSessionIntents": self.supportedPrimerSessionIntents.compactMap({ $0.rawValue }),
17
- "paymentMethodManagerCategories": self.paymentMethodManagerCategories.compactMap({ $0.rawValue }).filter({ $0 != "CARD_COMPONENTS" })
18
- ]
19
- }
13
+ func toJsonObject() -> [String: Any] {
14
+ return [
15
+ "paymentMethodType": paymentMethodType,
16
+ "supportedPrimerSessionIntents": self.supportedPrimerSessionIntents.compactMap({ $0.rawValue }
17
+ ),
18
+ "paymentMethodManagerCategories": self.paymentMethodManagerCategories.compactMap({
19
+ $0.rawValue
20
+ }).filter({ $0 != "CARD_COMPONENTS" })
21
+ ]
22
+ }
20
23
  }
@@ -22,8 +22,7 @@ extension PrimerPhoneNumberData {
22
22
  return nil
23
23
  }
24
24
 
25
- if let phoneNumber = dict["phoneNumber"]
26
- {
25
+ if let phoneNumber = dict["phoneNumber"] {
27
26
  self.init(
28
27
  phoneNumber: phoneNumber)
29
28
  } else {
@@ -22,8 +22,7 @@ extension PrimerRetailerData {
22
22
  return nil
23
23
  }
24
24
 
25
- if let retailerId = dict["id"]
26
- {
25
+ if let retailerId = dict["id"] {
27
26
  self.init(
28
27
  id: retailerId)
29
28
  } else {
@@ -2,200 +2,258 @@ import PrimerSDK
2
2
 
3
3
  extension PrimerSettings {
4
4
 
5
- convenience init(settingsStr: String?) throws {
6
- if settingsStr == nil {
7
- self.init()
8
- } else {
9
- guard let settingsData = settingsStr!.data(using: .utf8) else {
10
- let err = RNTNativeError(errorId: "native-ios", errorDescription: "The value of the 'settings' object is invalid.", recoverySuggestion: "Provide a valid 'settings' object")
11
- throw err
12
- }
5
+ // swiftlint:disable function_body_length
6
+ // swiftlint:disable cyclomatic_complexity
7
+ convenience init(settingsStr: String?) throws {
8
+ if settingsStr == nil {
9
+ self.init()
10
+ } else {
11
+ guard let settingsData = settingsStr!.data(using: .utf8) else {
12
+ let err = RNTNativeError(
13
+ errorId: "native-ios",
14
+ errorDescription: "The value of the 'settings' object is invalid.",
15
+ recoverySuggestion: "Provide a valid 'settings' object"
16
+ )
17
+ throw err
18
+ }
13
19
 
14
- let settingsJson = try JSONSerialization.jsonObject(with: settingsData)
20
+ let settingsJson = try JSONSerialization.jsonObject(with: settingsData)
15
21
 
16
- guard let settingsJson = settingsJson as? [String: Any] else {
17
- let err = RNTNativeError(errorId: "native-ios", errorDescription: "The 'settings' object is not a valid JSON", recoverySuggestion: "Provide a valid 'settings' object")
18
- throw err
19
- }
22
+ guard let settingsJson = settingsJson as? [String: Any] else {
23
+ let err = RNTNativeError(
24
+ errorId: "native-ios",
25
+ errorDescription: "The 'settings' object is not a valid JSON",
26
+ recoverySuggestion: "Provide a valid 'settings' object"
27
+ )
28
+ throw err
29
+ }
20
30
 
21
- var paymentHandling: PrimerPaymentHandling = .auto
22
- if let rnPaymentHandling = settingsJson["paymentHandling"] as? String,
23
- rnPaymentHandling == "MANUAL" {
24
- paymentHandling = .manual
25
- }
31
+ var paymentHandling: PrimerPaymentHandling = .auto
32
+ if let rnPaymentHandling = settingsJson["paymentHandling"] as? String,
33
+ rnPaymentHandling == "MANUAL" {
34
+ paymentHandling = .manual
35
+ }
26
36
 
27
- let rnLocaleDataLanguageCode = (settingsJson["localeData"] as? [String: Any])?["languageCode"] as? String
28
- let rnLocaleDataLocaleCode = (settingsJson["localeData"] as? [String: Any])?["localeCode"] as? String
29
- let localeData = PrimerLocaleData(
30
- languageCode: rnLocaleDataLanguageCode,
31
- regionCode: rnLocaleDataLocaleCode)
32
-
33
- let rnUrlScheme = ((settingsJson["paymentMethodOptions"] as? [String: Any])?["iOS"] as? [String: Any])?["urlScheme"] as? String
34
-
35
- var applePayOptions: PrimerApplePayOptions?
36
- if let rnApplePayOptions = ((settingsJson["paymentMethodOptions"] as? [String: Any])?["applePayOptions"] as? [String: Any]),
37
- let rnApplePayMerchantIdentifier = rnApplePayOptions["merchantIdentifier"] as? String
38
- {
39
- let rnApplePayMerchantName = rnApplePayOptions["merchantName"] as? String
40
- let rnApplePayIsCaptureBillingAddressEnabled = (rnApplePayOptions["isCaptureBillingAddressEnabled"] as? Bool) ?? false
41
- let rnApplePayShowApplePayForUnsupportedDevice = (rnApplePayOptions["showApplePayForUnsupportedDevice"] as? Bool) ?? true
42
- let rnApplePayCheckProvidedNetworks = (rnApplePayOptions["checkProvidedNetworks"] as? Bool) ?? true
43
-
44
- var shippingOptions: PrimerApplePayOptions.ShippingOptions? = nil
45
- if let rnShippingOptions = rnApplePayOptions["shippingOptions"] as? [String: Any] {
46
- let requireShippingMethod = rnShippingOptions["requireShippingMethod"] as? Bool ?? false
47
-
48
- var shippingContactFields: [PrimerApplePayOptions.RequiredContactField]? = nil
49
- if let requiredFieldsStrings = rnShippingOptions["shippingContactFields"] as? [String] {
50
- shippingContactFields = requiredFieldsStrings.compactMap { fieldStr in
51
- switch fieldStr {
52
- case "name":
53
- return .name
54
- case "emailAddress":
55
- return .emailAddress
56
- case "phoneNumber":
57
- return .phoneNumber
58
- case "postalAddress":
59
- return .postalAddress
60
- default:
61
- return nil // Ignore unknown values or handle accordingly
62
- }
63
- }
64
- }
65
-
66
- shippingOptions = PrimerApplePayOptions.ShippingOptions(
67
- shippingContactFields: shippingContactFields,
68
- requireShippingMethod: requireShippingMethod
69
- )
70
- }
37
+ let rnLocaleDataLanguageCode =
38
+ (settingsJson["localeData"] as? [String: Any])?["languageCode"] as? String
39
+ let rnLocaleDataLocaleCode =
40
+ (settingsJson["localeData"] as? [String: Any])?["localeCode"] as? String
41
+ let localeData = PrimerLocaleData(
42
+ languageCode: rnLocaleDataLanguageCode,
43
+ regionCode: rnLocaleDataLocaleCode)
71
44
 
72
- var billingOptions: PrimerApplePayOptions.BillingOptions? = nil
73
- if let rnBillingOptions = rnApplePayOptions["billingOptions"] as? [String: Any] {
74
- var requiredBillingContactFields: [PrimerApplePayOptions.RequiredContactField]? = nil
75
- if let requiredFieldsStrings = rnBillingOptions["requiredBillingContactFields"] as? [String] {
76
- requiredBillingContactFields = requiredFieldsStrings.compactMap { fieldStr in
77
- switch fieldStr {
78
- case "name":
79
- return .name
80
- case "emailAddress":
81
- return .emailAddress
82
- case "phoneNumber":
83
- return .phoneNumber
84
- case "postalAddress":
85
- return .postalAddress
86
- default:
87
- return nil // Ignore unknown values or handle accordingly
88
- }
89
- }
90
- }
91
-
92
- billingOptions = PrimerApplePayOptions.BillingOptions(
93
- requiredBillingContactFields: requiredBillingContactFields
94
- )
95
- }
45
+ let rnUrlScheme =
46
+ ((settingsJson["paymentMethodOptions"] as? [String: Any])?["iOS"] as? [String: Any])?[
47
+ "urlScheme"] as? String
48
+
49
+ var applePayOptions: PrimerApplePayOptions?
50
+ if let rnApplePayOptions =
51
+ ((settingsJson["paymentMethodOptions"] as? [String: Any])?["applePayOptions"]
52
+ as? [String: Any]),
53
+ let rnApplePayMerchantIdentifier = rnApplePayOptions["merchantIdentifier"] as? String {
54
+ let rnApplePayMerchantName = rnApplePayOptions["merchantName"] as? String
55
+ let rnApplePayIsCaptureBillingAddressEnabled =
56
+ (rnApplePayOptions["isCaptureBillingAddressEnabled"] as? Bool) ?? false
57
+ // swiftlint:disable identifier_name
58
+ let rnApplePayShowApplePayForUnsupportedDevice =
59
+ (rnApplePayOptions["showApplePayForUnsupportedDevice"] as? Bool) ?? true
60
+ // swiftlint:enable identifier_name
61
+ let rnApplePayCheckProvidedNetworks =
62
+ (rnApplePayOptions["checkProvidedNetworks"] as? Bool) ?? true
96
63
 
97
- applePayOptions = PrimerApplePayOptions(
98
- merchantIdentifier: rnApplePayMerchantIdentifier,
99
- merchantName: rnApplePayMerchantName,
100
- isCaptureBillingAddressEnabled: rnApplePayIsCaptureBillingAddressEnabled,
101
- showApplePayForUnsupportedDevice: rnApplePayShowApplePayForUnsupportedDevice,
102
- checkProvidedNetworks: rnApplePayCheckProvidedNetworks,
103
- shippingOptions: shippingOptions,
104
- billingOptions: billingOptions
105
- )
64
+ var shippingOptions: PrimerApplePayOptions.ShippingOptions?
65
+ if let rnShippingOptions = rnApplePayOptions["shippingOptions"] as? [String: Any] {
66
+ let requireShippingMethod = rnShippingOptions["requireShippingMethod"] as? Bool ?? false
67
+
68
+ var shippingContactFields: [PrimerApplePayOptions.RequiredContactField]?
69
+ if let requiredFieldsStrings = rnShippingOptions["shippingContactFields"] as? [String] {
70
+ shippingContactFields = requiredFieldsStrings.compactMap { fieldStr in
71
+ switch fieldStr {
72
+ case "name":
73
+ return .name
74
+ case "emailAddress":
75
+ return .emailAddress
76
+ case "phoneNumber":
77
+ return .phoneNumber
78
+ case "postalAddress":
79
+ return .postalAddress
80
+ default:
81
+ return nil // Ignore unknown values or handle accordingly
82
+ }
106
83
  }
107
-
84
+ }
85
+
86
+ shippingOptions = PrimerApplePayOptions.ShippingOptions(
87
+ shippingContactFields: shippingContactFields,
88
+ requireShippingMethod: requireShippingMethod
89
+ )
90
+ }
108
91
 
109
- var klarnaOptions: PrimerKlarnaOptions?
110
- if let rnKlarnaRecurringPaymentDescription = ((settingsJson["paymentMethodOptions"] as? [String: Any])?["klarnaOptions"] as? [String: Any])?["recurringPaymentDescription"] as? String {
111
- klarnaOptions = PrimerKlarnaOptions(recurringPaymentDescription: rnKlarnaRecurringPaymentDescription)
92
+ var billingOptions: PrimerApplePayOptions.BillingOptions?
93
+ if let rnBillingOptions = rnApplePayOptions["billingOptions"] as? [String: Any] {
94
+ var requiredBillingContactFields: [PrimerApplePayOptions.RequiredContactField]?
95
+ if let requiredFieldsStrings = rnBillingOptions["requiredBillingContactFields"]
96
+ as? [String] {
97
+ requiredBillingContactFields = requiredFieldsStrings.compactMap { fieldStr in
98
+ switch fieldStr {
99
+ case "name":
100
+ return .name
101
+ case "emailAddress":
102
+ return .emailAddress
103
+ case "phoneNumber":
104
+ return .phoneNumber
105
+ case "postalAddress":
106
+ return .postalAddress
107
+ default:
108
+ return nil // Ignore unknown values or handle accordingly
109
+ }
112
110
  }
111
+ }
113
112
 
114
- var uiOptions: PrimerUIOptions?
115
- if let rnUIOptions = settingsJson["uiOptions"] as? [String: Any] {
113
+ billingOptions = PrimerApplePayOptions.BillingOptions(
114
+ requiredBillingContactFields: requiredBillingContactFields
115
+ )
116
+ }
116
117
 
117
- var theme: PrimerTheme?
118
- if let rnTheme = rnUIOptions["theme"] as? [String: Any] {
119
- let rnThemeData = (try JSONSerialization.data(withJSONObject: rnTheme))
120
- let rnTheme = try JSONDecoder().decode(PrimerThemeRN.self, from: rnThemeData)
121
- theme = rnTheme.asPrimerTheme()
122
- }
118
+ applePayOptions = PrimerApplePayOptions(
119
+ merchantIdentifier: rnApplePayMerchantIdentifier,
120
+ merchantName: rnApplePayMerchantName,
121
+ isCaptureBillingAddressEnabled: rnApplePayIsCaptureBillingAddressEnabled,
122
+ showApplePayForUnsupportedDevice: rnApplePayShowApplePayForUnsupportedDevice,
123
+ checkProvidedNetworks: rnApplePayCheckProvidedNetworks,
124
+ shippingOptions: shippingOptions,
125
+ billingOptions: billingOptions
126
+ )
127
+ }
123
128
 
124
- uiOptions = PrimerUIOptions(
125
- isInitScreenEnabled: rnUIOptions["isInitScreenEnabled"] as? Bool,
126
- isSuccessScreenEnabled: rnUIOptions["isSuccessScreenEnabled"] as? Bool,
127
- isErrorScreenEnabled: rnUIOptions["isErrorScreenEnabled"] as? Bool,
128
- dismissalMechanism: {
129
- if let mechanisms = rnUIOptions["dismissalMechanism"] as? [String] {
130
- var dismissalMechanisms: [DismissalMechanism] = []
131
- for mechanism in mechanisms {
132
- switch mechanism {
133
- case "gestures":
134
- dismissalMechanisms.append(.gestures)
135
- case "closeButton":
136
- dismissalMechanisms.append(.closeButton)
137
- default:
138
- break
139
- }
140
- }
141
- return dismissalMechanisms.isEmpty ? nil : dismissalMechanisms
142
- }
143
- return nil
144
- }(),
145
- theme: theme)
146
- }
129
+ var klarnaOptions: PrimerKlarnaOptions?
130
+ if let rnKlarnaRecurringPaymentDescription =
131
+ ((settingsJson["paymentMethodOptions"]
132
+ as? [String: Any])?["klarnaOptions"]
133
+ as? [String: Any])?["recurringPaymentDescription"]
134
+ as? String {
135
+ klarnaOptions = PrimerKlarnaOptions(
136
+ recurringPaymentDescription: rnKlarnaRecurringPaymentDescription)
137
+ }
147
138
 
148
- var debugOptions: PrimerDebugOptions?
149
- if let rnIs3DSSanityCheckEnabled = (settingsJson["debugOptions"] as? [String: Any])?["is3DSSanityCheckEnabled"] as? Bool {
150
- debugOptions = PrimerDebugOptions(is3DSSanityCheckEnabled: rnIs3DSSanityCheckEnabled)
151
- }
139
+ var uiOptions: PrimerUIOptions?
140
+ if let rnUIOptions = settingsJson["uiOptions"] as? [String: Any] {
152
141
 
153
- var clientSessionCachingEnabled: Bool?
154
- if let clientSessionCachingEnabledValue = (settingsJson["clientSessionCachingEnabled"] as? Bool) {
155
- clientSessionCachingEnabled = clientSessionCachingEnabledValue
156
- }
157
-
158
- var threeDsOptions: PrimerThreeDsOptions?
159
- if let rnThreeDsAppRequestorUrlStr = (((settingsJson["paymentMethodOptions"] as? [String: Any])?["threeDsOptions"] as? [String: Any])?["iOS"] as? [String: Any])?["threeDsAppRequestorUrl"] as? String {
160
- threeDsOptions = PrimerThreeDsOptions(threeDsAppRequestorUrl: rnThreeDsAppRequestorUrlStr)
161
- }
162
-
163
- var stripeOptions: PrimerStripeOptions?
164
- if let stripeOptionsMap = ((settingsJson["paymentMethodOptions"] as? [String: Any])?["stripeOptions"] as? [String: Any]) {
165
- if let publishableKey = stripeOptionsMap["publishableKey"] as? String {
166
- var mandateData: PrimerStripeOptions.MandateData?
167
- if let mandateDataMap = stripeOptionsMap["mandateData"] as? [String: String] {
168
- if let fullMandateText = mandateDataMap["fullMandateText"] {
169
- mandateData = .fullMandate(text: fullMandateText)
170
- } else if let merchantName = mandateDataMap["merchantName"] {
171
- mandateData = .templateMandate(merchantName: merchantName)
172
- } else {
173
- PrimerLogging.shared.logger.warn(message: "Found mandate data but no resource key or merchant name - check your stripe config")
174
- }
175
- } else {
176
- PrimerLogging.shared.logger.warn(message: "Found stripe options but no mandate data - check your stripe config")
177
- }
178
- stripeOptions = .init(
179
- publishableKey: publishableKey,
180
- mandateData: mandateData
181
- )
142
+ var theme: PrimerTheme?
143
+ if let rnTheme = rnUIOptions["theme"] as? [String: Any] {
144
+ let rnThemeData = (try JSONSerialization.data(withJSONObject: rnTheme))
145
+ let rnTheme = try JSONDecoder().decode(PrimerThemeRN.self, from: rnThemeData)
146
+ theme = rnTheme.asPrimerTheme()
147
+ }
148
+
149
+ uiOptions = PrimerUIOptions(
150
+ isInitScreenEnabled: rnUIOptions["isInitScreenEnabled"] as? Bool,
151
+ isSuccessScreenEnabled: rnUIOptions["isSuccessScreenEnabled"] as? Bool,
152
+ isErrorScreenEnabled: rnUIOptions["isErrorScreenEnabled"] as? Bool,
153
+ dismissalMechanism: {
154
+ if let mechanisms = rnUIOptions["dismissalMechanism"] as? [String] {
155
+ var dismissalMechanisms: [DismissalMechanism] = []
156
+ for mechanism in mechanisms {
157
+ switch mechanism {
158
+ case "gestures":
159
+ dismissalMechanisms.append(.gestures)
160
+ case "closeButton":
161
+ dismissalMechanisms.append(.closeButton)
162
+ default:
163
+ break
182
164
  }
165
+ }
166
+ return dismissalMechanisms.isEmpty ? nil : dismissalMechanisms
183
167
  }
168
+ return nil
169
+ }(),
170
+ theme: theme)
171
+ }
172
+
173
+ var debugOptions: PrimerDebugOptions?
174
+ if let rnIs3DSSanityCheckEnabled = (settingsJson["debugOptions"] as? [String: Any])?[
175
+ "is3DSSanityCheckEnabled"] as? Bool {
176
+ debugOptions = PrimerDebugOptions(is3DSSanityCheckEnabled: rnIs3DSSanityCheckEnabled)
177
+ }
184
178
 
185
- let paymentMethodOptions = PrimerPaymentMethodOptions(
186
- urlScheme: rnUrlScheme,
187
- applePayOptions: applePayOptions,
188
- klarnaOptions: klarnaOptions,
189
- threeDsOptions: threeDsOptions,
190
- stripeOptions: stripeOptions)
191
-
192
- self.init(
193
- paymentHandling: paymentHandling,
194
- localeData: localeData,
195
- paymentMethodOptions: paymentMethodOptions,
196
- uiOptions: uiOptions,
197
- debugOptions: debugOptions,
198
- clientSessionCachingEnabled: clientSessionCachingEnabled ?? false)
179
+ var clientSessionCachingEnabled: Bool?
180
+ if let clientSessionCachingEnabledValue =
181
+ (settingsJson["clientSessionCachingEnabled"] as? Bool) {
182
+ clientSessionCachingEnabled = clientSessionCachingEnabledValue
183
+ }
184
+
185
+ var apiVersion: PrimerApiVersion?
186
+ if let apiVersionValue = (settingsJson["apiVersion"] as? String) {
187
+ switch (apiVersionValue) {
188
+ case "2.3":
189
+ apiVersion = PrimerApiVersion.V2_3
190
+ break
191
+ case "2.4":
192
+ apiVersion = PrimerApiVersion.V2_4
193
+ break
194
+ case "latest":
195
+ apiVersion = PrimerApiVersion.latest
196
+ break
197
+ default:
198
+ throw RNTNativeError(errorId: "native-ios", errorDescription: "The value of the 'apiVersion' string is invalid.", recoverySuggestion: "Provide a valid 'apiVersion' string")
199
199
  }
200
+ }
201
+
202
+ var threeDsOptions: PrimerThreeDsOptions?
203
+ if let rnThreeDsAppRequestorUrlStr =
204
+ (((settingsJson["paymentMethodOptions"]
205
+ as? [String: Any])?["threeDsOptions"]
206
+ as? [String: Any])?["iOS"]
207
+ as? [String: Any])?["threeDsAppRequestorUrl"]
208
+ as? String {
209
+ threeDsOptions = PrimerThreeDsOptions(threeDsAppRequestorUrl: rnThreeDsAppRequestorUrlStr)
210
+ }
211
+
212
+ var stripeOptions: PrimerStripeOptions?
213
+ if let stripeOptionsMap =
214
+ ((settingsJson["paymentMethodOptions"] as? [String: Any])?["stripeOptions"]
215
+ as? [String: Any]) {
216
+ if let publishableKey = stripeOptionsMap["publishableKey"] as? String {
217
+ var mandateData: PrimerStripeOptions.MandateData?
218
+ if let mandateDataMap = stripeOptionsMap["mandateData"] as? [String: String] {
219
+ if let fullMandateText = mandateDataMap["fullMandateText"] {
220
+ mandateData = .fullMandate(text: fullMandateText)
221
+ } else if let merchantName = mandateDataMap["merchantName"] {
222
+ mandateData = .templateMandate(merchantName: merchantName)
223
+ } else {
224
+ PrimerLogging.shared.logger.warn(
225
+ message:
226
+ "Found mandate data but no resource key or merchant name - check your stripe config"
227
+ )
228
+ }
229
+ } else {
230
+ PrimerLogging.shared.logger.warn(
231
+ message: "Found stripe options but no mandate data - check your stripe config")
232
+ }
233
+ stripeOptions = .init(
234
+ publishableKey: publishableKey,
235
+ mandateData: mandateData
236
+ )
237
+ }
238
+ }
239
+
240
+ let paymentMethodOptions = PrimerPaymentMethodOptions(
241
+ urlScheme: rnUrlScheme,
242
+ applePayOptions: applePayOptions,
243
+ klarnaOptions: klarnaOptions,
244
+ threeDsOptions: threeDsOptions,
245
+ stripeOptions: stripeOptions)
246
+
247
+ self.init(
248
+ paymentHandling: paymentHandling,
249
+ localeData: localeData,
250
+ paymentMethodOptions: paymentMethodOptions,
251
+ uiOptions: uiOptions,
252
+ debugOptions: debugOptions,
253
+ clientSessionCachingEnabled: clientSessionCachingEnabled ?? false,
254
+ apiVersion: apiVersion ?? .latest)
200
255
  }
256
+ }
257
+ // swiftlint:enable function_body_length
258
+ // swiftlint:enable cyclomatic_complexity
201
259
  }
@@ -1,8 +1,8 @@
1
1
  import PrimerSDK
2
2
 
3
3
  struct PrimerThemeRN: Decodable {
4
- let colors: ColorThemeRN?;
5
- let darkModeColors: ColorThemeRN?;
4
+ let colors: ColorThemeRN?
5
+ let darkModeColors: ColorThemeRN?
6
6
  }
7
7
 
8
8
  extension PrimerThemeRN {
@@ -10,9 +10,9 @@ extension PrimerThemeRN {
10
10
 
11
11
  let isDarkMode = UITraitCollection.current.userInterfaceStyle == .dark
12
12
 
13
- let _colors = isDarkMode ? darkModeColors : colors
13
+ let currentColors = isDarkMode ? darkModeColors : colors
14
14
 
15
- guard let colors = _colors else {
15
+ guard let colors = currentColors else {
16
16
  return PrimerTheme()
17
17
  }
18
18
 
@@ -71,9 +71,9 @@ extension ColorThemeRN {
71
71
  success1: mainColor?.uiColor ?? .systemBlue
72
72
  )
73
73
  }
74
-
74
+
75
75
  @available(iOS 13.0, *)
76
- var primerDarkModeTheme: ColorTheme {
76
+ var primerDarkModeTheme: ColorTheme {
77
77
  return PrimerDefaultTheme(
78
78
  text1: text?.uiColor ?? .white,
79
79
  text2: contrastingText?.uiColor ?? .white,
@@ -1,18 +1,17 @@
1
-
2
1
  import Foundation
3
2
 
4
3
  struct RNTNativeError: CustomNSError, LocalizedError, Codable {
5
-
4
+
6
5
  let errorId: String
7
6
  let errorDescription: String?
8
7
  let recoverySuggestion: String?
9
-
8
+
10
9
  var rnError: [String: String] {
11
10
  var json: [String: String] = [
12
11
  "errorId": errorId,
13
12
  "description": errorDescription ?? "Something went wrong"
14
13
  ]
15
-
14
+
16
15
  if let recoverySuggestion = recoverySuggestion {
17
16
  json["recoverySuggestion"] = recoverySuggestion
18
17
  }