@primer-io/react-native 2.16.2 → 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,501 +0,0 @@
1
- //
2
- // RNTPrimerHeadlessUniversalCheckout.swift
3
- // primer-io-react-native
4
- //
5
- // Created by Evangelos on 8/3/22.
6
- //
7
-
8
- import Foundation
9
- import PrimerSDK
10
-
11
- @objc
12
- enum PrimerHeadlessUniversalCheckoutEvents: Int, CaseIterable {
13
-
14
- case onHUCTokenizeStart = 0
15
- case onHUCPrepareStart
16
- case onHUCAvailablePaymentMethodsLoaded
17
- case onHUCPaymentMethodShow
18
- case onTokenizeSuccess
19
- case onResumeSuccess
20
- case onResumePending
21
- case onCheckoutReceivedAdditionalInfo
22
- case onBeforePaymentCreate
23
- case onBeforeClientSessionUpdate
24
- case onClientSessionUpdate
25
- case onCheckoutComplete
26
- case onError
27
-
28
- var stringValue: String {
29
- switch self {
30
- case .onHUCPrepareStart:
31
- return "onHUCPrepareStart"
32
- case .onHUCTokenizeStart:
33
- return "onHUCTokenizeStart"
34
- case .onHUCPaymentMethodShow:
35
- return "onHUCPaymentMethodShow"
36
- case .onTokenizeSuccess:
37
- return "onTokenizeSuccess"
38
- case .onResumeSuccess:
39
- return "onResumeSuccess"
40
- case .onResumePending:
41
- return "onResumePending"
42
- case .onCheckoutReceivedAdditionalInfo:
43
- return "onCheckoutReceivedAdditionalInfo"
44
- case .onBeforePaymentCreate:
45
- return "onBeforePaymentCreate"
46
- case .onBeforeClientSessionUpdate:
47
- return "onBeforeClientSessionUpdate"
48
- case .onClientSessionUpdate:
49
- return "onClientSessionUpdate"
50
- case .onCheckoutComplete:
51
- return "onCheckoutComplete"
52
- case .onHUCAvailablePaymentMethodsLoaded:
53
- return "onHUCAvailablePaymentMethodsLoaded"
54
- case .onError:
55
- return "onError"
56
- }
57
- }
58
- }
59
-
60
- @objc(PrimerHeadlessUniversalCheckout)
61
- class RNTPrimerHeadlessUniversalCheckout: RCTEventEmitter {
62
-
63
- private var primerWillCreatePaymentWithDataDecisionHandler: ((_ errorMessage: String?) -> Void)?
64
- private var primerDidTokenizePaymentMethodDecisionHandler: ((_ resumeToken: String?, _ errorMessage: String?) -> Void)?
65
- private var primerDidResumeWithDecisionHandler: ((_ resumeToken: String?, _ errorMessage: String?) -> Void)?
66
- private var primerDidFailWithErrorDecisionHandler: ((_ errorMessage: String) -> Void)?
67
- private var implementedRNCallbacks: ImplementedRNCallbacks?
68
-
69
- override class func requiresMainQueueSetup() -> Bool {
70
- return true
71
- }
72
-
73
- override init() {
74
- super.init()
75
- PrimerHeadlessUniversalCheckout.current.delegate = self
76
- PrimerSDK.Primer.shared.integrationOptions = PrimerIntegrationOptions(reactNativeVersion: "2.15.1")
77
- }
78
-
79
- override func supportedEvents() -> [String]! {
80
- return PrimerHeadlessUniversalCheckoutEvents.allCases.compactMap({ $0.stringValue })
81
- }
82
-
83
- // MARK: - API
84
-
85
- @objc
86
- public func startWithClientToken(_ clientToken: String,
87
- settingsStr: String?,
88
- errorCallback: @escaping RCTResponseSenderBlock,
89
- successCallback: @escaping RCTResponseSenderBlock)
90
- {
91
- var settings: PrimerSettings?
92
- if let settingsStr = settingsStr {
93
- do {
94
- settings = try PrimerSettings.initialize(with: settingsStr)
95
- } catch {
96
- errorCallback([error.rnError])
97
- return
98
- }
99
- }
100
-
101
- PrimerHeadlessUniversalCheckout.current.start(withClientToken: clientToken, settings: settings, delegate: self) { paymentMethodTypes, err in
102
- if let err = err {
103
- errorCallback([err.rnError])
104
- } else if let paymentMethodTypes = paymentMethodTypes {
105
- successCallback([paymentMethodTypes])
106
- }
107
- }
108
- }
109
-
110
- @objc
111
- public func getAssetForPaymentMethodType(_ paymentMethodTypeStr: String,
112
- assetType assetTypeStr: String,
113
- errorCallback: @escaping RCTResponseSenderBlock,
114
- successCallback: @escaping RCTResponseSenderBlock)
115
- {
116
- guard let unwrappedAssetType = PrimerAsset.ImageType(rawValue: assetTypeStr), let image = PrimerHeadlessUniversalCheckout.getAsset(for: paymentMethodTypeStr, assetType: unwrappedAssetType) else {
117
- let err = NativeError(errorId: "missing-asset", errorDescription: "Failed to find \(assetTypeStr) for \(paymentMethodTypeStr)", recoverySuggestion: nil)
118
- errorCallback([err.rnError])
119
- return
120
- }
121
-
122
- do {
123
- let imageURL = try self.tempStoreImage(image: image, name: paymentMethodTypeStr)
124
- successCallback([imageURL.absoluteString])
125
- } catch {
126
- errorCallback([error.rnError])
127
- }
128
- }
129
-
130
- @objc
131
- public func getAssetForCardNetwork(_ cardNetworkStr: String,
132
- assetType assetTypeStr: String,
133
- errorCallback: @escaping RCTResponseSenderBlock,
134
- successCallback: @escaping RCTResponseSenderBlock)
135
- {
136
- guard let cardNetwork = CardNetwork(rawValue: cardNetworkStr) else {
137
- let err = NativeError(errorId: "invalid-card-network", errorDescription: "Card network for \(cardNetworkStr) does not exist, make sure you don't have any typos.", recoverySuggestion: nil)
138
- errorCallback([err.rnError])
139
- return
140
- }
141
-
142
- guard let unwrappedAssetType = PrimerAsset.ImageType(rawValue: assetTypeStr), let image = PrimerHeadlessUniversalCheckout.getAsset(for: cardNetwork, assetType: unwrappedAssetType) else {
143
- let err = NativeError(errorId: "missing-asset", errorDescription: "Failed to find \(assetTypeStr) for \(cardNetworkStr)", recoverySuggestion: nil)
144
- errorCallback([err.rnError])
145
- return
146
- }
147
-
148
- do {
149
- let imageURL = try self.tempStoreImage(image: image, name: cardNetworkStr)
150
- successCallback([imageURL.absoluteString])
151
- } catch {
152
- errorCallback([error.rnError])
153
- }
154
- }
155
-
156
- @objc
157
- public func showPaymentMethod(_ paymentMethodTypeStr: String,
158
- resolver: RCTPromiseResolveBlock,
159
- rejecter: RCTPromiseRejectBlock)
160
- {
161
- PrimerHeadlessUniversalCheckout.current.showPaymentMethod(paymentMethodTypeStr)
162
- resolver(nil)
163
- }
164
-
165
- @objc
166
- public func disposePrimerHeadlessUniversalCheckout() {
167
-
168
- }
169
-
170
- // MARK: - HELPERS
171
-
172
- private func tempStoreImage(image: UIImage, name: String) throws -> URL {
173
- guard let imageURL = NSURL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("\(name).png") else {
174
- let err = NativeError(errorId: "error", errorDescription: "Failed to create URL for asset", recoverySuggestion: nil)
175
- throw err
176
- }
177
-
178
- guard let pngData = image.pngData() else {
179
- let err = NativeError(errorId: "error", errorDescription: "Failed to get image's PNG data", recoverySuggestion: nil)
180
- throw err
181
- }
182
-
183
- try pngData.write(to: imageURL)
184
- return imageURL
185
- }
186
-
187
- // MARK: - DECISION HANDLERS
188
-
189
- // MARK: Tokenization
190
-
191
- @objc
192
- public func handleTokenizationNewClientToken(_ newClientToken: String, resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
193
- DispatchQueue.main.async {
194
- self.primerDidTokenizePaymentMethodDecisionHandler?(newClientToken, nil)
195
- self.primerDidTokenizePaymentMethodDecisionHandler = nil
196
- resolver(nil)
197
- }
198
- }
199
-
200
- @objc
201
- public func handleTokenizationSuccess(_ resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
202
- DispatchQueue.main.async {
203
- self.primerDidTokenizePaymentMethodDecisionHandler?(nil, nil)
204
- self.primerDidTokenizePaymentMethodDecisionHandler = nil
205
- let err = NSError(domain: "native-bridge", code: 0, userInfo: [NSLocalizedDescriptionKey: "PrimerTokenizationHandler's handleSuccess function is not available on HUC."])
206
- rejecter(err.rnError["errorId"]!, err.rnError["description"], err)
207
- }
208
- }
209
-
210
- @objc
211
- public func handleTokenizationFailure(_ errorMessage: String?, resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
212
- DispatchQueue.main.async {
213
- self.primerDidTokenizePaymentMethodDecisionHandler?(nil, errorMessage ?? "")
214
- self.primerDidTokenizePaymentMethodDecisionHandler = nil
215
- let err = NSError(domain: "native-bridge", code: 0, userInfo: [NSLocalizedDescriptionKey: "PrimerTokenizationHandler's handleFailure function is not available on HUC."])
216
- rejecter(err.rnError["errorId"]!, err.rnError["description"], err)
217
- }
218
- }
219
-
220
- // MARK: Resume Payment
221
-
222
- @objc
223
- public func handleResumeWithNewClientToken(_ newClientToken: String, resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
224
- DispatchQueue.main.async {
225
- self.primerDidResumeWithDecisionHandler?(newClientToken, nil)
226
- self.primerDidResumeWithDecisionHandler = nil
227
- resolver(nil)
228
- }
229
- }
230
-
231
- @objc
232
- public func handleResumeSuccess(_ resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
233
- DispatchQueue.main.async {
234
- let err = NSError(domain: "native-bridge", code: 0, userInfo: [NSLocalizedDescriptionKey: "PrimerResumeHandler's handleSuccess function is not available on HUC."])
235
- rejecter(err.rnError["errorId"]!, err.rnError["description"], err)
236
- }
237
- }
238
-
239
- @objc
240
- public func handleResumeFailure(_ errorMessage: String?, resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
241
- DispatchQueue.main.async {
242
- let err = NSError(domain: "native-bridge", code: 0, userInfo: [NSLocalizedDescriptionKey: "PrimerResumeHandler's handleFailure function is not available on HUC."])
243
- rejecter(err.rnError["errorId"]!, err.rnError["description"], err)
244
- }
245
- }
246
-
247
- // MARK: Payment Creation
248
-
249
- @objc
250
- public func handlePaymentCreationAbort(_ errorMessage: String?, resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
251
- DispatchQueue.main.async {
252
- self.primerWillCreatePaymentWithDataDecisionHandler?(errorMessage ?? "")
253
- self.primerWillCreatePaymentWithDataDecisionHandler = nil
254
- resolver(nil)
255
- }
256
- }
257
-
258
- @objc
259
- public func handlePaymentCreationContinue(_ resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
260
- DispatchQueue.main.async {
261
- self.primerWillCreatePaymentWithDataDecisionHandler?(nil)
262
- self.primerWillCreatePaymentWithDataDecisionHandler = nil
263
- resolver(nil)
264
- }
265
- }
266
-
267
- // MARK: Helpers
268
-
269
- private func detectImplemetedCallbacks() {
270
- sendEvent(withName: PrimerEvents.detectImplementedRNCallbacks.stringValue, body: nil)
271
- }
272
-
273
- @objc
274
- public func setImplementedRNCallbacks(_ implementedRNCallbacksStr: String, resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
275
- DispatchQueue.main.async {
276
- do {
277
- guard let implementedRNCallbacksData = implementedRNCallbacksStr.data(using: .utf8) else {
278
- let err = NSError(domain: "native-bridge", code: 0, userInfo: [NSLocalizedDescriptionKey: "Failed to convert string to data"])
279
- throw err
280
- }
281
- self.implementedRNCallbacks = try JSONDecoder().decode(ImplementedRNCallbacks.self, from: implementedRNCallbacksData)
282
- resolver(nil)
283
- } catch {
284
- self.handleRNBridgeError(error, checkoutData: nil, stopOnDebug: false)
285
- rejecter(error.rnError["errorId"]!, error.rnError["description"], error)
286
- }
287
- }
288
- }
289
-
290
- private func handleRNBridgeError(_ error: Error, checkoutData: PrimerCheckoutData?, stopOnDebug: Bool) {
291
- DispatchQueue.main.async {
292
- if stopOnDebug {
293
- assertionFailure(error.localizedDescription)
294
- }
295
-
296
- var body: [String: Any] = ["error": error.rnError]
297
- if let checkoutData = checkoutData,
298
- let data = try? JSONEncoder().encode(checkoutData),
299
- let json = try? JSONSerialization.jsonObject(with: data){
300
- body["checkoutData"] = json
301
- }
302
-
303
- self.sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onError.stringValue, body: body)
304
- }
305
- }
306
- }
307
-
308
- // MARK: - EVENTS
309
-
310
- extension RNTPrimerHeadlessUniversalCheckout: PrimerHeadlessUniversalCheckoutDelegate {
311
-
312
- func primerHeadlessUniversalCheckoutPreparationDidStart(for paymentMethodType: String) {
313
- sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onHUCPrepareStart.stringValue, body: ["paymentMethodType": paymentMethodType])
314
- }
315
-
316
- func primerHeadlessUniversalCheckoutTokenizationDidStart(for paymentMethodType: String) {
317
- sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onHUCTokenizeStart.stringValue, body: ["paymentMethodType": paymentMethodType])
318
- }
319
-
320
- func primerHeadlessUniversalCheckoutDidLoadAvailablePaymentMethods(_ paymentMethodTypes: [String]) {
321
- sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onHUCAvailablePaymentMethodsLoaded.stringValue, body: ["paymentMethodTypes": paymentMethodTypes])
322
- }
323
-
324
- func primerHeadlessUniversalCheckoutPaymentMethodDidShow(for paymentMethodType: String) {
325
- sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onHUCPaymentMethodShow.stringValue, body: ["paymentMethodType": paymentMethodType])
326
- }
327
-
328
- func primerHeadlessUniversalCheckoutDidTokenizePaymentMethod(_ paymentMethodTokenData: PrimerPaymentMethodTokenData, decisionHandler: @escaping (PrimerResumeDecision) -> Void) {
329
- if self.implementedRNCallbacks?.isOnTokenizeSuccessImplemented == true {
330
- self.primerDidTokenizePaymentMethodDecisionHandler = { (newClientToken, errorMessage) in
331
- DispatchQueue.main.async {
332
- if let errorMessage = errorMessage {
333
- decisionHandler(.fail(withErrorMessage: errorMessage.isEmpty ? nil : errorMessage))
334
- } else if let newClientToken = newClientToken {
335
- decisionHandler(.continueWithNewClientToken(newClientToken))
336
- } else {
337
- decisionHandler(.succeed())
338
- }
339
- }
340
- }
341
-
342
- do {
343
- let data = try JSONEncoder().encode(paymentMethodTokenData)
344
- let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments)
345
- DispatchQueue.main.async {
346
- self.sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onTokenizeSuccess.stringValue, body: json)
347
- }
348
- } catch {
349
- self.handleRNBridgeError(error, checkoutData: nil, stopOnDebug: true)
350
- }
351
- } else {
352
- // RN dev hasn't opted in on listening the tokenization callback.
353
- // Throw an error if it's the manual flow, ignore if it's the
354
- // auto flow.
355
- }
356
- }
357
-
358
- func primerHeadlessUniversalCheckoutDidResumeWith(_ resumeToken: String, decisionHandler: @escaping (PrimerResumeDecision) -> Void) {
359
- if self.implementedRNCallbacks?.isOnResumeSuccessImplemented == true {
360
- self.primerDidResumeWithDecisionHandler = { (resumeToken, errorMessage) in
361
- DispatchQueue.main.async {
362
- if let errorMessage = errorMessage {
363
- decisionHandler(.fail(withErrorMessage: errorMessage.isEmpty ? nil : errorMessage))
364
- } else if let resumeToken = resumeToken {
365
- decisionHandler(.continueWithNewClientToken(resumeToken))
366
- } else {
367
- decisionHandler(.succeed())
368
- }
369
- }
370
- }
371
-
372
- DispatchQueue.main.async {
373
- self.sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onResumeSuccess.stringValue, body: ["resumeToken": resumeToken])
374
- }
375
- } else {
376
- // RN dev hasn't opted in on listening the tokenization callback.
377
- // Throw an error if it's the manual flow.
378
- }
379
- }
380
-
381
- func primerHeadlessUniversalCheckoutDidFail(withError err: Error) {
382
- if self.implementedRNCallbacks?.isOnErrorImplemented == true {
383
- // Send the error message to the RN bridge.
384
- self.handleRNBridgeError(err, checkoutData: nil, stopOnDebug: false)
385
-
386
- } else {
387
- // RN dev hasn't opted in on listening SDK dismiss.
388
- // Ignore!
389
- }
390
- }
391
-
392
- func primerHeadlessUniversalCheckoutDidCompleteCheckoutWithData(_ data: PrimerCheckoutData) {
393
- DispatchQueue.main.async {
394
- if self.implementedRNCallbacks?.isOnCheckoutCompleteImplemented == true {
395
- do {
396
- let checkoutData = try JSONEncoder().encode(data)
397
- let checkoutJson = try JSONSerialization.jsonObject(with: checkoutData, options: .allowFragments)
398
- self.sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onCheckoutComplete.stringValue, body: checkoutJson)
399
- } catch {
400
- self.handleRNBridgeError(error, checkoutData: data, stopOnDebug: true)
401
- }
402
- } else {
403
- let err = NSError(domain: "native-bridge", code: 1, userInfo: [NSLocalizedDescriptionKey: "Callback [onCheckoutComplete] should be implemented."])
404
- self.handleRNBridgeError(err, checkoutData: data, stopOnDebug: false)
405
- }
406
- }
407
- }
408
-
409
- func primerHeadlessUniversalCheckoutDidEnterResumePendingWithPaymentAdditionalInfo(_ additionalInfo: PrimerCheckoutAdditionalInfo?) {
410
- DispatchQueue.main.async {
411
- if self.implementedRNCallbacks?.isOnResumePendingImplemented == true {
412
- do {
413
- let checkoutAdditionalInfo = try JSONEncoder().encode(additionalInfo)
414
- let checkoutAdditionalInfoJson = try JSONSerialization.jsonObject(with: checkoutAdditionalInfo, options: .allowFragments)
415
- self.sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onResumePending.stringValue, body: checkoutAdditionalInfoJson)
416
- } catch {
417
- let checkoutData = PrimerCheckoutData(payment: nil, additionalInfo: additionalInfo)
418
- self.handleRNBridgeError(error, checkoutData: checkoutData, stopOnDebug: true)
419
- }
420
- } else {
421
- let err = NSError(domain: "native-bridge", code: 1, userInfo: [NSLocalizedDescriptionKey: "Callback [onResumePending] should be implemented."])
422
- let checkoutData = PrimerCheckoutData(payment: nil, additionalInfo: additionalInfo)
423
- self.handleRNBridgeError(err, checkoutData: checkoutData, stopOnDebug: false)
424
- }
425
- }
426
- }
427
-
428
- func primerHeadlessUniversalCheckoutDidReceiveAdditionalInfo(_ additionalInfo: PrimerCheckoutAdditionalInfo?) {
429
- DispatchQueue.main.async {
430
- if self.implementedRNCallbacks?.isOnCheckoutReceivedAdditionalInfoImplemented == true {
431
- do {
432
- let checkoutAdditionalInfo = try JSONEncoder().encode(additionalInfo)
433
- let checkoutAdditionalInfoJson = try JSONSerialization.jsonObject(with: checkoutAdditionalInfo, options: .allowFragments)
434
- self.sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onCheckoutReceivedAdditionalInfo.stringValue, body: checkoutAdditionalInfoJson)
435
- } catch {
436
- let checkoutData = PrimerCheckoutData(payment: nil, additionalInfo: additionalInfo)
437
- self.handleRNBridgeError(error, checkoutData: checkoutData, stopOnDebug: true)
438
- }
439
- } else {
440
- let err = NSError(domain: "native-bridge", code: 1, userInfo: [NSLocalizedDescriptionKey: "Callback [onCheckoutReceivedAdditionalInfo] should be implemented."])
441
- let checkoutData = PrimerCheckoutData(payment: nil, additionalInfo: additionalInfo)
442
- self.handleRNBridgeError(err, checkoutData: checkoutData, stopOnDebug: false)
443
- }
444
- }
445
- }
446
-
447
- func primerHeadlessUniversalCheckoutClientSessionWillUpdate() {
448
- if self.implementedRNCallbacks?.isOnBeforeClientSessionUpdateImplemented == true {
449
- DispatchQueue.main.async {
450
- self.sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onBeforeClientSessionUpdate.stringValue, body: nil)
451
- }
452
- } else {
453
- // React Native app hasn't implemented this callback, ignore.
454
- }
455
- }
456
-
457
- func primerHeadlessUniversalCheckoutClientSessionDidUpdate(_ clientSession: PrimerClientSession) {
458
- if self.implementedRNCallbacks?.isOnClientSessionUpdateImplemented == true {
459
- do {
460
- let data = try JSONEncoder().encode(clientSession)
461
- let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments)
462
- DispatchQueue.main.async {
463
- self.sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onClientSessionUpdate.stringValue, body: json)
464
- }
465
- } catch {
466
- self.handleRNBridgeError(error, checkoutData: nil, stopOnDebug: true)
467
- }
468
- } else {
469
- // RN Dev hasn't implemented this callback, ignore.
470
- }
471
- }
472
-
473
- func primerHeadlessUniversalCheckoutWillCreatePaymentWithData(_ data: PrimerCheckoutPaymentMethodData, decisionHandler: @escaping (PrimerPaymentCreationDecision) -> Void) {
474
- if self.implementedRNCallbacks?.isOnBeforePaymentCreateImplemented == true {
475
- self.primerWillCreatePaymentWithDataDecisionHandler = { errorMessage in
476
- DispatchQueue.main.async {
477
- if let errorMessage = errorMessage {
478
- decisionHandler(.abortPaymentCreation(withErrorMessage: errorMessage.isEmpty ? nil : errorMessage))
479
- } else {
480
- decisionHandler(.continuePaymentCreation())
481
- }
482
- }
483
- }
484
-
485
- DispatchQueue.main.async {
486
- do {
487
- let checkoutPaymentmethodData = try JSONEncoder().encode(data)
488
- let checkoutPaymentmethodJson = try JSONSerialization.jsonObject(with: checkoutPaymentmethodData, options: .allowFragments)
489
- self.sendEvent(withName: PrimerHeadlessUniversalCheckoutEvents.onBeforePaymentCreate.stringValue, body: checkoutPaymentmethodJson)
490
- } catch {
491
- self.handleRNBridgeError(error, checkoutData: nil, stopOnDebug: true)
492
- }
493
- }
494
- } else {
495
- // RN Dev hasn't implemented this callback, send a decision to continue the flow.
496
- DispatchQueue.main.async {
497
- decisionHandler(.continuePaymentCreation())
498
- }
499
- }
500
- }
501
- }
@@ -1,14 +0,0 @@
1
- #import <React/RCTBridgeModule.h>
2
- #import <React/RCTViewManager.h>
3
- #import <React/RCTUIManager.h>
4
- #import <React/RCTView.h>
5
-
6
- @interface RCT_EXTERN_MODULE(PrimerHeadlessUniversalCheckoutCardFormUIManager, NSObject)
7
-
8
- RCT_EXTERN_METHOD(setInputElements:(NSString *)inputElements errorCallback: (RCTResponseSenderBlock)errorCallback successCallback: (RCTResponseSenderBlock)successCallback)
9
-
10
- RCT_EXTERN_METHOD(tokenize)
11
-
12
- RCT_EXTERN_METHOD(addInput:(NSNumber* __nonnull)tag)
13
-
14
- @end
@@ -1,117 +0,0 @@
1
- //
2
- // RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.swift
3
- // primer-io-react-native
4
- //
5
- // Created by Evangelos on 4/3/22.
6
- //
7
-
8
- import Foundation
9
- import PrimerSDK
10
-
11
- @objc(PrimerHeadlessUniversalCheckoutCardFormUIManager)
12
- class RNTPrimerHeadlessUniversalCheckoutCardFormUIManager: RCTViewManager {
13
-
14
- @objc
15
- override static func requiresMainQueueSetup() -> Bool {
16
- return true
17
- }
18
-
19
- private lazy var cardFormUIManager: PrimerHeadlessUniversalCheckout.CardFormUIManager = {
20
- return try! PrimerHeadlessUniversalCheckout.CardFormUIManager()
21
- }()
22
- private var successCallback: RCTResponseSenderBlock? {
23
- didSet {
24
-
25
- }
26
- }
27
-
28
- deinit {
29
- print("🧨 deinit: \(self) \(Unmanaged.passUnretained(self).toOpaque())")
30
- }
31
-
32
- override init() {
33
- super.init()
34
- do {
35
- self.cardFormUIManager = try PrimerHeadlessUniversalCheckout.CardFormUIManager()
36
- self.cardFormUIManager.cardFormUIManagerDelegate = self
37
- } catch {
38
-
39
- }
40
-
41
- print("⭐ init: \(self) \(Unmanaged.passUnretained(self).toOpaque())")
42
- }
43
-
44
- @objc
45
- override func constantsToExport() -> [AnyHashable : Any]! {
46
- return ["message": "Hello from native code"]
47
- }
48
-
49
- func cardFormUIManager(_ cardFormUIManager: PrimerHeadlessUniversalCheckout.CardFormUIManager, isCardFormValid: Bool) {
50
-
51
- }
52
-
53
- @objc
54
- func setInputElements(_ inputElements: String, errorCallback: RCTResponseSenderBlock, successCallback: @escaping RCTResponseSenderBlock) {
55
- print("RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.setInputElements\n\(inputElements)")
56
- print("⭐ \(self) \(Unmanaged.passUnretained(self).toOpaque())")
57
- self.successCallback = successCallback
58
- self.successCallback?(["what??"])
59
- }
60
-
61
- @objc
62
- func setInputElementsWithTags(_ tags: [NSNumber]) {
63
- RCTUnsafeExecuteOnMainQueueSync {
64
- guard let rctUIManager = self.bridge.module(for: RCTUIManager.self) as? RCTUIManager else {
65
- return
66
- }
67
-
68
- for tag in tags {
69
- if let view = rctUIManager.view(forReactTag: tag) {
70
- if let inputElement = view as? PrimerInputElement {
71
- self.cardFormUIManager.inputElements = [inputElement]
72
- }
73
- }
74
- }
75
- }
76
- }
77
-
78
- @objc
79
- func addInput(_ tag: NSNumber) {
80
- RCTUnsafeExecuteOnMainQueueSync {
81
- guard let rctUIManager = self.bridge.module(for: RCTUIManager.self) as? RCTUIManager else {
82
- return
83
- }
84
-
85
- if let view = rctUIManager.view(forReactTag: tag) {
86
- if let inputElement = view as? PrimerInputElement {
87
- self.cardFormUIManager.inputElements = [inputElement]
88
- }
89
- }
90
-
91
- }
92
- }
93
-
94
- @objc
95
- func tokenize() {
96
- print("RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.tokenize")
97
- }
98
-
99
- }
100
-
101
- extension RNTPrimerHeadlessUniversalCheckoutCardFormUIManager: PrimerInputElementDelegate {
102
-
103
- func inputElementDidFocus(_ sender: PrimerInputElement) {
104
-
105
- }
106
-
107
- func inputElementDidBlur(_ sender: PrimerInputElement) {
108
-
109
- }
110
-
111
- }
112
-
113
- extension RNTPrimerHeadlessUniversalCheckoutCardFormUIManager: PrimerCardFormDelegate {
114
-
115
-
116
-
117
- }
@@ -1,23 +0,0 @@
1
- //
2
- // RNTPrimerHeadlessUniversalCheckoutRawDataManager.m
3
- // primer-io-react-native
4
- //
5
- // Created by Evangelos on 3/8/22.
6
- //
7
-
8
- #import <React/RCTBridgeModule.h>
9
- #import <React/RCTEventEmitter.h>
10
-
11
- @interface RCT_EXTERN_MODULE(PrimerHeadlessUniversalCheckoutRawDataManager, RCTEventEmitter)
12
-
13
- RCT_EXTERN_METHOD(initialize:(NSString *)paymentMethodTypeStr resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
14
-
15
- RCT_EXTERN_METHOD(listRequiredInputElementTypesForPaymentMethodType:(NSString *)paymentMethodTypeStr resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
16
-
17
- RCT_EXTERN_METHOD(setRawData:(NSString *)rawDataStr resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
18
-
19
- RCT_EXTERN_METHOD(submit:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
20
-
21
- RCT_EXTERN_METHOD(configure:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
22
-
23
- @end