@primer-io/react-native 2.16.7 → 2.17.0-rc.10

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 (283) hide show
  1. package/android/.project +2 -2
  2. package/android/build.gradle +2 -3
  3. package/android/gradle.properties +1 -1
  4. package/android/src/main/java/com/primerioreactnative/PrimerCardNumberEditTextManager.kt +0 -15
  5. package/android/src/main/java/com/primerioreactnative/PrimerRN.kt +15 -2
  6. package/android/src/main/java/com/primerioreactnative/PrimerRNEventListener.kt +23 -8
  7. package/android/src/main/java/com/primerioreactnative/PrimerRNHeadlessUniversalCheckout.kt +20 -120
  8. package/android/src/main/java/com/primerioreactnative/PrimerRNHeadlessUniversalCheckoutListener.kt +61 -69
  9. package/android/src/main/java/com/primerioreactnative/ReactNativePackage.kt +6 -2
  10. package/android/src/main/java/com/primerioreactnative/{huc → components}/assets/AssetsManager.kt +5 -14
  11. package/android/src/main/java/com/primerioreactnative/components/assets/CardNetworkImageFileProvider.kt +23 -0
  12. package/android/src/main/java/com/primerioreactnative/components/assets/PaymentMethodAssetFileProvider.kt +24 -0
  13. package/android/src/main/java/com/primerioreactnative/components/datamodels/core/PrimerRNHeadlessUniversalCheckoutPaymentMethod.kt +25 -0
  14. package/android/src/main/java/com/primerioreactnative/components/datamodels/core/PrimerRawPaymentMethodType.kt +9 -0
  15. package/android/src/main/java/com/primerioreactnative/components/datamodels/manager/asset/PrimerRNAsset.kt +106 -0
  16. package/android/src/main/java/com/primerioreactnative/{huc/datamodels/manager/raw/card/PrimerRNRawCardData.kt → components/datamodels/manager/raw/card/PrimerRNCardData.kt} +6 -8
  17. package/android/src/main/java/com/primerioreactnative/components/datamodels/manager/raw/cardRedirect/PrimerRNCardRedirectData.kt +19 -0
  18. package/android/src/main/java/com/primerioreactnative/components/datamodels/manager/raw/phoneNumber/PrimerRNPhoneNumberData.kt +14 -0
  19. package/android/src/main/java/com/primerioreactnative/components/datamodels/manager/raw/retailOutlets/PrimerRNRetailOutletData.kt +12 -0
  20. package/android/src/main/java/com/primerioreactnative/{huc → components}/datamodels/manager/raw/retailOutlets/RNRetailOutletsList.kt +1 -1
  21. package/android/src/main/java/com/primerioreactnative/components/events/PrimerHeadlessUniversalCheckoutEvent.kt +17 -0
  22. package/android/src/main/java/com/primerioreactnative/{huc → components}/events/PrimerHeadlessUniversalCheckoutRawDataManagerEvent.kt +1 -2
  23. package/android/src/main/java/com/primerioreactnative/components/manager/asset/PrimerRNHeadlessUniversalCheckoutAssetManager.kt +131 -0
  24. package/android/src/main/java/com/primerioreactnative/components/manager/nativeUi/PrimerRNHeadlessUniversalCheckoutNativeUiManager.kt +87 -0
  25. package/android/src/main/java/com/primerioreactnative/{huc → components}/manager/raw/PrimerRNHeadlessUniversalCheckoutRawManager.kt +72 -68
  26. package/android/src/main/java/com/primerioreactnative/{huc → components}/manager/raw/PrimerRNHeadlessUniversalCheckoutRawManagerListener.kt +13 -5
  27. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerErrorRN.kt +5 -4
  28. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerInputValidationErrorRN.kt +11 -0
  29. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerSettingsRN.kt +13 -9
  30. package/android/src/main/java/com/primerioreactnative/extensions/PrimerPaymentMethodOptionsRN.kt +3 -3
  31. package/android/src/main/java/com/primerioreactnative/utils/PrimerHeadlessUniversalCheckoutImplementedRNCallbacks.kt +15 -15
  32. package/android/src/main/java/com/primerioreactnative/utils/PrimerImplementedRNCallbacks.kt +7 -7
  33. package/ios/Podfile.lock +1 -1
  34. package/ios/ReactNative.xcodeproj/project.pbxproj +20 -20
  35. package/ios/Sources/DataModels/ImplementedRNCallbacks.swift +75 -0
  36. package/ios/{DataModels/RNTPrimerCardRedirectData.swift → Sources/DataModels/PrimerBancontactCardRedirectData+Extension.swift} +5 -8
  37. package/ios/{DataModels/RNTPrimerCardData.swift → Sources/DataModels/PrimerCardData+Extension.swift} +2 -5
  38. package/ios/Sources/DataModels/PrimerHeadlessUniversalCheckout_PaymentMethod.swift +20 -0
  39. package/ios/{DataModels/RNTPrimerPhoneNumberData.swift → Sources/DataModels/PrimerPhoneNumberData+Extension.swift} +0 -1
  40. package/ios/{DataModels/RNTPrimerRetailerData.swift → Sources/DataModels/PrimerRawRetailerData+Extension.swift} +3 -4
  41. package/ios/Sources/DataModels/PrimerSettings+Extensions.swift +94 -0
  42. package/ios/Sources/DataModels/RNTNativeError.swift +22 -0
  43. package/ios/Sources/DataModels/RNTPrimerPaymentMethodAsset.swift +67 -0
  44. package/ios/Sources/Headless Universal Checkout/Managers/Payment Method Managers/RNTNativeUIManager.m +19 -0
  45. package/ios/Sources/Headless Universal Checkout/Managers/Payment Method Managers/RNTNativeUIManager.swift +63 -0
  46. package/ios/Sources/Headless Universal Checkout/Managers/Payment Method Managers/RNTRawDataManager.m +23 -0
  47. package/ios/{Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutRawDataManager.swift → Sources/Headless Universal Checkout/Managers/Payment Method Managers/RNTRawDataManager.swift } +36 -31
  48. package/ios/Sources/Headless Universal Checkout/Managers/RNTAssetsManager.m +24 -0
  49. package/ios/Sources/Headless Universal Checkout/Managers/RNTAssetsManager.swift +107 -0
  50. package/ios/Sources/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.m +41 -0
  51. package/ios/Sources/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.swift +498 -0
  52. package/ios/Sources/Helpers/Encodable+Extension.swift +17 -0
  53. package/ios/Sources/Helpers/Error+Extensions.swift +39 -0
  54. package/ios/Sources/Helpers/UIColor+Extensions.swift +32 -0
  55. package/ios/Sources/Helpers/UIImage+Extensions.swift +32 -0
  56. package/ios/Sources/RNTPrimer.m +86 -0
  57. package/ios/{RNTPrimer.swift → Sources/RNTPrimer.swift} +37 -28
  58. package/lib/commonjs/HeadlessUniversalCheckout/Managers/AssetsManager.js +59 -0
  59. package/lib/commonjs/HeadlessUniversalCheckout/Managers/AssetsManager.js.map +1 -0
  60. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/NativeUIManager.js +35 -0
  61. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/NativeUIManager.js.map +1 -0
  62. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js +151 -0
  63. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js.map +1 -0
  64. package/lib/commonjs/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js +270 -0
  65. package/lib/commonjs/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js.map +1 -0
  66. package/lib/commonjs/{headless_checkout → HeadlessUniversalCheckout}/RNPrimerHeadlessUniversalCheckout.js +7 -81
  67. package/lib/commonjs/HeadlessUniversalCheckout/RNPrimerHeadlessUniversalCheckout.js.map +1 -0
  68. package/lib/commonjs/HeadlessUniversalCheckout/types.js +34 -0
  69. package/lib/commonjs/HeadlessUniversalCheckout/types.js.map +1 -0
  70. package/lib/commonjs/Primer.js +24 -23
  71. package/lib/commonjs/Primer.js.map +1 -1
  72. package/lib/commonjs/PrimerInput.js.map +1 -1
  73. package/lib/commonjs/RNPrimer.js +4 -4
  74. package/lib/commonjs/RNPrimer.js.map +1 -1
  75. package/lib/commonjs/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js.map +1 -1
  76. package/lib/commonjs/index.js +63 -71
  77. package/lib/commonjs/index.js.map +1 -1
  78. package/lib/commonjs/models/PrimerAsset.js +2 -0
  79. package/lib/commonjs/models/PrimerAsset.js.map +1 -0
  80. package/lib/commonjs/models/PrimerCheckoutAdditionalInfo.js.map +1 -1
  81. package/lib/commonjs/models/PrimerCheckoutData.js.map +1 -1
  82. package/lib/commonjs/models/PrimerCheckoutPaymentMethodData.js.map +1 -1
  83. package/lib/commonjs/models/PrimerClientSession.js.map +1 -1
  84. package/lib/commonjs/models/PrimerCountryCode.js.map +1 -1
  85. package/lib/commonjs/models/PrimerCurrencyCode.js.map +1 -1
  86. package/lib/commonjs/models/PrimerError.js +4 -4
  87. package/lib/commonjs/models/PrimerError.js.map +1 -1
  88. package/lib/commonjs/models/PrimerHandlers.js +2 -0
  89. package/lib/commonjs/models/PrimerHandlers.js.map +1 -0
  90. package/lib/commonjs/models/PrimerHeadlessUniversalCheckoutPaymentMethod.js +2 -0
  91. package/lib/commonjs/models/PrimerHeadlessUniversalCheckoutPaymentMethod.js.map +1 -0
  92. package/lib/commonjs/models/PrimerImplementedRNCallbacks.js +2 -0
  93. package/lib/commonjs/models/PrimerImplementedRNCallbacks.js.map +1 -0
  94. package/lib/commonjs/models/PrimerInitializationData.js.map +1 -1
  95. package/lib/commonjs/models/PrimerInputElementType.js +20 -0
  96. package/lib/commonjs/models/PrimerInputElementType.js.map +1 -0
  97. package/lib/commonjs/models/PrimerInterfaces.js.map +1 -1
  98. package/lib/commonjs/models/PrimerPaymentMethodManagerCategory.js +14 -0
  99. package/lib/commonjs/models/PrimerPaymentMethodManagerCategory.js.map +1 -0
  100. package/lib/commonjs/models/PrimerPaymentMethodTokenData.js.map +1 -1
  101. package/lib/commonjs/models/PrimerRawData.js.map +1 -1
  102. package/lib/commonjs/models/PrimerSessionIntent.js.map +1 -1
  103. package/lib/commonjs/models/PrimerSettings.js.map +1 -1
  104. package/lib/commonjs/models/PrimerTheme.js.map +1 -1
  105. package/lib/commonjs/models/RetailOutletsRetail.js.map +1 -1
  106. package/lib/commonjs/utils/index.js.map +1 -1
  107. package/lib/module/HeadlessUniversalCheckout/Managers/AssetsManager.js +52 -0
  108. package/lib/module/HeadlessUniversalCheckout/Managers/AssetsManager.js.map +1 -0
  109. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/NativeUIManager.js +28 -0
  110. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/NativeUIManager.js.map +1 -0
  111. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js +144 -0
  112. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js.map +1 -0
  113. package/lib/module/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js +261 -0
  114. package/lib/module/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js.map +1 -0
  115. package/lib/module/{headless_checkout → HeadlessUniversalCheckout}/RNPrimerHeadlessUniversalCheckout.js +7 -81
  116. package/lib/module/HeadlessUniversalCheckout/RNPrimerHeadlessUniversalCheckout.js.map +1 -0
  117. package/lib/module/HeadlessUniversalCheckout/types.js +33 -0
  118. package/lib/module/HeadlessUniversalCheckout/types.js.map +1 -0
  119. package/lib/module/Primer.js +24 -23
  120. package/lib/module/Primer.js.map +1 -1
  121. package/lib/module/PrimerInput.js.map +1 -1
  122. package/lib/module/RNPrimer.js +4 -4
  123. package/lib/module/RNPrimer.js.map +1 -1
  124. package/lib/module/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js.map +1 -1
  125. package/lib/module/index.js +15 -9
  126. package/lib/module/index.js.map +1 -1
  127. package/lib/module/models/PrimerAsset.js +2 -0
  128. package/lib/module/models/PrimerAsset.js.map +1 -0
  129. package/lib/module/models/PrimerCheckoutAdditionalInfo.js.map +1 -1
  130. package/lib/module/models/PrimerCheckoutData.js.map +1 -1
  131. package/lib/module/models/PrimerCheckoutPaymentMethodData.js.map +1 -1
  132. package/lib/module/models/PrimerClientSession.js.map +1 -1
  133. package/lib/module/models/PrimerCountryCode.js.map +1 -1
  134. package/lib/module/models/PrimerCurrencyCode.js.map +1 -1
  135. package/lib/module/models/PrimerError.js +4 -4
  136. package/lib/module/models/PrimerError.js.map +1 -1
  137. package/lib/module/models/PrimerHandlers.js +2 -0
  138. package/lib/module/models/PrimerHandlers.js.map +1 -0
  139. package/lib/module/models/PrimerHeadlessUniversalCheckoutPaymentMethod.js +2 -0
  140. package/lib/module/models/PrimerHeadlessUniversalCheckoutPaymentMethod.js.map +1 -0
  141. package/lib/module/models/PrimerImplementedRNCallbacks.js +2 -0
  142. package/lib/module/models/PrimerImplementedRNCallbacks.js.map +1 -0
  143. package/lib/module/models/PrimerInitializationData.js.map +1 -1
  144. package/lib/module/models/PrimerInputElementType.js +13 -0
  145. package/lib/module/models/PrimerInputElementType.js.map +1 -0
  146. package/lib/module/models/PrimerInterfaces.js.map +1 -1
  147. package/lib/module/models/PrimerPaymentMethodManagerCategory.js +7 -0
  148. package/lib/module/models/PrimerPaymentMethodManagerCategory.js.map +1 -0
  149. package/lib/module/models/PrimerPaymentMethodTokenData.js.map +1 -1
  150. package/lib/module/models/PrimerRawData.js.map +1 -1
  151. package/lib/module/models/PrimerSessionIntent.js.map +1 -1
  152. package/lib/module/models/PrimerSettings.js.map +1 -1
  153. package/lib/module/models/PrimerTheme.js.map +1 -1
  154. package/lib/module/models/RetailOutletsRetail.js.map +1 -1
  155. package/lib/module/utils/index.js.map +1 -1
  156. package/lib/typescript/HeadlessUniversalCheckout/Managers/AssetsManager.d.ts +9 -0
  157. package/lib/typescript/HeadlessUniversalCheckout/Managers/AssetsManager.d.ts.map +1 -0
  158. package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/NativeUIManager.d.ts +8 -0
  159. package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/NativeUIManager.d.ts.map +1 -0
  160. package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.d.ts +29 -0
  161. package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.d.ts.map +1 -0
  162. package/lib/typescript/{headless_checkout → HeadlessUniversalCheckout}/PrimerHeadlessUniversalCheckout.d.ts +4 -5
  163. package/lib/typescript/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.d.ts.map +1 -0
  164. package/lib/typescript/HeadlessUniversalCheckout/RNPrimerHeadlessUniversalCheckout.d.ts +18 -0
  165. package/lib/typescript/HeadlessUniversalCheckout/RNPrimerHeadlessUniversalCheckout.d.ts.map +1 -0
  166. package/lib/typescript/HeadlessUniversalCheckout/types.d.ts +1 -0
  167. package/lib/typescript/HeadlessUniversalCheckout/types.d.ts.map +1 -0
  168. package/lib/typescript/Primer.d.ts +1 -0
  169. package/lib/typescript/Primer.d.ts.map +1 -0
  170. package/lib/typescript/PrimerInput.d.ts +5 -4
  171. package/lib/typescript/PrimerInput.d.ts.map +1 -0
  172. package/lib/typescript/RNPrimer.d.ts +4 -4
  173. package/lib/typescript/RNPrimer.d.ts.map +1 -0
  174. package/lib/typescript/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.d.ts +1 -0
  175. package/lib/typescript/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.d.ts.map +1 -0
  176. package/lib/typescript/index.d.ts +18 -9
  177. package/lib/typescript/index.d.ts.map +1 -0
  178. package/lib/typescript/models/PrimerAsset.d.ts +15 -0
  179. package/lib/typescript/models/PrimerAsset.d.ts.map +1 -0
  180. package/lib/typescript/models/PrimerCheckoutAdditionalInfo.d.ts +7 -6
  181. package/lib/typescript/models/PrimerCheckoutAdditionalInfo.d.ts.map +1 -0
  182. package/lib/typescript/models/PrimerCheckoutData.d.ts +3 -2
  183. package/lib/typescript/models/PrimerCheckoutData.d.ts.map +1 -0
  184. package/lib/typescript/models/PrimerCheckoutPaymentMethodData.d.ts +2 -1
  185. package/lib/typescript/models/PrimerCheckoutPaymentMethodData.d.ts.map +1 -0
  186. package/lib/typescript/models/PrimerClientSession.d.ts +6 -5
  187. package/lib/typescript/models/PrimerClientSession.d.ts.map +1 -0
  188. package/lib/typescript/models/PrimerCountryCode.d.ts +2 -1
  189. package/lib/typescript/models/PrimerCountryCode.d.ts.map +1 -0
  190. package/lib/typescript/models/PrimerCurrencyCode.d.ts +2 -1
  191. package/lib/typescript/models/PrimerCurrencyCode.d.ts.map +1 -0
  192. package/lib/typescript/models/PrimerError.d.ts +3 -1
  193. package/lib/typescript/models/PrimerError.d.ts.map +1 -0
  194. package/lib/typescript/models/PrimerHandlers.d.ts +22 -0
  195. package/lib/typescript/models/PrimerHandlers.d.ts.map +1 -0
  196. package/lib/typescript/models/PrimerHeadlessUniversalCheckoutPaymentMethod.d.ts +6 -0
  197. package/lib/typescript/models/PrimerHeadlessUniversalCheckoutPaymentMethod.d.ts.map +1 -0
  198. package/lib/typescript/models/PrimerImplementedRNCallbacks.d.ts +17 -0
  199. package/lib/typescript/models/PrimerImplementedRNCallbacks.d.ts.map +1 -0
  200. package/lib/typescript/models/PrimerInitializationData.d.ts +3 -2
  201. package/lib/typescript/models/PrimerInitializationData.d.ts.map +1 -0
  202. package/lib/typescript/models/PrimerInputElementType.d.ts +12 -0
  203. package/lib/typescript/models/PrimerInputElementType.d.ts.map +1 -0
  204. package/lib/typescript/models/PrimerInterfaces.d.ts +3 -20
  205. package/lib/typescript/models/PrimerInterfaces.d.ts.map +1 -0
  206. package/lib/typescript/models/PrimerPaymentMethodManagerCategory.d.ts +6 -0
  207. package/lib/typescript/models/PrimerPaymentMethodManagerCategory.d.ts.map +1 -0
  208. package/lib/typescript/models/PrimerPaymentMethodTokenData.d.ts +2 -1
  209. package/lib/typescript/models/PrimerPaymentMethodTokenData.d.ts.map +1 -0
  210. package/lib/typescript/models/PrimerRawData.d.ts +7 -10
  211. package/lib/typescript/models/PrimerRawData.d.ts.map +1 -0
  212. package/lib/typescript/models/PrimerSessionIntent.d.ts +1 -0
  213. package/lib/typescript/models/PrimerSessionIntent.d.ts.map +1 -0
  214. package/lib/typescript/models/PrimerSettings.d.ts +28 -6
  215. package/lib/typescript/models/PrimerSettings.d.ts.map +1 -0
  216. package/lib/typescript/models/PrimerTheme.d.ts +3 -2
  217. package/lib/typescript/models/PrimerTheme.d.ts.map +1 -0
  218. package/lib/typescript/models/RetailOutletsRetail.d.ts +2 -1
  219. package/lib/typescript/models/RetailOutletsRetail.d.ts.map +1 -0
  220. package/lib/typescript/utils/index.d.ts +1 -0
  221. package/lib/typescript/utils/index.d.ts.map +1 -0
  222. package/package.json +8 -7
  223. package/primer-io-react-native.podspec +1 -2
  224. package/src/HeadlessUniversalCheckout/Managers/AssetsManager.ts +56 -0
  225. package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/NativeUIManager.ts +31 -0
  226. package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.ts +166 -0
  227. package/src/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.ts +333 -0
  228. package/src/{headless_checkout → HeadlessUniversalCheckout}/RNPrimerHeadlessUniversalCheckout.ts +37 -128
  229. package/src/HeadlessUniversalCheckout/types.ts +32 -0
  230. package/src/Primer.ts +32 -31
  231. package/src/RNPrimer.ts +4 -9
  232. package/src/index.tsx +43 -29
  233. package/src/models/PrimerAsset.ts +14 -0
  234. package/src/models/PrimerError.ts +3 -1
  235. package/src/models/PrimerHandlers.ts +25 -0
  236. package/src/models/PrimerHeadlessUniversalCheckoutPaymentMethod.ts +5 -0
  237. package/src/models/PrimerImplementedRNCallbacks.ts +20 -0
  238. package/src/models/PrimerInputElementType.ts +11 -0
  239. package/src/models/PrimerInterfaces.ts +2 -28
  240. package/src/models/PrimerPaymentMethodManagerCategory.ts +5 -0
  241. package/src/models/PrimerRawData.ts +6 -10
  242. package/src/models/PrimerSettings.ts +42 -16
  243. package/android/src/main/java/com/primerioreactnative/huc/datamodels/manager/raw/cardRedirect/PrimerRNPRawCardRedirectData.kt +0 -20
  244. package/android/src/main/java/com/primerioreactnative/huc/datamodels/manager/raw/phoneNumber/PrimerRNRawPhoneNumberData.kt +0 -14
  245. package/android/src/main/java/com/primerioreactnative/huc/datamodels/manager/raw/retailOutlets/PrimerRNRawRetailOutletData.kt +0 -12
  246. package/android/src/main/java/com/primerioreactnative/huc/events/PrimerHeadlessUniversalCheckoutEvent.kt +0 -15
  247. package/ios/DataModels/ImplementedRNCallbacks.swift +0 -62
  248. package/ios/DataModels/PrimerErrorRN.swift +0 -35
  249. package/ios/DataModels/PrimerSettingsRN.swift +0 -84
  250. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.m +0 -62
  251. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.swift +0 -501
  252. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.m +0 -14
  253. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.swift +0 -117
  254. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutRawDataManager.m +0 -23
  255. package/ios/RNTPrimer.m +0 -59
  256. package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js +0 -288
  257. package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +0 -1
  258. package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckoutRawDataManager.js +0 -91
  259. package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckoutRawDataManager.js.map +0 -1
  260. package/lib/commonjs/headless_checkout/RNPrimerHeadlessUniversalCheckout.js.map +0 -1
  261. package/lib/commonjs/headless_checkout/RNPrimerHeadlessUniversalCheckoutRawDataManager.js +0 -91
  262. package/lib/commonjs/headless_checkout/RNPrimerHeadlessUniversalCheckoutRawDataManager.js.map +0 -1
  263. package/lib/commonjs/headless_checkout/types.js +0 -6
  264. package/lib/commonjs/headless_checkout/types.js.map +0 -1
  265. package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js +0 -279
  266. package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +0 -1
  267. package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckoutRawDataManager.js +0 -83
  268. package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckoutRawDataManager.js.map +0 -1
  269. package/lib/module/headless_checkout/RNPrimerHeadlessUniversalCheckout.js.map +0 -1
  270. package/lib/module/headless_checkout/RNPrimerHeadlessUniversalCheckoutRawDataManager.js +0 -84
  271. package/lib/module/headless_checkout/RNPrimerHeadlessUniversalCheckoutRawDataManager.js.map +0 -1
  272. package/lib/module/headless_checkout/types.js +0 -2
  273. package/lib/module/headless_checkout/types.js.map +0 -1
  274. package/lib/typescript/headless_checkout/PrimerHeadlessUniversalCheckoutRawDataManager.d.ts +0 -18
  275. package/lib/typescript/headless_checkout/RNPrimerHeadlessUniversalCheckout.d.ts +0 -22
  276. package/lib/typescript/headless_checkout/RNPrimerHeadlessUniversalCheckoutRawDataManager.d.ts +0 -14
  277. package/lib/typescript/headless_checkout/types.d.ts +0 -22
  278. package/src/headless_checkout/PrimerHeadlessUniversalCheckout.ts +0 -358
  279. package/src/headless_checkout/PrimerHeadlessUniversalCheckoutRawDataManager.ts +0 -109
  280. package/src/headless_checkout/RNPrimerHeadlessUniversalCheckoutRawDataManager.ts +0 -104
  281. package/src/headless_checkout/types.ts +0 -32
  282. /package/ios/{DataModels → Sources/DataModels}/PrimerThemeRN.swift +0 -0
  283. /package/ios/{Headless Universal Checkout → Sources/Headless Universal Checkout/Managers/Payment Method Managers}/RNTPrimerCardNumberInputElementManager.m +0 -0
@@ -4,7 +4,9 @@ import com.facebook.react.ReactPackage
4
4
  import com.facebook.react.bridge.NativeModule
5
5
  import com.facebook.react.bridge.ReactApplicationContext
6
6
  import com.facebook.react.uimanager.ViewManager
7
- import com.primerioreactnative.huc.manager.raw.PrimerRNHeadlessUniversalCheckoutRawManager
7
+ import com.primerioreactnative.components.manager.asset.PrimerRNHeadlessUniversalCheckoutAssetManager
8
+ import com.primerioreactnative.components.manager.nativeUi.PrimerRNHeadlessUniversalCheckoutNativeUiManager
9
+ import com.primerioreactnative.components.manager.raw.PrimerRNHeadlessUniversalCheckoutRawManager
8
10
  import kotlinx.serialization.json.Json
9
11
 
10
12
  class ReactNativePackage : ReactPackage {
@@ -15,7 +17,9 @@ class ReactNativePackage : ReactPackage {
15
17
  return listOf(
16
18
  PrimerRN(reactContext, json),
17
19
  PrimerRNHeadlessUniversalCheckout(reactContext, json),
18
- PrimerRNHeadlessUniversalCheckoutRawManager(reactContext, json)
20
+ PrimerRNHeadlessUniversalCheckoutRawManager(reactContext, json),
21
+ PrimerRNHeadlessUniversalCheckoutNativeUiManager(reactContext),
22
+ PrimerRNHeadlessUniversalCheckoutAssetManager(reactContext)
19
23
  )
20
24
  }
21
25
 
@@ -1,4 +1,4 @@
1
- package com.primerioreactnative.huc.assets
1
+ package com.primerioreactnative.components.assets
2
2
 
3
3
  import android.graphics.Bitmap
4
4
  import android.graphics.Canvas
@@ -7,11 +7,9 @@ import android.graphics.drawable.Drawable
7
7
  import com.facebook.react.bridge.ReactApplicationContext
8
8
  import java.io.File
9
9
  import java.io.FileOutputStream
10
- import java.util.*
11
10
 
12
11
  internal object AssetsManager {
13
12
 
14
- private const val ASSETS_DIRECTORY = "primer-sdk"
15
13
  private const val COMPRESS_QUALITY = 100
16
14
 
17
15
  fun drawableToBitmap(drawable: Drawable): Bitmap {
@@ -35,22 +33,15 @@ internal object AssetsManager {
35
33
  bitmap: Bitmap,
36
34
  format: Bitmap.CompressFormat = Bitmap.CompressFormat.PNG,
37
35
  ) {
38
-
39
36
  FileOutputStream(file).use {
40
37
  bitmap.compress(format, COMPRESS_QUALITY, it)
41
38
  it.close()
42
39
  }
43
40
  }
44
41
 
45
- fun getFile(context: ReactApplicationContext, path: String): File {
46
- val directory = File(context.filesDir, path)
47
- if (!directory.exists()) directory.mkdirs()
48
- val file = File(
49
- context.filesDir,
50
- ASSETS_DIRECTORY + File.pathSeparator + path.toLowerCase(Locale.ROOT)
51
- )
52
- if (!file.exists()) file.createNewFile()
53
- return file
42
+ internal enum class ImageColorType {
43
+ COLORED,
44
+ DARK,
45
+ LIGHT
54
46
  }
55
-
56
47
  }
@@ -0,0 +1,23 @@
1
+ package com.primerioreactnative.components.assets
2
+
3
+ import com.facebook.react.bridge.ReactApplicationContext
4
+ import java.io.File
5
+
6
+ internal object CardNetworkImageFileProvider {
7
+
8
+ private const val ASSETS_DIRECTORY = "primer-react-native-sdk"
9
+
10
+ fun getFileForCardNetworkAsset(
11
+ context: ReactApplicationContext,
12
+ path: String,
13
+ ): File {
14
+ val directory = File(context.filesDir, ASSETS_DIRECTORY)
15
+ if (!directory.exists()) directory.mkdirs()
16
+ val file = File(
17
+ directory,
18
+ path.lowercase()
19
+ )
20
+ if (!file.exists()) file.createNewFile()
21
+ return file
22
+ }
23
+ }
@@ -0,0 +1,24 @@
1
+ package com.primerioreactnative.components.assets
2
+
3
+ import com.facebook.react.bridge.ReactApplicationContext
4
+ import java.io.File
5
+
6
+ internal object PaymentMethodAssetFileProvider {
7
+
8
+ private const val ASSETS_DIRECTORY = "primer-react-native-sdk"
9
+
10
+ fun getFileForPaymentMethodAsset(
11
+ context: ReactApplicationContext,
12
+ path: String,
13
+ type: AssetsManager.ImageColorType
14
+ ): File {
15
+ val directory = File(context.filesDir, ASSETS_DIRECTORY + File.separator + path)
16
+ if (!directory.exists()) directory.mkdirs()
17
+ val file = File(
18
+ directory,
19
+ type.name.lowercase()
20
+ )
21
+ if (!file.exists()) file.createNewFile()
22
+ return file
23
+ }
24
+ }
@@ -0,0 +1,25 @@
1
+ package com.primerioreactnative.components.datamodels.core
2
+
3
+ import io.primer.android.PrimerSessionIntent
4
+ import io.primer.android.components.domain.core.models.PrimerHeadlessUniversalCheckoutPaymentMethod
5
+ import io.primer.android.components.domain.core.models.PrimerPaymentMethodManagerCategory
6
+ import kotlinx.serialization.Serializable
7
+
8
+ @Serializable
9
+ data class PrimerRNAvailablePaymentMethods(
10
+ val availablePaymentMethods: List<PrimerRNHeadlessUniversalCheckoutPaymentMethod>
11
+ )
12
+
13
+ @Serializable
14
+ data class PrimerRNHeadlessUniversalCheckoutPaymentMethod(
15
+ val paymentMethodType: String,
16
+ val supportedPrimerSessionIntents: List<PrimerSessionIntent>,
17
+ val paymentMethodManagerCategories: List<PrimerPaymentMethodManagerCategory>,
18
+ )
19
+
20
+ internal fun PrimerHeadlessUniversalCheckoutPaymentMethod.toPrimerRNHeadlessUniversalCheckoutPaymentMethod() =
21
+ PrimerRNHeadlessUniversalCheckoutPaymentMethod(
22
+ paymentMethodType,
23
+ supportedPrimerSessionIntents,
24
+ paymentMethodManagerCategories.minus(PrimerPaymentMethodManagerCategory.CARD_COMPONENTS)
25
+ )
@@ -0,0 +1,9 @@
1
+ package com.primerioreactnative.components.datamodels.core
2
+
3
+ internal enum class PrimerRawPaymentMethodType {
4
+ PAYMENT_CARD,
5
+ XENDIT_OVO,
6
+ ADYEN_MBWAY,
7
+ ADYEN_BANCONTACT_CARD,
8
+ XENDIT_RETAIL_OUTLETS
9
+ }
@@ -0,0 +1,106 @@
1
+ package com.primerioreactnative.components.datamodels.manager.asset
2
+
3
+ import android.graphics.drawable.Drawable
4
+ import com.facebook.react.bridge.ReactApplicationContext
5
+ import com.primerioreactnative.components.assets.AssetsManager
6
+ import com.primerioreactnative.components.assets.AssetsManager.drawableToBitmap
7
+ import com.primerioreactnative.components.assets.PaymentMethodAssetFileProvider.getFileForPaymentMethodAsset
8
+ import io.primer.android.components.ui.assets.PrimerPaymentMethodAsset
9
+ import kotlinx.serialization.Serializable
10
+
11
+ @Serializable
12
+ data class PrimerRNPaymentMethodAssets(
13
+ val paymentMethodAssets: List<PrimerRNPaymentMethodAsset>
14
+ )
15
+
16
+ @Serializable
17
+ data class PrimerRNPaymentMethodAssetWrapper(
18
+ val paymentMethodAsset: PrimerRNPaymentMethodAsset
19
+ )
20
+
21
+ @Serializable
22
+ data class PrimerRNPaymentMethodAsset(
23
+ val paymentMethodType: String,
24
+ val paymentMethodName: String,
25
+ val paymentMethodLogo: PrimerRNPaymentMethodLogo,
26
+ val paymentMethodBackgroundColor: PrimerRNPaymentMethodBackgroundColor
27
+ )
28
+
29
+ @Serializable
30
+ data class PrimerRNPaymentMethodLogo(
31
+ val colored: String?,
32
+ val light: String?,
33
+ val dark: String?
34
+ )
35
+
36
+ @Serializable
37
+ data class PrimerRNPaymentMethodBackgroundColor(
38
+ val colored: String?,
39
+ val light: String?,
40
+ val dark: String?
41
+ )
42
+
43
+ @Serializable
44
+ data class PrimerCardNetworkAsset(
45
+ val cardNetworkImageURL: String
46
+ )
47
+
48
+ internal fun PrimerPaymentMethodAsset.toPrimerRNPaymentMethodAsset(
49
+ reactContext: ReactApplicationContext,
50
+ paymentMethodType: String,
51
+ ) = PrimerRNPaymentMethodAsset(
52
+ paymentMethodType,
53
+ paymentMethodName,
54
+ PrimerRNPaymentMethodLogo(
55
+ paymentMethodLogo.colored?.let {
56
+ getFileUrl(
57
+ reactContext,
58
+ paymentMethodType,
59
+ AssetsManager.ImageColorType.COLORED,
60
+ it
61
+ )
62
+ },
63
+ paymentMethodLogo.light?.let {
64
+ getFileUrl(
65
+ reactContext,
66
+ paymentMethodType,
67
+ AssetsManager.ImageColorType.LIGHT,
68
+ it
69
+ )
70
+ },
71
+ paymentMethodLogo.dark?.let {
72
+ getFileUrl(
73
+ reactContext,
74
+ paymentMethodType,
75
+ AssetsManager.ImageColorType.DARK,
76
+ it
77
+ )
78
+ }
79
+ ),
80
+ PrimerRNPaymentMethodBackgroundColor(
81
+ paymentMethodBackgroundColor.colored?.let {
82
+ String.format("#%06X", (0xFFFFFF and it))
83
+ },
84
+ paymentMethodBackgroundColor.light?.let {
85
+ String.format("#%06X", (0xFFFFFF and it))
86
+ },
87
+ paymentMethodBackgroundColor.dark?.let {
88
+ String.format("#%06X", (0xFFFFFF and it))
89
+ }
90
+ )
91
+ )
92
+
93
+
94
+ private fun getFileUrl(
95
+ reactContext: ReactApplicationContext,
96
+ paymentMethodType: String,
97
+ imageColorType: AssetsManager.ImageColorType,
98
+ drawable: Drawable,
99
+ ): String {
100
+ val file = getFileForPaymentMethodAsset(reactContext, paymentMethodType, imageColorType)
101
+ AssetsManager.saveBitmapToFile(
102
+ file,
103
+ drawableToBitmap(drawable),
104
+ )
105
+ return "file://${file.absolutePath}"
106
+ }
@@ -1,21 +1,19 @@
1
- package com.primerioreactnative.huc.datamodels.manager.raw.card
1
+ package com.primerioreactnative.components.datamodels.manager.raw.card
2
2
 
3
- import io.primer.android.components.domain.core.models.card.PrimerRawCardData
3
+ import io.primer.android.components.domain.core.models.card.PrimerCardData
4
4
  import kotlinx.serialization.Serializable
5
5
 
6
6
  @Serializable
7
- internal data class PrimerRNRawCardData(
7
+ internal data class PrimerRNCardData(
8
8
  val cardNumber: String? = null,
9
- val expiryMonth: String? = null,
10
- val expiryYear: String? = null,
9
+ val expiryDate: String? = null,
11
10
  val cvv: String? = null,
12
11
  val cardholderName: String? = null
13
12
  ) {
14
13
  fun toPrimerCardData() =
15
- PrimerRawCardData(
14
+ PrimerCardData(
16
15
  cardNumber.orEmpty(),
17
- expiryMonth.orEmpty(),
18
- expiryYear.orEmpty(),
16
+ expiryDate.orEmpty(),
19
17
  cvv.orEmpty(),
20
18
  cardholderName
21
19
  )
@@ -0,0 +1,19 @@
1
+ package com.primerioreactnative.components.datamodels.manager.raw.cardRedirect
2
+
3
+ import io.primer.android.components.domain.core.models.bancontact.PrimerBancontactCardData
4
+ import kotlinx.serialization.Serializable
5
+
6
+ @Serializable
7
+ internal data class PrimerRNBancontactCardData(
8
+ val cardNumber: String? = null,
9
+ val expiryDate: String? = null,
10
+ val expiryYear: String? = null,
11
+ val cardholderName: String? = null
12
+ ) {
13
+ fun toPrimerBancontactCardData() =
14
+ PrimerBancontactCardData(
15
+ cardNumber.orEmpty(),
16
+ expiryDate.orEmpty(),
17
+ cardholderName.orEmpty()
18
+ )
19
+ }
@@ -0,0 +1,14 @@
1
+ package com.primerioreactnative.components.datamodels.manager.raw.phoneNumber
2
+
3
+ import io.primer.android.components.domain.core.models.phoneNumber.PrimerPhoneNumberData
4
+ import kotlinx.serialization.Serializable
5
+
6
+ @Serializable
7
+ internal data class PrimerRNPhoneNumberData(
8
+ val phoneNumber: String? = null,
9
+ ) {
10
+ fun toPrimerPhoneNumberData() =
11
+ PrimerPhoneNumberData(
12
+ phoneNumber.orEmpty()
13
+ )
14
+ }
@@ -0,0 +1,12 @@
1
+ package com.primerioreactnative.components.datamodels.manager.raw.retailOutlets
2
+
3
+ import io.primer.android.components.domain.core.models.retailOutlet.PrimerRetailerData
4
+ import kotlinx.serialization.Serializable
5
+
6
+ @Serializable
7
+ internal data class PrimerRNRetailOutletData(
8
+ val id: String
9
+ ) {
10
+
11
+ fun toPrimerRetailOutletData() = PrimerRetailerData(id)
12
+ }
@@ -1,4 +1,4 @@
1
- package com.primerioreactnative.huc.datamodels.manager.raw.retailOutlets
1
+ package com.primerioreactnative.components.datamodels.manager.raw.retailOutlets
2
2
 
3
3
  import io.primer.android.data.payments.configure.retailOutlets.RetailOutletsList
4
4
  import kotlinx.serialization.Serializable
@@ -0,0 +1,17 @@
1
+ package com.primerioreactnative.components.events
2
+
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"),
17
+ }
@@ -1,7 +1,6 @@
1
- package com.primerioreactnative.huc.events
1
+ package com.primerioreactnative.components.events
2
2
 
3
3
  internal enum class PrimerHeadlessUniversalCheckoutRawDataManagerEvent(val eventName: String) {
4
4
  ON_METADATA_CHANGED("onMetadataChange"),
5
5
  ON_VALIDATION_CHANGED("onValidation"),
6
- ON_NATIVE_ERROR("onNativeError"),
7
6
  }
@@ -0,0 +1,131 @@
1
+ package com.primerioreactnative.components.manager.asset
2
+
3
+ import androidx.core.content.ContextCompat
4
+ import com.facebook.react.bridge.Promise
5
+ import com.facebook.react.bridge.ReactApplicationContext
6
+ import com.facebook.react.bridge.ReactContextBaseJavaModule
7
+ import com.facebook.react.bridge.ReactMethod
8
+ import com.primerioreactnative.components.assets.AssetsManager
9
+ import com.primerioreactnative.components.assets.AssetsManager.drawableToBitmap
10
+ import com.primerioreactnative.components.assets.CardNetworkImageFileProvider.getFileForCardNetworkAsset
11
+ import com.primerioreactnative.components.datamodels.manager.asset.PrimerCardNetworkAsset
12
+ import com.primerioreactnative.components.datamodels.manager.asset.PrimerRNPaymentMethodAssetWrapper
13
+ import com.primerioreactnative.components.datamodels.manager.asset.PrimerRNPaymentMethodAssets
14
+ import com.primerioreactnative.components.datamodels.manager.asset.toPrimerRNPaymentMethodAsset
15
+ import com.primerioreactnative.datamodels.ErrorTypeRN
16
+ import com.primerioreactnative.utils.convertJsonToMap
17
+ import com.primerioreactnative.utils.errorTo
18
+ import io.primer.android.ExperimentalPrimerApi
19
+ import io.primer.android.components.SdkUninitializedException
20
+ import io.primer.android.components.ui.assets.PrimerHeadlessUniversalCheckoutAssetsManager
21
+ import io.primer.android.ui.CardNetwork
22
+ import kotlinx.serialization.encodeToString
23
+ import kotlinx.serialization.json.Json
24
+ import org.json.JSONObject
25
+
26
+ @ExperimentalPrimerApi
27
+ internal class PrimerRNHeadlessUniversalCheckoutAssetManager(
28
+ private val reactContext: ReactApplicationContext,
29
+ ) : ReactContextBaseJavaModule(reactContext) {
30
+
31
+ override fun getName() = "RNTPrimerHeadlessUniversalCheckoutAssetsManager"
32
+
33
+ @ReactMethod
34
+ fun getCardNetworkImage(
35
+ cardNetworkStr: String,
36
+ promise: Promise,
37
+ ) {
38
+ val cardNetwork =
39
+ CardNetwork.Type.values().find { it.name.equals(cardNetworkStr, ignoreCase = true) }
40
+ when (cardNetwork) {
41
+ null -> {
42
+ val exception =
43
+ ErrorTypeRN.NativeBridgeFailed errorTo "Failed to find asset of $cardNetworkStr."
44
+ promise.reject(exception.errorId, exception.description)
45
+ }
46
+ else -> try {
47
+ PrimerHeadlessUniversalCheckoutAssetsManager.getCardNetworkImage(cardNetwork)
48
+ .let { resourceId ->
49
+ val file = getFileForCardNetworkAsset(reactContext, cardNetworkStr)
50
+ AssetsManager.saveBitmapToFile(
51
+ file,
52
+ drawableToBitmap(ContextCompat.getDrawable(reactContext, resourceId)!!),
53
+ )
54
+ promise.resolve(
55
+ convertJsonToMap(
56
+ JSONObject(
57
+ Json.encodeToString(
58
+ PrimerCardNetworkAsset("file://${file.absolutePath}")
59
+ )
60
+ )
61
+ )
62
+ )
63
+ }
64
+ } catch (e: SdkUninitializedException) {
65
+ promise.reject(ErrorTypeRN.UnitializedSdkSession.errorId, e.message, e)
66
+ } catch (e: Exception) {
67
+ promise.reject(ErrorTypeRN.NativeBridgeFailed.errorId, e.message, e)
68
+ }
69
+ }
70
+ }
71
+
72
+ @ReactMethod
73
+ fun getPaymentMethodAsset(paymentMethodTypeStr: String, promise: Promise) {
74
+ try {
75
+ val paymentMethodAsset =
76
+ PrimerHeadlessUniversalCheckoutAssetsManager.getPaymentMethodAsset(
77
+ reactContext,
78
+ paymentMethodTypeStr
79
+ )
80
+ promise.resolve(
81
+ convertJsonToMap(
82
+ JSONObject(
83
+ Json.encodeToString(
84
+ PrimerRNPaymentMethodAssetWrapper(
85
+ paymentMethodAsset.toPrimerRNPaymentMethodAsset(
86
+ reactContext,
87
+ paymentMethodTypeStr
88
+ )
89
+ )
90
+ )
91
+ )
92
+ )
93
+ )
94
+ } catch (e: SdkUninitializedException) {
95
+ promise.reject(ErrorTypeRN.UnitializedSdkSession.errorId, e.message, e)
96
+ } catch (e: Exception) {
97
+ val exception =
98
+ ErrorTypeRN.NativeBridgeFailed errorTo "Failed to find asset of $paymentMethodTypeStr for this session."
99
+ promise.reject(exception.errorId, exception.description)
100
+ }
101
+ }
102
+
103
+ @ReactMethod
104
+ fun getPaymentMethodAssets(promise: Promise) {
105
+ try {
106
+ val paymentMethodAssets =
107
+ PrimerHeadlessUniversalCheckoutAssetsManager.getPaymentMethodAssets(reactContext)
108
+ if (paymentMethodAssets.isEmpty()) {
109
+ val exception =
110
+ ErrorTypeRN.NativeBridgeFailed errorTo "Failed to find assets for this session"
111
+ promise.reject(exception.errorId, exception.description)
112
+ }
113
+ promise.resolve(
114
+ convertJsonToMap(
115
+ JSONObject(
116
+ Json.encodeToString(
117
+ PrimerRNPaymentMethodAssets(paymentMethodAssets.map {
118
+ it.toPrimerRNPaymentMethodAsset(
119
+ reactContext,
120
+ it.paymentMethodType
121
+ )
122
+ })
123
+ )
124
+ )
125
+ )
126
+ )
127
+ } catch (e: SdkUninitializedException) {
128
+ promise.reject(ErrorTypeRN.UnitializedSdkSession.errorId, e.message, e)
129
+ }
130
+ }
131
+ }
@@ -0,0 +1,87 @@
1
+ package com.primerioreactnative.components.manager.nativeUi
2
+
3
+ import com.facebook.react.bridge.Promise
4
+ import com.facebook.react.bridge.ReactApplicationContext
5
+ import com.facebook.react.bridge.ReactContextBaseJavaModule
6
+ import com.facebook.react.bridge.ReactMethod
7
+ import com.primerioreactnative.datamodels.ErrorTypeRN
8
+ import com.primerioreactnative.datamodels.PrimerErrorRN
9
+ import com.primerioreactnative.utils.errorTo
10
+ import io.primer.android.ExperimentalPrimerApi
11
+ import io.primer.android.PrimerSessionIntent
12
+ import io.primer.android.components.SdkUninitializedException
13
+ import io.primer.android.components.domain.exception.UnsupportedPaymentMethodManagerException
14
+ import io.primer.android.components.manager.nativeUi.PrimerHeadlessUniversalCheckoutNativeUiManager
15
+ import io.primer.android.components.manager.nativeUi.PrimerHeadlessUniversalCheckoutNativeUiManagerInterface
16
+ import io.primer.android.domain.exception.UnsupportedPaymentIntentException
17
+
18
+ @ExperimentalPrimerApi
19
+ internal class PrimerRNHeadlessUniversalCheckoutNativeUiManager(
20
+ private val reactContext: ReactApplicationContext,
21
+ ) : ReactContextBaseJavaModule(reactContext) {
22
+
23
+ private lateinit var nativeUiManager: PrimerHeadlessUniversalCheckoutNativeUiManagerInterface
24
+ private var paymentMethodTypeStr: String? = null
25
+
26
+ override fun getName() = "RNTPrimerHeadlessUniversalPaymentMethodNativeUIManager"
27
+
28
+ @ReactMethod
29
+ fun configure(paymentMethodTypeStr: String, promise: Promise) {
30
+ try {
31
+ nativeUiManager = PrimerHeadlessUniversalCheckoutNativeUiManager.newInstance(
32
+ paymentMethodTypeStr
33
+ )
34
+ this.paymentMethodTypeStr = paymentMethodTypeStr
35
+ promise.resolve(null)
36
+ } catch (e: SdkUninitializedException) {
37
+ promise.reject(ErrorTypeRN.UnitializedSdkSession.errorId, e.message, e)
38
+ } catch (e: UnsupportedPaymentMethodManagerException) {
39
+ promise.reject(ErrorTypeRN.UnsupportedPaymentMethod.errorId, e.message, e)
40
+ } catch (e: Exception) {
41
+ val exception =
42
+ ErrorTypeRN.NativeBridgeFailed errorTo e.message.orEmpty()
43
+ promise.reject(exception.errorId, exception.description, e)
44
+ }
45
+ }
46
+
47
+ @ReactMethod
48
+ fun showPaymentMethod(
49
+ intentStr: String,
50
+ promise: Promise
51
+ ) {
52
+
53
+ if (::nativeUiManager.isInitialized.not()) {
54
+ val exception = PrimerErrorRN(
55
+ ErrorTypeRN.NativeBridgeFailed.errorId,
56
+ "The NativeUIManager has not been initialized.",
57
+ null,
58
+ "Initialize the NativeUIManager by calling the configure function" +
59
+ " and providing a payment method type."
60
+ )
61
+ promise.reject(exception.errorId, exception.description)
62
+ } else if (PrimerSessionIntent.values()
63
+ .firstOrNull { intentStr.equals(it.name, true) } == null
64
+ ) {
65
+ val exception = PrimerErrorRN(
66
+ ErrorTypeRN.NativeBridgeFailed.errorId,
67
+ "Invalid value for 'intent'.",
68
+ null,
69
+ "'intent' can be 'CHECKOUT' or 'VAULT'."
70
+ )
71
+ promise.reject(exception.errorId, exception.description)
72
+ } else {
73
+ try {
74
+ nativeUiManager.showPaymentMethod(
75
+ reactContext,
76
+ PrimerSessionIntent.valueOf(intentStr.uppercase())
77
+ )
78
+ } catch (e: UnsupportedPaymentIntentException) {
79
+ promise.reject(ErrorTypeRN.UnsupportedPaymentIntent.errorId, e.message, e)
80
+ } catch (e: Exception) {
81
+ val exception =
82
+ ErrorTypeRN.NativeBridgeFailed errorTo e.message.orEmpty()
83
+ promise.reject(exception.errorId, exception.description, e)
84
+ }
85
+ }
86
+ }
87
+ }