@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
package/android/.project CHANGED
@@ -16,12 +16,12 @@
16
16
  </natures>
17
17
  <filteredResources>
18
18
  <filter>
19
- <id>1659508366811</id>
19
+ <id>1666872274961</id>
20
20
  <name></name>
21
21
  <type>30</type>
22
22
  <matcher>
23
23
  <id>org.eclipse.core.resources.regexFilterMatcher</id>
24
- <arguments>node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
24
+ <arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
25
25
  </matcher>
26
26
  </filter>
27
27
  </filteredResources>
@@ -4,8 +4,8 @@ buildscript {
4
4
 
5
5
  repositories {
6
6
  google()
7
+ mavenCentral()
7
8
  mavenLocal()
8
- jcenter()
9
9
  }
10
10
 
11
11
  dependencies {
@@ -61,7 +61,6 @@ android {
61
61
  repositories {
62
62
  mavenLocal()
63
63
  mavenCentral()
64
- jcenter()
65
64
  google()
66
65
 
67
66
  def found = false
@@ -137,5 +136,5 @@ dependencies {
137
136
  api 'com.facebook.react:react-native:+'
138
137
  implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
139
138
  implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.3"
140
- implementation 'io.primer:android:2.16.6'
139
+ implementation 'io.primer:android:2.17.0-RC8'
141
140
  }
@@ -1,4 +1,4 @@
1
- ReactNative_kotlinVersion=1.6.21
1
+ ReactNative_kotlinVersion=1.7.10
2
2
  ReactNative_compileSdkVersion=31
3
3
  ReactNative_buildToolsVersion=29.0.2
4
4
  ReactNative_targetSdkVersion=31
@@ -1,22 +1,7 @@
1
1
  package com.primerioreactnative
2
2
 
3
- import android.content.res.ColorStateList
4
- import android.graphics.Color
5
- import android.graphics.drawable.ColorDrawable
6
- import android.graphics.drawable.GradientDrawable
7
- import android.view.ViewGroup
8
- import android.widget.EditText
9
- import android.widget.LinearLayout
10
- import android.widget.TextView
11
- import com.facebook.drawee.backends.pipeline.Fresco
12
- import com.facebook.react.bridge.ReactApplicationContext
13
3
  import com.facebook.react.uimanager.SimpleViewManager
14
4
  import com.facebook.react.uimanager.ThemedReactContext
15
- import com.facebook.react.uimanager.ViewProps
16
- import com.facebook.react.uimanager.annotations.ReactProp
17
- import com.facebook.react.views.image.ReactImageView
18
- import io.primer.android.components.manager.PrimerCardManager
19
- import io.primer.android.components.manager.PrimerUniversalCheckoutCardManagerInterface
20
5
  import io.primer.android.components.ui.widgets.*
21
6
 
22
7
  val listOfTextInputs = mutableListOf<PrimerEditText>()
@@ -15,7 +15,7 @@ import kotlinx.serialization.encodeToString
15
15
  import kotlinx.serialization.json.Json
16
16
  import org.json.JSONObject
17
17
 
18
- class PrimerRN(private val reactContext: ReactApplicationContext, private val json: Json) :
18
+ class PrimerRN(reactContext: ReactApplicationContext, private val json: Json) :
19
19
  ReactContextBaseJavaModule(reactContext) {
20
20
  private var mListener = PrimerRNEventListener()
21
21
 
@@ -24,6 +24,7 @@ class PrimerRN(private val reactContext: ReactApplicationContext, private val js
24
24
  mListener.sendError = { paramsJson -> onError(paramsJson) }
25
25
  mListener.sendErrorWithCheckoutData =
26
26
  { paramsJson, checkoutData -> onError(paramsJson, checkoutData) }
27
+ mListener.onDismissedEvent = { Primer.instance.dismiss(true) }
27
28
  }
28
29
 
29
30
  override fun getName(): String = "NativePrimer"
@@ -110,7 +111,13 @@ class PrimerRN(private val reactContext: ReactApplicationContext, private val js
110
111
 
111
112
  @ReactMethod
112
113
  fun dismiss(promise: Promise) {
113
- Primer.instance.dismiss()
114
+ Primer.instance.dismiss(true)
115
+ promise.resolve(null)
116
+ }
117
+
118
+ @ReactMethod
119
+ fun cleanUp(promise: Promise) {
120
+ Primer.instance.dismiss(true)
114
121
  promise.resolve(null)
115
122
  }
116
123
 
@@ -192,6 +199,12 @@ class PrimerRN(private val reactContext: ReactApplicationContext, private val js
192
199
  }
193
200
  }
194
201
 
202
+ @ReactMethod
203
+ fun addListener(eventName: String?) = Unit
204
+
205
+ @ReactMethod
206
+ fun removeListeners(count: Int?) = Unit
207
+
195
208
  private fun startSdk(settings: PrimerSettings) {
196
209
  Primer.instance.configure(settings, mListener)
197
210
  }
@@ -37,6 +37,7 @@ class PrimerRNEventListener : PrimerCheckoutListener {
37
37
  var sendError: ((error: PrimerErrorRN) -> Unit)? = null
38
38
  var sendErrorWithCheckoutData: ((error: PrimerErrorRN, checkoutData: PrimerCheckoutDataRN?) -> Unit)? =
39
39
  null
40
+ var onDismissedEvent: (() -> Unit)? = null
40
41
 
41
42
  override fun onCheckoutCompleted(checkoutData: PrimerCheckoutData) {
42
43
  if (implementedRNCallbacks?.isOnCheckoutCompleteImplemented == true) {
@@ -91,7 +92,12 @@ class PrimerRNEventListener : PrimerCheckoutListener {
91
92
  if (implementedRNCallbacks?.isOnClientSessionUpdateImplemented == true) {
92
93
  sendEvent?.invoke(
93
94
  PrimerEvents.ON_CLIENT_SESSION_UPDATE.eventName,
94
- JSONObject(Json.encodeToString(clientSession.toPrimerClientSessionRN()))
95
+ JSONObject().apply {
96
+ put(
97
+ "clientSession",
98
+ JSONObject(Json.encodeToString(clientSession.toPrimerClientSessionRN()))
99
+ )
100
+ }
95
101
  )
96
102
  } else {
97
103
  super.onClientSessionUpdated(clientSession)
@@ -125,7 +131,7 @@ class PrimerRNEventListener : PrimerCheckoutListener {
125
131
  resumeToken: String,
126
132
  decisionHandler: PrimerResumeDecisionHandler
127
133
  ) {
128
- if (implementedRNCallbacks?.isOnResumeSuccessImplemented == true) {
134
+ if (implementedRNCallbacks?.isOnCheckoutResumeImplemented == true) {
129
135
  resumeSuccessDecisionHandler = { newClientToken, err ->
130
136
  when {
131
137
  err != null -> decisionHandler.handleFailure(err.ifBlank { null })
@@ -134,10 +140,9 @@ class PrimerRNEventListener : PrimerCheckoutListener {
134
140
  }
135
141
  }
136
142
 
137
- val resumeToken = mapOf(Keys.RESUME_TOKEN to resumeToken)
138
143
  sendEvent?.invoke(
139
144
  PrimerEvents.ON_RESUME_SUCCESS.eventName,
140
- JSONObject(Json.encodeToString(resumeToken))
145
+ JSONObject(Json.encodeToString(mapOf(Keys.RESUME_TOKEN to resumeToken)))
141
146
  )
142
147
  } else {
143
148
  sendError?.invoke(
@@ -147,8 +152,8 @@ class PrimerRNEventListener : PrimerCheckoutListener {
147
152
  }
148
153
  }
149
154
 
150
- override fun onResumePending(additionalInfo: PrimerCheckoutAdditionalInfo?) {
151
- if (implementedRNCallbacks?.isOnResumePendingImplemented == true) {
155
+ override fun onResumePending(additionalInfo: PrimerCheckoutAdditionalInfo) {
156
+ if (implementedRNCallbacks?.isOnCheckoutPendingImplemented == true) {
152
157
  if (additionalInfo is MultibancoCheckoutAdditionalInfo) {
153
158
  sendEvent?.invoke(
154
159
  PrimerEvents.ON_RESUME_PENDING.eventName,
@@ -166,7 +171,7 @@ class PrimerRNEventListener : PrimerCheckoutListener {
166
171
  }
167
172
 
168
173
  override fun onAdditionalInfoReceived(additionalInfo: PrimerCheckoutAdditionalInfo) {
169
- if (implementedRNCallbacks?.isOnCheckoutReceivedAdditionalInfo == true) {
174
+ if (implementedRNCallbacks?.isOnCheckoutAdditionalInfoImplemented == true) {
170
175
  if (additionalInfo is PromptPayCheckoutAdditionalInfo) {
171
176
  sendEvent?.invoke(
172
177
  PrimerEvents.ON_CHECKOUT_RECEIVED_ADDITIONAL_INFO.eventName,
@@ -190,6 +195,8 @@ class PrimerRNEventListener : PrimerCheckoutListener {
190
195
  null
191
196
  )
192
197
  }
198
+
199
+ onDismissedEvent?.invoke()
193
200
  removeCallbacksAndHandlers()
194
201
  }
195
202
 
@@ -206,6 +213,7 @@ class PrimerRNEventListener : PrimerCheckoutListener {
206
213
  PrimerErrorRN(
207
214
  error.errorId,
208
215
  error.description,
216
+ error.diagnosticsId,
209
217
  error.recoverySuggestion
210
218
  ), checkoutData?.toPrimerCheckoutDataRN()
211
219
  )
@@ -219,7 +227,14 @@ class PrimerRNEventListener : PrimerCheckoutListener {
219
227
  primerErrorDecisionHandler = { errorMessage: String? ->
220
228
  errorHandler?.showErrorMessage(errorMessage)
221
229
  }
222
- sendError?.invoke(PrimerErrorRN(error.errorId, error.description, error.recoverySuggestion))
230
+ sendError?.invoke(
231
+ PrimerErrorRN(
232
+ error.errorId,
233
+ error.description,
234
+ error.diagnosticsId,
235
+ error.recoverySuggestion
236
+ )
237
+ )
223
238
  } else {
224
239
  super.onFailed(error, errorHandler)
225
240
  }
@@ -1,21 +1,15 @@
1
1
  package com.primerioreactnative
2
2
 
3
3
  import android.util.Log
4
- import androidx.core.content.ContextCompat
5
4
  import com.facebook.react.bridge.*
6
5
  import com.facebook.react.modules.core.DeviceEventManagerModule
7
6
  import com.primerioreactnative.datamodels.*
8
- import com.primerioreactnative.huc.assets.AssetsManager
9
- import com.primerioreactnative.huc.assets.AssetsManager.drawableToBitmap
10
- import com.primerioreactnative.huc.assets.AssetsManager.getFile
11
- import com.primerioreactnative.huc.events.PrimerHeadlessUniversalCheckoutEvent
7
+ import com.primerioreactnative.components.events.PrimerHeadlessUniversalCheckoutEvent
12
8
  import com.primerioreactnative.utils.PrimerHeadlessUniversalCheckoutImplementedRNCallbacks
13
9
  import com.primerioreactnative.utils.convertJsonToMap
14
10
  import com.primerioreactnative.utils.errorTo
15
11
  import io.primer.android.ExperimentalPrimerApi
16
12
  import io.primer.android.components.PrimerHeadlessUniversalCheckout
17
- import io.primer.android.components.ui.assets.ImageType
18
- import io.primer.android.ui.CardNetwork
19
13
  import kotlinx.serialization.decodeFromString
20
14
  import kotlinx.serialization.encodeToString
21
15
  import kotlinx.serialization.json.Json
@@ -44,10 +38,9 @@ class PrimerRNHeadlessUniversalCheckout(
44
38
  fun startWithClientToken(
45
39
  clientToken: String,
46
40
  settingsStr: String?,
47
- errorCallback: Callback,
48
- successCallback: Callback
41
+ promise: Promise
49
42
  ) {
50
- listener.successCallback = successCallback
43
+ listener.successCallback = promise
51
44
  try {
52
45
  val settings =
53
46
  if (settingsStr.isNullOrBlank()) PrimerSettingsRN() else json.decodeFromString(
@@ -57,108 +50,22 @@ class PrimerRNHeadlessUniversalCheckout(
57
50
  reactContext,
58
51
  clientToken,
59
52
  settings.toPrimerSettings(),
53
+ listener,
60
54
  listener
61
55
  )
62
56
  } catch (e: Exception) {
63
- errorCallback.invoke(
64
- json.encodeToString(
65
- ErrorTypeRN.NativeBridgeFailed errorTo
66
- "failed to initialise PrimerHeadlessUniversalCheckout SDK, error: $e",
67
- )
57
+ promise.reject(
58
+ ErrorTypeRN.NativeBridgeFailed.errorId,
59
+ "failed to initialise PrimerHeadlessUniversalCheckout SDK, error: $e",
68
60
  )
69
61
  }
70
62
  }
71
63
 
72
64
  @ReactMethod
73
- fun showPaymentMethod(paymentMethodTypeStr: String, promise: Promise) {
74
- PrimerHeadlessUniversalCheckout.current.showPaymentMethod(
75
- reactContext,
76
- paymentMethodTypeStr
77
- )
78
- promise.resolve(null)
79
- }
80
-
81
- @ReactMethod
82
- fun disposePrimerHeadlessUniversalCheckout() {
65
+ fun cleanUp(promise: Promise) {
83
66
  PrimerHeadlessUniversalCheckout.current.cleanup()
84
67
  listener.removeCallbacksAndHandlers()
85
- }
86
-
87
- @ReactMethod
88
- fun getAssetForPaymentMethodType(
89
- paymentMethodType: String,
90
- assetType: String,
91
- errorCallback: Callback,
92
- successCallback: Callback
93
- ) {
94
-
95
- val type = ImageType.values().find { it.name.equals(assetType, ignoreCase = true) }
96
- when {
97
- type == null -> {
98
- errorCallback.invoke(
99
- json.encodeToString(
100
- ErrorTypeRN.AssetMismatch errorTo
101
- "You have provided assetType=$assetType, but variable assetType can be 'LOGO' or 'ICON'."
102
- )
103
- )
104
- }
105
- else -> {
106
- PrimerHeadlessUniversalCheckout.getAsset(paymentMethodType, type)?.let { resourceId ->
107
- val file = getFile(reactContext, paymentMethodType)
108
- AssetsManager.saveBitmapToFile(
109
- file,
110
- drawableToBitmap(ContextCompat.getDrawable(reactContext, resourceId)!!),
111
- )
112
- successCallback.invoke("file://${file.absolutePath}")
113
- } ?: run {
114
- errorCallback.invoke(
115
- json.encodeToString(
116
- ErrorTypeRN.AssetMissing errorTo
117
- "Failed to find $assetType for $paymentMethodType"
118
- )
119
- )
120
- }
121
- }
122
- }
123
- }
124
-
125
- @ReactMethod
126
- fun getAssetForCardNetwork(
127
- cardNetworkStr: String,
128
- assetType: String,
129
- errorCallback: Callback,
130
- successCallback: Callback
131
- ) {
132
- val cardNetwork = CardNetwork.Type.values().find { it.name.equals(cardNetworkStr, ignoreCase = true) }
133
- val type = ImageType.values().find { it.name.equals(assetType, ignoreCase = true) }
134
- when {
135
- cardNetwork == null -> {
136
- errorCallback.invoke(
137
- json.encodeToString(
138
- ErrorTypeRN.InvalidCardNetwork errorTo
139
- "Card network for $cardNetworkStr does not exist, make sure you don't have any typos."
140
- )
141
- )
142
- }
143
- type == null -> {
144
- errorCallback.invoke(
145
- json.encodeToString(
146
- ErrorTypeRN.AssetMismatch errorTo
147
- "You have provided assetType=$assetType, but variable assetType can be 'LOGO' or 'ICON'."
148
- )
149
- )
150
- }
151
- else -> {
152
- PrimerHeadlessUniversalCheckout.getAsset(cardNetwork).let { resourceId ->
153
- val file = getFile(reactContext, cardNetworkStr)
154
- AssetsManager.saveBitmapToFile(
155
- file,
156
- drawableToBitmap(ContextCompat.getDrawable(reactContext, resourceId)!!),
157
- )
158
- successCallback.invoke("file://${file.absolutePath}")
159
- }
160
- }
161
- }
68
+ promise.resolve(null)
162
69
  }
163
70
 
164
71
  // region tokenization handlers
@@ -167,16 +74,6 @@ class PrimerRNHeadlessUniversalCheckout(
167
74
  listener.handleTokenizationNewClientToken(newClientToken)
168
75
  promise.resolve(null)
169
76
  }
170
-
171
- @ReactMethod
172
- fun handleTokenizationSuccess(promise: Promise) {
173
- listener.handleTokenizationSuccess(promise)
174
- }
175
-
176
- @ReactMethod
177
- fun handleTokenizationFailure(errorMessage: String?, promise: Promise) {
178
- listener.handleTokenizationFailure(errorMessage.orEmpty(), promise)
179
- }
180
77
  // endregion
181
78
 
182
79
  // region resume handlers
@@ -185,17 +82,14 @@ class PrimerRNHeadlessUniversalCheckout(
185
82
  listener.handleResumeNewClientToken(newClientToken)
186
83
  promise.resolve(null)
187
84
  }
85
+ // endregion
188
86
 
87
+ // region complete handlers
189
88
  @ReactMethod
190
- fun handleResumeSuccess(promise: Promise) {
191
- listener.handleResumeSuccess(promise)
192
- }
193
-
194
- @ReactMethod
195
- fun handleResumeFailure(errorMessage: String?, promise: Promise) {
196
- listener.handleResumeFailure(errorMessage.orEmpty(), promise)
89
+ fun handleCompleteFlow(promise: Promise) {
90
+ promise.resolve(null)
197
91
  }
198
- // endregion
92
+ // endregion complete handlers
199
93
 
200
94
  // region payment handlers
201
95
  @ReactMethod
@@ -229,6 +123,12 @@ class PrimerRNHeadlessUniversalCheckout(
229
123
  }
230
124
  }
231
125
 
126
+ @ReactMethod
127
+ fun addListener(eventName: String?) = Unit
128
+
129
+ @ReactMethod
130
+ fun removeListeners(count: Int?) = Unit
131
+
232
132
  private fun onError(exception: PrimerErrorRN, checkoutDataRN: PrimerCheckoutDataRN? = null) {
233
133
  val params = Arguments.createMap()
234
134
  val errorJson = JSONObject(Json.encodeToString(exception))
@@ -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