@primer-io/react-native 2.16.0 → 2.17.0-rc.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 (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 +13 -34
  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 +99 -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 +0 -8
  30. package/android/src/main/java/com/primerioreactnative/extensions/PrimerPaymentMethodOptionsRN.kt +0 -4
  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 +82 -0
  42. package/ios/{DataModels → Sources/DataModels}/PrimerThemeRN.swift +0 -0
  43. package/ios/Sources/DataModels/RNTNativeError.swift +22 -0
  44. package/ios/Sources/DataModels/RNTPrimerPaymentMethodAsset.swift +65 -0
  45. package/ios/Sources/Headless Universal Checkout/Managers/Payment Method Managers/RNTNativeUIManager.m +19 -0
  46. package/ios/Sources/Headless Universal Checkout/Managers/Payment Method Managers/RNTNativeUIManager.swift +63 -0
  47. package/ios/{Headless Universal Checkout → Sources/Headless Universal Checkout/Managers/Payment Method Managers}/RNTPrimerCardNumberInputElementManager.m +0 -0
  48. package/ios/Sources/Headless Universal Checkout/Managers/Payment Method Managers/RNTRawDataManager.m +23 -0
  49. package/ios/{Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutRawDataManager.swift → Sources/Headless Universal Checkout/Managers/Payment Method Managers/RNTRawDataManager.swift } +36 -31
  50. package/ios/Sources/Headless Universal Checkout/Managers/RNTAssetsManager.m +24 -0
  51. package/ios/Sources/Headless Universal Checkout/Managers/RNTAssetsManager.swift +107 -0
  52. package/ios/Sources/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.m +41 -0
  53. package/ios/Sources/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.swift +498 -0
  54. package/ios/Sources/Helpers/Encodable+Extension.swift +17 -0
  55. package/ios/Sources/Helpers/Error+Extensions.swift +39 -0
  56. package/ios/Sources/Helpers/UIColor+Extensions.swift +32 -0
  57. package/ios/Sources/Helpers/UIImage+Extensions.swift +32 -0
  58. package/ios/Sources/RNTPrimer.m +80 -0
  59. package/ios/{RNTPrimer.swift → Sources/RNTPrimer.swift} +20 -34
  60. package/lib/commonjs/HeadlessUniversalCheckout/Managers/AssetsManager.js +59 -0
  61. package/lib/commonjs/HeadlessUniversalCheckout/Managers/AssetsManager.js.map +1 -0
  62. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/NativeUIManager.js +35 -0
  63. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/NativeUIManager.js.map +1 -0
  64. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js +151 -0
  65. package/lib/commonjs/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js.map +1 -0
  66. package/lib/commonjs/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js +270 -0
  67. package/lib/commonjs/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js.map +1 -0
  68. package/lib/commonjs/{headless_checkout → HeadlessUniversalCheckout}/RNPrimerHeadlessUniversalCheckout.js +7 -81
  69. package/lib/commonjs/HeadlessUniversalCheckout/RNPrimerHeadlessUniversalCheckout.js.map +1 -0
  70. package/lib/commonjs/HeadlessUniversalCheckout/types.js +34 -0
  71. package/lib/commonjs/HeadlessUniversalCheckout/types.js.map +1 -0
  72. package/lib/commonjs/Primer.js +52 -52
  73. package/lib/commonjs/Primer.js.map +1 -1
  74. package/lib/commonjs/PrimerInput.js.map +1 -1
  75. package/lib/commonjs/RNPrimer.js +2 -12
  76. package/lib/commonjs/RNPrimer.js.map +1 -1
  77. package/lib/commonjs/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js.map +1 -1
  78. package/lib/commonjs/index.js +63 -71
  79. package/lib/commonjs/index.js.map +1 -1
  80. package/lib/commonjs/models/PrimerAsset.js +2 -0
  81. package/lib/commonjs/models/PrimerAsset.js.map +1 -0
  82. package/lib/commonjs/models/PrimerCheckoutAdditionalInfo.js.map +1 -1
  83. package/lib/commonjs/models/PrimerCheckoutData.js.map +1 -1
  84. package/lib/commonjs/models/PrimerCheckoutPaymentMethodData.js.map +1 -1
  85. package/lib/commonjs/models/PrimerClientSession.js.map +1 -1
  86. package/lib/commonjs/models/PrimerCountryCode.js.map +1 -1
  87. package/lib/commonjs/models/PrimerCurrencyCode.js.map +1 -1
  88. package/lib/commonjs/models/PrimerError.js +4 -4
  89. package/lib/commonjs/models/PrimerError.js.map +1 -1
  90. package/lib/commonjs/models/PrimerHandlers.js +2 -0
  91. package/lib/commonjs/models/PrimerHandlers.js.map +1 -0
  92. package/lib/commonjs/models/PrimerHeadlessUniversalCheckoutPaymentMethod.js +2 -0
  93. package/lib/commonjs/models/PrimerHeadlessUniversalCheckoutPaymentMethod.js.map +1 -0
  94. package/lib/commonjs/models/PrimerImplementedRNCallbacks.js +2 -0
  95. package/lib/commonjs/models/PrimerImplementedRNCallbacks.js.map +1 -0
  96. package/lib/commonjs/models/PrimerInitializationData.js.map +1 -1
  97. package/lib/commonjs/models/PrimerInputElementType.js +20 -0
  98. package/lib/commonjs/models/PrimerInputElementType.js.map +1 -0
  99. package/lib/commonjs/models/PrimerInterfaces.js.map +1 -1
  100. package/lib/commonjs/models/PrimerPaymentMethodManagerCategory.js +14 -0
  101. package/lib/commonjs/models/PrimerPaymentMethodManagerCategory.js.map +1 -0
  102. package/lib/commonjs/models/PrimerPaymentMethodTokenData.js.map +1 -1
  103. package/lib/commonjs/models/PrimerRawData.js.map +1 -1
  104. package/lib/commonjs/models/PrimerSessionIntent.js.map +1 -1
  105. package/lib/commonjs/models/PrimerSettings.js.map +1 -1
  106. package/lib/commonjs/models/PrimerTheme.js.map +1 -1
  107. package/lib/commonjs/models/RetailOutletsRetail.js.map +1 -1
  108. package/lib/commonjs/utils/index.js.map +1 -1
  109. package/lib/module/HeadlessUniversalCheckout/Managers/AssetsManager.js +52 -0
  110. package/lib/module/HeadlessUniversalCheckout/Managers/AssetsManager.js.map +1 -0
  111. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/NativeUIManager.js +28 -0
  112. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/NativeUIManager.js.map +1 -0
  113. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js +144 -0
  114. package/lib/module/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.js.map +1 -0
  115. package/lib/module/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js +261 -0
  116. package/lib/module/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.js.map +1 -0
  117. package/lib/module/{headless_checkout → HeadlessUniversalCheckout}/RNPrimerHeadlessUniversalCheckout.js +7 -81
  118. package/lib/module/HeadlessUniversalCheckout/RNPrimerHeadlessUniversalCheckout.js.map +1 -0
  119. package/lib/module/HeadlessUniversalCheckout/types.js +33 -0
  120. package/lib/module/HeadlessUniversalCheckout/types.js.map +1 -0
  121. package/lib/module/Primer.js +52 -52
  122. package/lib/module/Primer.js.map +1 -1
  123. package/lib/module/PrimerInput.js.map +1 -1
  124. package/lib/module/RNPrimer.js +2 -12
  125. package/lib/module/RNPrimer.js.map +1 -1
  126. package/lib/module/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js.map +1 -1
  127. package/lib/module/index.js +15 -9
  128. package/lib/module/index.js.map +1 -1
  129. package/lib/module/models/PrimerAsset.js +2 -0
  130. package/lib/module/models/PrimerAsset.js.map +1 -0
  131. package/lib/module/models/PrimerCheckoutAdditionalInfo.js.map +1 -1
  132. package/lib/module/models/PrimerCheckoutData.js.map +1 -1
  133. package/lib/module/models/PrimerCheckoutPaymentMethodData.js.map +1 -1
  134. package/lib/module/models/PrimerClientSession.js.map +1 -1
  135. package/lib/module/models/PrimerCountryCode.js.map +1 -1
  136. package/lib/module/models/PrimerCurrencyCode.js.map +1 -1
  137. package/lib/module/models/PrimerError.js +4 -4
  138. package/lib/module/models/PrimerError.js.map +1 -1
  139. package/lib/module/models/PrimerHandlers.js +2 -0
  140. package/lib/module/models/PrimerHandlers.js.map +1 -0
  141. package/lib/module/models/PrimerHeadlessUniversalCheckoutPaymentMethod.js +2 -0
  142. package/lib/module/models/PrimerHeadlessUniversalCheckoutPaymentMethod.js.map +1 -0
  143. package/lib/module/models/PrimerImplementedRNCallbacks.js +2 -0
  144. package/lib/module/models/PrimerImplementedRNCallbacks.js.map +1 -0
  145. package/lib/module/models/PrimerInitializationData.js.map +1 -1
  146. package/lib/module/models/PrimerInputElementType.js +13 -0
  147. package/lib/module/models/PrimerInputElementType.js.map +1 -0
  148. package/lib/module/models/PrimerInterfaces.js.map +1 -1
  149. package/lib/module/models/PrimerPaymentMethodManagerCategory.js +7 -0
  150. package/lib/module/models/PrimerPaymentMethodManagerCategory.js.map +1 -0
  151. package/lib/module/models/PrimerPaymentMethodTokenData.js.map +1 -1
  152. package/lib/module/models/PrimerRawData.js.map +1 -1
  153. package/lib/module/models/PrimerSessionIntent.js.map +1 -1
  154. package/lib/module/models/PrimerSettings.js.map +1 -1
  155. package/lib/module/models/PrimerTheme.js.map +1 -1
  156. package/lib/module/models/RetailOutletsRetail.js.map +1 -1
  157. package/lib/module/utils/index.js.map +1 -1
  158. package/lib/typescript/HeadlessUniversalCheckout/Managers/AssetsManager.d.ts +9 -0
  159. package/lib/typescript/HeadlessUniversalCheckout/Managers/AssetsManager.d.ts.map +1 -0
  160. package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/NativeUIManager.d.ts +8 -0
  161. package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/NativeUIManager.d.ts.map +1 -0
  162. package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.d.ts +29 -0
  163. package/lib/typescript/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.d.ts.map +1 -0
  164. package/lib/typescript/{headless_checkout → HeadlessUniversalCheckout}/PrimerHeadlessUniversalCheckout.d.ts +4 -5
  165. package/lib/typescript/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.d.ts.map +1 -0
  166. package/lib/typescript/HeadlessUniversalCheckout/RNPrimerHeadlessUniversalCheckout.d.ts +18 -0
  167. package/lib/typescript/HeadlessUniversalCheckout/RNPrimerHeadlessUniversalCheckout.d.ts.map +1 -0
  168. package/lib/typescript/HeadlessUniversalCheckout/types.d.ts +1 -0
  169. package/lib/typescript/HeadlessUniversalCheckout/types.d.ts.map +1 -0
  170. package/lib/typescript/Primer.d.ts +1 -0
  171. package/lib/typescript/Primer.d.ts.map +1 -0
  172. package/lib/typescript/PrimerInput.d.ts +5 -4
  173. package/lib/typescript/PrimerInput.d.ts.map +1 -0
  174. package/lib/typescript/RNPrimer.d.ts +3 -4
  175. package/lib/typescript/RNPrimer.d.ts.map +1 -0
  176. package/lib/typescript/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.d.ts +1 -0
  177. package/lib/typescript/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.d.ts.map +1 -0
  178. package/lib/typescript/index.d.ts +18 -9
  179. package/lib/typescript/index.d.ts.map +1 -0
  180. package/lib/typescript/models/PrimerAsset.d.ts +14 -0
  181. package/lib/typescript/models/PrimerAsset.d.ts.map +1 -0
  182. package/lib/typescript/models/PrimerCheckoutAdditionalInfo.d.ts +7 -6
  183. package/lib/typescript/models/PrimerCheckoutAdditionalInfo.d.ts.map +1 -0
  184. package/lib/typescript/models/PrimerCheckoutData.d.ts +3 -2
  185. package/lib/typescript/models/PrimerCheckoutData.d.ts.map +1 -0
  186. package/lib/typescript/models/PrimerCheckoutPaymentMethodData.d.ts +2 -1
  187. package/lib/typescript/models/PrimerCheckoutPaymentMethodData.d.ts.map +1 -0
  188. package/lib/typescript/models/PrimerClientSession.d.ts +6 -5
  189. package/lib/typescript/models/PrimerClientSession.d.ts.map +1 -0
  190. package/lib/typescript/models/PrimerCountryCode.d.ts +2 -1
  191. package/lib/typescript/models/PrimerCountryCode.d.ts.map +1 -0
  192. package/lib/typescript/models/PrimerCurrencyCode.d.ts +2 -1
  193. package/lib/typescript/models/PrimerCurrencyCode.d.ts.map +1 -0
  194. package/lib/typescript/models/PrimerError.d.ts +3 -1
  195. package/lib/typescript/models/PrimerError.d.ts.map +1 -0
  196. package/lib/typescript/models/PrimerHandlers.d.ts +22 -0
  197. package/lib/typescript/models/PrimerHandlers.d.ts.map +1 -0
  198. package/lib/typescript/models/PrimerHeadlessUniversalCheckoutPaymentMethod.d.ts +6 -0
  199. package/lib/typescript/models/PrimerHeadlessUniversalCheckoutPaymentMethod.d.ts.map +1 -0
  200. package/lib/typescript/models/PrimerImplementedRNCallbacks.d.ts +17 -0
  201. package/lib/typescript/models/PrimerImplementedRNCallbacks.d.ts.map +1 -0
  202. package/lib/typescript/models/PrimerInitializationData.d.ts +3 -2
  203. package/lib/typescript/models/PrimerInitializationData.d.ts.map +1 -0
  204. package/lib/typescript/models/PrimerInputElementType.d.ts +12 -0
  205. package/lib/typescript/models/PrimerInputElementType.d.ts.map +1 -0
  206. package/lib/typescript/models/PrimerInterfaces.d.ts +2 -20
  207. package/lib/typescript/models/PrimerInterfaces.d.ts.map +1 -0
  208. package/lib/typescript/models/PrimerPaymentMethodManagerCategory.d.ts +6 -0
  209. package/lib/typescript/models/PrimerPaymentMethodManagerCategory.d.ts.map +1 -0
  210. package/lib/typescript/models/PrimerPaymentMethodTokenData.d.ts +2 -1
  211. package/lib/typescript/models/PrimerPaymentMethodTokenData.d.ts.map +1 -0
  212. package/lib/typescript/models/PrimerRawData.d.ts +7 -10
  213. package/lib/typescript/models/PrimerRawData.d.ts.map +1 -0
  214. package/lib/typescript/models/PrimerSessionIntent.d.ts +1 -0
  215. package/lib/typescript/models/PrimerSessionIntent.d.ts.map +1 -0
  216. package/lib/typescript/models/PrimerSettings.d.ts +30 -16
  217. package/lib/typescript/models/PrimerSettings.d.ts.map +1 -0
  218. package/lib/typescript/models/PrimerTheme.d.ts +3 -2
  219. package/lib/typescript/models/PrimerTheme.d.ts.map +1 -0
  220. package/lib/typescript/models/RetailOutletsRetail.d.ts +2 -1
  221. package/lib/typescript/models/RetailOutletsRetail.d.ts.map +1 -0
  222. package/lib/typescript/utils/index.d.ts +1 -0
  223. package/lib/typescript/utils/index.d.ts.map +1 -0
  224. package/package.json +8 -7
  225. package/primer-io-react-native.podspec +1 -2
  226. package/src/HeadlessUniversalCheckout/Managers/AssetsManager.ts +56 -0
  227. package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/NativeUIManager.ts +31 -0
  228. package/src/HeadlessUniversalCheckout/Managers/PaymentMethodManagers/RawDataManager.ts +166 -0
  229. package/src/HeadlessUniversalCheckout/PrimerHeadlessUniversalCheckout.ts +333 -0
  230. package/src/{headless_checkout → HeadlessUniversalCheckout}/RNPrimerHeadlessUniversalCheckout.ts +37 -128
  231. package/src/HeadlessUniversalCheckout/types.ts +32 -0
  232. package/src/Primer.ts +49 -60
  233. package/src/RNPrimer.ts +2 -18
  234. package/src/index.tsx +43 -29
  235. package/src/models/PrimerAsset.ts +13 -0
  236. package/src/models/PrimerError.ts +3 -1
  237. package/src/models/PrimerHandlers.ts +25 -0
  238. package/src/models/PrimerHeadlessUniversalCheckoutPaymentMethod.ts +5 -0
  239. package/src/models/PrimerImplementedRNCallbacks.ts +20 -0
  240. package/src/models/PrimerInputElementType.ts +11 -0
  241. package/src/models/PrimerInterfaces.ts +1 -28
  242. package/src/models/PrimerPaymentMethodManagerCategory.ts +5 -0
  243. package/src/models/PrimerRawData.ts +6 -10
  244. package/src/models/PrimerSettings.ts +40 -26
  245. package/android/src/main/java/com/primerioreactnative/huc/datamodels/manager/raw/cardRedirect/PrimerRNPRawCardRedirectData.kt +0 -20
  246. package/android/src/main/java/com/primerioreactnative/huc/datamodels/manager/raw/phoneNumber/PrimerRNRawPhoneNumberData.kt +0 -14
  247. package/android/src/main/java/com/primerioreactnative/huc/datamodels/manager/raw/retailOutlets/PrimerRNRawRetailOutletData.kt +0 -12
  248. package/android/src/main/java/com/primerioreactnative/huc/events/PrimerHeadlessUniversalCheckoutEvent.kt +0 -15
  249. package/ios/DataModels/ImplementedRNCallbacks.swift +0 -62
  250. package/ios/DataModels/PrimerErrorRN.swift +0 -35
  251. package/ios/DataModels/PrimerSettingsRN.swift +0 -84
  252. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.m +0 -62
  253. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.swift +0 -501
  254. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.m +0 -14
  255. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.swift +0 -117
  256. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutRawDataManager.m +0 -23
  257. package/ios/RNTPrimer.m +0 -59
  258. package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js +0 -288
  259. package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +0 -1
  260. package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckoutRawDataManager.js +0 -91
  261. package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckoutRawDataManager.js.map +0 -1
  262. package/lib/commonjs/headless_checkout/RNPrimerHeadlessUniversalCheckout.js.map +0 -1
  263. package/lib/commonjs/headless_checkout/RNPrimerHeadlessUniversalCheckoutRawDataManager.js +0 -91
  264. package/lib/commonjs/headless_checkout/RNPrimerHeadlessUniversalCheckoutRawDataManager.js.map +0 -1
  265. package/lib/commonjs/headless_checkout/types.js +0 -6
  266. package/lib/commonjs/headless_checkout/types.js.map +0 -1
  267. package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js +0 -279
  268. package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +0 -1
  269. package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckoutRawDataManager.js +0 -83
  270. package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckoutRawDataManager.js.map +0 -1
  271. package/lib/module/headless_checkout/RNPrimerHeadlessUniversalCheckout.js.map +0 -1
  272. package/lib/module/headless_checkout/RNPrimerHeadlessUniversalCheckoutRawDataManager.js +0 -84
  273. package/lib/module/headless_checkout/RNPrimerHeadlessUniversalCheckoutRawDataManager.js.map +0 -1
  274. package/lib/module/headless_checkout/types.js +0 -2
  275. package/lib/module/headless_checkout/types.js.map +0 -1
  276. package/lib/typescript/headless_checkout/PrimerHeadlessUniversalCheckoutRawDataManager.d.ts +0 -18
  277. package/lib/typescript/headless_checkout/RNPrimerHeadlessUniversalCheckout.d.ts +0 -22
  278. package/lib/typescript/headless_checkout/RNPrimerHeadlessUniversalCheckoutRawDataManager.d.ts +0 -14
  279. package/lib/typescript/headless_checkout/types.d.ts +0 -22
  280. package/src/headless_checkout/PrimerHeadlessUniversalCheckout.ts +0 -358
  281. package/src/headless_checkout/PrimerHeadlessUniversalCheckoutRawDataManager.ts +0 -109
  282. package/src/headless_checkout/RNPrimerHeadlessUniversalCheckoutRawDataManager.ts +0 -104
  283. package/src/headless_checkout/types.ts +0 -32
@@ -1,20 +1,21 @@
1
1
  package com.primerioreactnative
2
2
 
3
- import com.facebook.react.bridge.Arguments
4
- import com.facebook.react.bridge.Callback
5
3
  import com.facebook.react.bridge.Promise
4
+ import com.primerioreactnative.components.datamodels.core.PrimerRNAvailablePaymentMethods
5
+ import com.primerioreactnative.components.datamodels.core.toPrimerRNHeadlessUniversalCheckoutPaymentMethod
6
+ import com.primerioreactnative.components.events.PrimerHeadlessUniversalCheckoutEvent
6
7
  import com.primerioreactnative.datamodels.*
7
8
  import com.primerioreactnative.extensions.toCheckoutAdditionalInfoRN
8
9
  import com.primerioreactnative.extensions.toPrimerCheckoutDataRN
9
10
  import com.primerioreactnative.extensions.toPrimerClientSessionRN
10
11
  import com.primerioreactnative.extensions.toPrimerPaymentMethodDataRN
11
- import com.primerioreactnative.huc.events.PrimerHeadlessUniversalCheckoutEvent
12
12
  import com.primerioreactnative.utils.PrimerHeadlessUniversalCheckoutImplementedRNCallbacks
13
+ import com.primerioreactnative.utils.convertJsonToMap
13
14
  import com.primerioreactnative.utils.errorTo
14
- import io.primer.android.ExperimentalPrimerApi
15
+ import io.primer.android.completion.PrimerHeadlessUniversalCheckoutResumeDecisionHandler
15
16
  import io.primer.android.completion.PrimerPaymentCreationDecisionHandler
16
- import io.primer.android.completion.PrimerResumeDecisionHandler
17
17
  import io.primer.android.components.PrimerHeadlessUniversalCheckoutListener
18
+ import io.primer.android.components.PrimerHeadlessUniversalCheckoutUiListener
18
19
  import io.primer.android.components.domain.core.models.PrimerHeadlessUniversalCheckoutPaymentMethod
19
20
  import io.primer.android.domain.PrimerCheckoutData
20
21
  import io.primer.android.domain.action.models.PrimerClientSession
@@ -26,11 +27,10 @@ import io.primer.android.domain.tokenization.models.PrimerPaymentMethodData
26
27
  import io.primer.android.domain.tokenization.models.PrimerPaymentMethodTokenData
27
28
  import kotlinx.serialization.encodeToString
28
29
  import kotlinx.serialization.json.Json
29
- import org.json.JSONArray
30
30
  import org.json.JSONObject
31
31
 
32
- @OptIn(ExperimentalPrimerApi::class)
33
- class PrimerRNHeadlessUniversalCheckoutListener : PrimerHeadlessUniversalCheckoutListener {
32
+ class PrimerRNHeadlessUniversalCheckoutListener : PrimerHeadlessUniversalCheckoutListener,
33
+ PrimerHeadlessUniversalCheckoutUiListener {
34
34
  private var paymentCreationDecisionHandler: ((errorMessage: String?) -> Unit)? = null
35
35
  private var tokenizeSuccessDecisionHandler: ((resumeToken: String?, errorMessage: String?) -> Unit)? =
36
36
  null
@@ -44,37 +44,44 @@ class PrimerRNHeadlessUniversalCheckoutListener : PrimerHeadlessUniversalCheckou
44
44
  var sendErrorWithCheckoutData: ((error: PrimerErrorRN, checkoutData: PrimerCheckoutDataRN?) -> Unit)? =
45
45
  null
46
46
 
47
- var successCallback: Callback? = null
47
+ var successCallback: Promise? = null
48
48
 
49
49
  override fun onAvailablePaymentMethodsLoaded(paymentMethods: List<PrimerHeadlessUniversalCheckoutPaymentMethod>) {
50
+ val availablePaymentMethods =
51
+ JSONObject(
52
+ Json.encodeToString(
53
+ PrimerRNAvailablePaymentMethods(
54
+ paymentMethods.map { it.toPrimerRNHeadlessUniversalCheckoutPaymentMethod() }
55
+ )
56
+ )
57
+ )
58
+
50
59
  sendEvent?.invoke(
51
- PrimerHeadlessUniversalCheckoutEvent.ON_HUC_AVAILABLE_PAYMENT_METHODS_LOADED.eventName,
52
- JSONObject().apply {
53
- put("paymentMethodTypes", JSONArray(paymentMethods.map { it.paymentMethodType }))
54
- }
60
+ PrimerHeadlessUniversalCheckoutEvent.ON_AVAILABLE_PAYMENT_METHODS_LOAD.eventName,
61
+ availablePaymentMethods
55
62
  )
56
- successCallback?.invoke(
57
- Arguments.fromList(paymentMethods.map { it.paymentMethodType })
63
+ successCallback?.resolve(
64
+ convertJsonToMap(availablePaymentMethods)
58
65
  )
59
66
  }
60
67
 
61
68
  override fun onPreparationStarted(paymentMethodType: String) {
62
69
  sendEvent?.invoke(
63
- PrimerHeadlessUniversalCheckoutEvent.ON_HUC_PREPARE_START.eventName,
70
+ PrimerHeadlessUniversalCheckoutEvent.ON_PREPARE_START.eventName,
64
71
  JSONObject(Json.encodeToString(PrimerPaymentMethodDataRN(paymentMethodType)))
65
72
  )
66
73
  }
67
74
 
68
75
  override fun onPaymentMethodShowed(paymentMethodType: String) {
69
76
  sendEvent?.invoke(
70
- PrimerHeadlessUniversalCheckoutEvent.ON_HUC_PAYMENT_METHOD_SHOW.eventName,
77
+ PrimerHeadlessUniversalCheckoutEvent.ON_PAYMENT_METHOD_SHOW.eventName,
71
78
  JSONObject(Json.encodeToString(PrimerPaymentMethodDataRN(paymentMethodType)))
72
79
  )
73
80
  }
74
81
 
75
82
  override fun onTokenizationStarted(paymentMethodType: String) {
76
83
  sendEvent?.invoke(
77
- PrimerHeadlessUniversalCheckoutEvent.ON_HUC_TOKENIZE_START.eventName,
84
+ PrimerHeadlessUniversalCheckoutEvent.ON_TOKENIZE_START.eventName,
78
85
  JSONObject(Json.encodeToString(PrimerPaymentMethodDataRN(paymentMethodType)))
79
86
  )
80
87
  }
@@ -132,7 +139,12 @@ class PrimerRNHeadlessUniversalCheckoutListener : PrimerHeadlessUniversalCheckou
132
139
  if (implementedRNCallbacks?.isOnClientSessionUpdateImplemented == true) {
133
140
  sendEvent?.invoke(
134
141
  PrimerHeadlessUniversalCheckoutEvent.ON_CLIENT_SESSION_UPDATE.eventName,
135
- JSONObject(Json.encodeToString(clientSession.toPrimerClientSessionRN()))
142
+ JSONObject().apply {
143
+ put(
144
+ "clientSession",
145
+ JSONObject(Json.encodeToString(clientSession.toPrimerClientSessionRN()))
146
+ )
147
+ }
136
148
  )
137
149
  } else {
138
150
  super.onClientSessionUpdated(clientSession)
@@ -141,16 +153,16 @@ class PrimerRNHeadlessUniversalCheckoutListener : PrimerHeadlessUniversalCheckou
141
153
 
142
154
  override fun onTokenizeSuccess(
143
155
  paymentMethodTokenData: PrimerPaymentMethodTokenData,
144
- decisionHandler: PrimerResumeDecisionHandler
156
+ decisionHandler: PrimerHeadlessUniversalCheckoutResumeDecisionHandler
145
157
  ) {
146
158
  if (implementedRNCallbacks?.isOnTokenizeSuccessImplemented == true) {
147
159
  val token = PrimerPaymentInstrumentTokenRN.fromPaymentMethodToken(paymentMethodTokenData)
148
- val request = JSONObject(Json.encodeToString(token))
149
- tokenizeSuccessDecisionHandler = { newClientToken, err ->
160
+ val request = JSONObject().apply {
161
+ put("paymentMethodTokenData", JSONObject(Json.encodeToString(token)))
162
+ }
163
+ tokenizeSuccessDecisionHandler = { newClientToken, _ ->
150
164
  when {
151
- err != null -> decisionHandler.handleFailure(err.ifBlank { null })
152
165
  newClientToken != null -> decisionHandler.continueWithNewClientToken(newClientToken)
153
- else -> decisionHandler.handleSuccess()
154
166
  }
155
167
  }
156
168
  sendEvent?.invoke(PrimerHeadlessUniversalCheckoutEvent.ON_TOKENIZE_SUCCESS.eventName, request)
@@ -162,37 +174,35 @@ class PrimerRNHeadlessUniversalCheckoutListener : PrimerHeadlessUniversalCheckou
162
174
  }
163
175
  }
164
176
 
165
- override fun onResumeSuccess(
177
+ override fun onCheckoutResume(
166
178
  resumeToken: String,
167
- decisionHandler: PrimerResumeDecisionHandler
179
+ decisionHandler: PrimerHeadlessUniversalCheckoutResumeDecisionHandler
168
180
  ) {
169
- if (implementedRNCallbacks?.isOnResumeSuccessImplemented == true) {
170
- resumeSuccessDecisionHandler = { newClientToken, err ->
181
+ if (implementedRNCallbacks?.isOnCheckoutResumeImplemented == true) {
182
+ resumeSuccessDecisionHandler = { newClientToken, _ ->
171
183
  when {
172
- err != null -> decisionHandler.handleFailure(err.ifBlank { null })
173
184
  newClientToken != null -> decisionHandler.continueWithNewClientToken(newClientToken)
174
- else -> decisionHandler.handleSuccess()
175
185
  }
176
186
  }
177
187
 
178
188
  val resumeToken = mapOf(Keys.RESUME_TOKEN to resumeToken)
179
189
  sendEvent?.invoke(
180
- PrimerHeadlessUniversalCheckoutEvent.ON_RESUME_SUCCESS.eventName,
190
+ PrimerHeadlessUniversalCheckoutEvent.ON_CHECKOUT_SUCCESS.eventName,
181
191
  JSONObject(Json.encodeToString(resumeToken))
182
192
  )
183
193
  } else {
184
194
  sendError?.invoke(
185
195
  ErrorTypeRN.NativeBridgeFailed
186
- errorTo "Callback [onResumeSuccess] should be implemented."
196
+ errorTo "Callback ${PrimerHeadlessUniversalCheckoutEvent.ON_CHECKOUT_SUCCESS.eventName} should be implemented."
187
197
  )
188
198
  }
189
199
  }
190
200
 
191
- override fun onResumePending(additionalInfo: PrimerCheckoutAdditionalInfo?) {
192
- if (implementedRNCallbacks?.isOnResumePendingImplemented == true) {
201
+ override fun onResumePending(additionalInfo: PrimerCheckoutAdditionalInfo) {
202
+ if (implementedRNCallbacks?.isOnCheckoutPendingImplemented == true) {
193
203
  if (additionalInfo is MultibancoCheckoutAdditionalInfo) {
194
204
  sendEvent?.invoke(
195
- PrimerEvents.ON_RESUME_PENDING.eventName,
205
+ PrimerHeadlessUniversalCheckoutEvent.ON_CHECKOUT_PENDING.eventName,
196
206
  JSONObject(Json.encodeToString(additionalInfo.toCheckoutAdditionalInfoRN())).apply {
197
207
  remove("type")
198
208
  }
@@ -201,16 +211,17 @@ class PrimerRNHeadlessUniversalCheckoutListener : PrimerHeadlessUniversalCheckou
201
211
  } else {
202
212
  sendError?.invoke(
203
213
  ErrorTypeRN.NativeBridgeFailed
204
- errorTo "Callback [onResumePending] should be implemented."
214
+ errorTo "Callback [${PrimerHeadlessUniversalCheckoutEvent.ON_CHECKOUT_PENDING.eventName}] " +
215
+ "should be implemented."
205
216
  )
206
217
  }
207
218
  }
208
219
 
209
- override fun onAdditionalInfoReceived(additionalInfo: PrimerCheckoutAdditionalInfo) {
210
- if (implementedRNCallbacks?.isOnCheckoutReceivedAdditionalInfo == true) {
220
+ override fun onCheckoutAdditionalInfoReceived(additionalInfo: PrimerCheckoutAdditionalInfo) {
221
+ if (implementedRNCallbacks?.isOnCheckoutAdditionalInfoImplemented == true) {
211
222
  if (additionalInfo is PromptPayCheckoutAdditionalInfo) {
212
223
  sendEvent?.invoke(
213
- PrimerEvents.ON_CHECKOUT_RECEIVED_ADDITIONAL_INFO.eventName,
224
+ PrimerHeadlessUniversalCheckoutEvent.ON_CHECKOUT_ADDITIONAL_INFO.eventName,
214
225
  JSONObject(Json.encodeToString(additionalInfo.toCheckoutAdditionalInfoRN())).apply {
215
226
  remove("type")
216
227
  }
@@ -219,7 +230,8 @@ class PrimerRNHeadlessUniversalCheckoutListener : PrimerHeadlessUniversalCheckou
219
230
  } else {
220
231
  sendError?.invoke(
221
232
  ErrorTypeRN.NativeBridgeFailed
222
- errorTo "Callback [onAdditionalInfoReceived] should be implemented."
233
+ errorTo "Callback [${PrimerHeadlessUniversalCheckoutEvent.ON_CHECKOUT_ADDITIONAL_INFO.eventName}]" +
234
+ " should be implemented."
223
235
  )
224
236
  }
225
237
  }
@@ -233,6 +245,7 @@ class PrimerRNHeadlessUniversalCheckoutListener : PrimerHeadlessUniversalCheckou
233
245
  PrimerErrorRN(
234
246
  error.errorId,
235
247
  error.description,
248
+ error.diagnosticsId,
236
249
  error.recoverySuggestion
237
250
  ), checkoutData?.toPrimerCheckoutDataRN()
238
251
  )
@@ -243,7 +256,14 @@ class PrimerRNHeadlessUniversalCheckoutListener : PrimerHeadlessUniversalCheckou
243
256
 
244
257
  override fun onFailed(error: PrimerError) {
245
258
  if (implementedRNCallbacks?.isOnErrorImplemented == true) {
246
- sendError?.invoke(PrimerErrorRN(error.errorId, error.description, error.recoverySuggestion))
259
+ sendError?.invoke(
260
+ PrimerErrorRN(
261
+ error.errorId,
262
+ error.description,
263
+ error.diagnosticsId,
264
+ error.recoverySuggestion
265
+ )
266
+ )
247
267
  } else {
248
268
  super.onFailed(error)
249
269
  }
@@ -254,20 +274,6 @@ class PrimerRNHeadlessUniversalCheckoutListener : PrimerHeadlessUniversalCheckou
254
274
  tokenizeSuccessDecisionHandler?.invoke(newClientToken, null)
255
275
  tokenizeSuccessDecisionHandler = null
256
276
  }
257
-
258
- fun handleTokenizationSuccess(promise: Promise) {
259
- val error =
260
- ErrorTypeRN.NativeBridgeFailed errorTo "PrimerTokenizationHandler's " +
261
- "handleSuccess function is not available on HUC."
262
- promise.reject(error.errorId, error.description)
263
- }
264
-
265
- fun handleTokenizationFailure(errorMessage: String, promise: Promise) {
266
- val error =
267
- ErrorTypeRN.NativeBridgeFailed errorTo "PrimerTokenizationHandler's " +
268
- "handleFailure function is not available on HUC."
269
- promise.reject(error.errorId, error.description)
270
- }
271
277
  // endregion
272
278
 
273
279
  // region resume handlers
@@ -275,20 +281,6 @@ class PrimerRNHeadlessUniversalCheckoutListener : PrimerHeadlessUniversalCheckou
275
281
  resumeSuccessDecisionHandler?.invoke(newClientToken, null)
276
282
  resumeSuccessDecisionHandler = null
277
283
  }
278
-
279
- fun handleResumeSuccess(promise: Promise) {
280
- val error =
281
- ErrorTypeRN.NativeBridgeFailed errorTo "PrimerResumeHandler's " +
282
- "handleSuccess function is not available on HUC."
283
- promise.reject(error.errorId, error.description)
284
- }
285
-
286
- fun handleResumeFailure(errorMessage: String, promise: Promise) {
287
- val error =
288
- ErrorTypeRN.NativeBridgeFailed errorTo "PrimerResumeHandler's " +
289
- "handleFailure function is not available on HUC."
290
- promise.reject(error.errorId, error.description)
291
- }
292
284
  // endregion
293
285
 
294
286
  // region payment create handlers
@@ -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,99 @@
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 PrimerRNPaymentMethodAsset(
18
+ val paymentMethodType: String,
19
+ val paymentMethodLogo: PrimerRNPaymentMethodLogo,
20
+ val paymentMethodBackgroundColor: PrimerRNPaymentMethodBackgroundColor
21
+ )
22
+
23
+ @Serializable
24
+ data class PrimerRNPaymentMethodLogo(
25
+ val colored: String?,
26
+ val light: String?,
27
+ val dark: String?
28
+ )
29
+
30
+ @Serializable
31
+ data class PrimerRNPaymentMethodBackgroundColor(
32
+ val colored: String?,
33
+ val light: String?,
34
+ val dark: String?
35
+ )
36
+
37
+ @Serializable
38
+ data class PrimerCardNetworkAsset(
39
+ val cardNetworkImageURL: String
40
+ )
41
+
42
+ internal fun PrimerPaymentMethodAsset.toPrimerRNPaymentMethodLogo(
43
+ reactContext: ReactApplicationContext,
44
+ paymentMethodType: String,
45
+ ) = PrimerRNPaymentMethodAsset(
46
+ paymentMethodType,
47
+ PrimerRNPaymentMethodLogo(
48
+ paymentMethodLogo.colored?.let {
49
+ getFileUrl(
50
+ reactContext,
51
+ paymentMethodType,
52
+ AssetsManager.ImageColorType.COLORED,
53
+ it
54
+ )
55
+ },
56
+ paymentMethodLogo.light?.let {
57
+ getFileUrl(
58
+ reactContext,
59
+ paymentMethodType,
60
+ AssetsManager.ImageColorType.LIGHT,
61
+ it
62
+ )
63
+ },
64
+ paymentMethodLogo.dark?.let {
65
+ getFileUrl(
66
+ reactContext,
67
+ paymentMethodType,
68
+ AssetsManager.ImageColorType.DARK,
69
+ it
70
+ )
71
+ }
72
+ ),
73
+ PrimerRNPaymentMethodBackgroundColor(
74
+ paymentMethodBackgroundColor.colored?.let {
75
+ String.format("#%06X", (0xFFFFFF and it))
76
+ },
77
+ paymentMethodBackgroundColor.light?.let {
78
+ String.format("#%06X", (0xFFFFFF and it))
79
+ },
80
+ paymentMethodBackgroundColor.dark?.let {
81
+ String.format("#%06X", (0xFFFFFF and it))
82
+ }
83
+ )
84
+ )
85
+
86
+
87
+ private fun getFileUrl(
88
+ reactContext: ReactApplicationContext,
89
+ paymentMethodType: String,
90
+ imageColorType: AssetsManager.ImageColorType,
91
+ drawable: Drawable,
92
+ ): String {
93
+ val file = getFileForPaymentMethodAsset(reactContext, paymentMethodType, imageColorType)
94
+ AssetsManager.saveBitmapToFile(
95
+ file,
96
+ drawableToBitmap(drawable),
97
+ )
98
+ return "file://${file.absolutePath}"
99
+ }
@@ -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
  }