@primer-io/react-native 2.16.4 → 2.17.0-rc.2

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 +104 -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 +88 -0
  42. package/ios/Sources/DataModels/RNTNativeError.swift +22 -0
  43. package/ios/Sources/DataModels/RNTPrimerPaymentMethodAsset.swift +65 -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 +80 -0
  57. package/ios/{RNTPrimer.swift → Sources/RNTPrimer.swift} +20 -34
  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 +22 -32
  71. package/lib/commonjs/Primer.js.map +1 -1
  72. package/lib/commonjs/PrimerInput.js.map +1 -1
  73. package/lib/commonjs/RNPrimer.js +2 -12
  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 +22 -32
  120. package/lib/module/Primer.js.map +1 -1
  121. package/lib/module/PrimerInput.js.map +1 -1
  122. package/lib/module/RNPrimer.js +2 -12
  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 +3 -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 +14 -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 +2 -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 +18 -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 +30 -41
  231. package/src/RNPrimer.ts +2 -18
  232. package/src/index.tsx +43 -29
  233. package/src/models/PrimerAsset.ts +13 -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 +1 -28
  240. package/src/models/PrimerPaymentMethodManagerCategory.ts +5 -0
  241. package/src/models/PrimerRawData.ts +6 -10
  242. package/src/models/PrimerSettings.ts +29 -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
@@ -14,7 +14,7 @@
14
14
  1DEBE0FE26C2D875004E3064 /* PrimerSettingsRN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DEBE0FD26C2D875004E3064 /* PrimerSettingsRN.swift */; };
15
15
  1DEBE10026C2D88E004E3064 /* PrimerThemeRN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DEBE0FF26C2D88E004E3064 /* PrimerThemeRN.swift */; };
16
16
  1DEBE10226C2D8BA004E3064 /* PaymentInstrumentTokenRN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DEBE10126C2D8BA004E3064 /* PaymentInstrumentTokenRN.swift */; };
17
- 89F0FEEB6413C5D9701E83B6 /* libPods-ReactNative.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BADF4926CED3501185F76198 /* libPods-ReactNative.a */; };
17
+ 3513609F0CAED44C39E307A6 /* libPods-ReactNative.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1BC6985820719A2A61EB3DD8 /* libPods-ReactNative.a */; };
18
18
  F4FF95D7245B92E800C19C63 /* UniversalCheckoutRN.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4FF95D6245B92E800C19C63 /* UniversalCheckoutRN.swift */; };
19
19
  /* End PBXBuildFile section */
20
20
 
@@ -32,16 +32,16 @@
32
32
 
33
33
  /* Begin PBXFileReference section */
34
34
  134814201AA4EA6300B7C361 /* libReactNative.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libReactNative.a; sourceTree = BUILT_PRODUCTS_DIR; };
35
+ 1BC6985820719A2A61EB3DD8 /* libPods-ReactNative.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ReactNative.a"; sourceTree = BUILT_PRODUCTS_DIR; };
35
36
  1DEBE0F626C2D594004E3064 /* PrimerRN.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrimerRN.swift; sourceTree = "<group>"; };
36
37
  1DEBE0F926C2D75A004E3064 /* PrimerFlowRN.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrimerFlowRN.swift; sourceTree = "<group>"; };
37
38
  1DEBE0FB26C2D859004E3064 /* PrimerExceptionRN.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrimerExceptionRN.swift; sourceTree = "<group>"; };
38
39
  1DEBE0FD26C2D875004E3064 /* PrimerSettingsRN.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrimerSettingsRN.swift; sourceTree = "<group>"; };
39
40
  1DEBE0FF26C2D88E004E3064 /* PrimerThemeRN.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrimerThemeRN.swift; sourceTree = "<group>"; };
40
41
  1DEBE10126C2D8BA004E3064 /* PaymentInstrumentTokenRN.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaymentInstrumentTokenRN.swift; sourceTree = "<group>"; };
41
- 838A4233250958211E6C0DD8 /* Pods-ReactNative.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNative.debug.xcconfig"; path = "Target Support Files/Pods-ReactNative/Pods-ReactNative.debug.xcconfig"; sourceTree = "<group>"; };
42
- A5356B751E3623AFD2BA69A3 /* Pods-ReactNative.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNative.release.xcconfig"; path = "Target Support Files/Pods-ReactNative/Pods-ReactNative.release.xcconfig"; sourceTree = "<group>"; };
42
+ 568A70304A987529851A447E /* Pods-ReactNative.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNative.release.xcconfig"; path = "Target Support Files/Pods-ReactNative/Pods-ReactNative.release.xcconfig"; sourceTree = "<group>"; };
43
+ AED192A9C2698C599CF21663 /* Pods-ReactNative.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ReactNative.debug.xcconfig"; path = "Target Support Files/Pods-ReactNative/Pods-ReactNative.debug.xcconfig"; sourceTree = "<group>"; };
43
44
  B3E7B5891CC2AC0600A0062D /* ReactNative.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ReactNative.m; sourceTree = "<group>"; };
44
- BADF4926CED3501185F76198 /* libPods-ReactNative.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ReactNative.a"; sourceTree = BUILT_PRODUCTS_DIR; };
45
45
  F4FF95D5245B92E700C19C63 /* ReactNative-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ReactNative-Bridging-Header.h"; sourceTree = "<group>"; };
46
46
  F4FF95D6245B92E800C19C63 /* UniversalCheckoutRN.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UniversalCheckoutRN.swift; sourceTree = "<group>"; };
47
47
  /* End PBXFileReference section */
@@ -51,13 +51,21 @@
51
51
  isa = PBXFrameworksBuildPhase;
52
52
  buildActionMask = 2147483647;
53
53
  files = (
54
- 89F0FEEB6413C5D9701E83B6 /* libPods-ReactNative.a in Frameworks */,
54
+ 3513609F0CAED44C39E307A6 /* libPods-ReactNative.a in Frameworks */,
55
55
  );
56
56
  runOnlyForDeploymentPostprocessing = 0;
57
57
  };
58
58
  /* End PBXFrameworksBuildPhase section */
59
59
 
60
60
  /* Begin PBXGroup section */
61
+ 11BA866BDA971C4D4B96C2C4 /* Frameworks */ = {
62
+ isa = PBXGroup;
63
+ children = (
64
+ 1BC6985820719A2A61EB3DD8 /* libPods-ReactNative.a */,
65
+ );
66
+ name = Frameworks;
67
+ sourceTree = "<group>";
68
+ };
61
69
  134814211AA4EA7D00B7C361 /* Products */ = {
62
70
  isa = PBXGroup;
63
71
  children = (
@@ -81,8 +89,8 @@
81
89
  38076040A533828516C55677 /* Pods */ = {
82
90
  isa = PBXGroup;
83
91
  children = (
84
- 838A4233250958211E6C0DD8 /* Pods-ReactNative.debug.xcconfig */,
85
- A5356B751E3623AFD2BA69A3 /* Pods-ReactNative.release.xcconfig */,
92
+ AED192A9C2698C599CF21663 /* Pods-ReactNative.debug.xcconfig */,
93
+ 568A70304A987529851A447E /* Pods-ReactNative.release.xcconfig */,
86
94
  );
87
95
  path = Pods;
88
96
  sourceTree = "<group>";
@@ -97,18 +105,10 @@
97
105
  F4FF95D5245B92E700C19C63 /* ReactNative-Bridging-Header.h */,
98
106
  134814211AA4EA7D00B7C361 /* Products */,
99
107
  38076040A533828516C55677 /* Pods */,
100
- E193973ADE52A4E8D27FFC73 /* Frameworks */,
108
+ 11BA866BDA971C4D4B96C2C4 /* Frameworks */,
101
109
  );
102
110
  sourceTree = "<group>";
103
111
  };
104
- E193973ADE52A4E8D27FFC73 /* Frameworks */ = {
105
- isa = PBXGroup;
106
- children = (
107
- BADF4926CED3501185F76198 /* libPods-ReactNative.a */,
108
- );
109
- name = Frameworks;
110
- sourceTree = "<group>";
111
- };
112
112
  /* End PBXGroup section */
113
113
 
114
114
  /* Begin PBXNativeTarget section */
@@ -116,7 +116,7 @@
116
116
  isa = PBXNativeTarget;
117
117
  buildConfigurationList = 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "ReactNative" */;
118
118
  buildPhases = (
119
- F9651EA2F679750D43349501 /* [CP] Check Pods Manifest.lock */,
119
+ 64FF98C09B1E65E78CC7F5BB /* [CP] Check Pods Manifest.lock */,
120
120
  58B511D71A9E6C8500147676 /* Sources */,
121
121
  58B511D81A9E6C8500147676 /* Frameworks */,
122
122
  58B511D91A9E6C8500147676 /* CopyFiles */,
@@ -163,7 +163,7 @@
163
163
  /* End PBXProject section */
164
164
 
165
165
  /* Begin PBXShellScriptBuildPhase section */
166
- F9651EA2F679750D43349501 /* [CP] Check Pods Manifest.lock */ = {
166
+ 64FF98C09B1E65E78CC7F5BB /* [CP] Check Pods Manifest.lock */ = {
167
167
  isa = PBXShellScriptBuildPhase;
168
168
  buildActionMask = 2147483647;
169
169
  files = (
@@ -310,7 +310,7 @@
310
310
  };
311
311
  58B511F01A9E6C8500147676 /* Debug */ = {
312
312
  isa = XCBuildConfiguration;
313
- baseConfigurationReference = 838A4233250958211E6C0DD8 /* Pods-ReactNative.debug.xcconfig */;
313
+ baseConfigurationReference = AED192A9C2698C599CF21663 /* Pods-ReactNative.debug.xcconfig */;
314
314
  buildSettings = {
315
315
  HEADER_SEARCH_PATHS = (
316
316
  "$(inherited)",
@@ -330,7 +330,7 @@
330
330
  };
331
331
  58B511F11A9E6C8500147676 /* Release */ = {
332
332
  isa = XCBuildConfiguration;
333
- baseConfigurationReference = A5356B751E3623AFD2BA69A3 /* Pods-ReactNative.release.xcconfig */;
333
+ baseConfigurationReference = 568A70304A987529851A447E /* Pods-ReactNative.release.xcconfig */;
334
334
  buildSettings = {
335
335
  HEADER_SEARCH_PATHS = (
336
336
  "$(inherited)",
@@ -0,0 +1,75 @@
1
+ //
2
+ // ImplementedRNCallbacks.swift
3
+ // primer-io-react-native
4
+ //
5
+ // Created by Evangelos on 20/5/22.
6
+ //
7
+
8
+ import Foundation
9
+
10
+ internal struct ImplementedRNCallbacks: Decodable {
11
+
12
+ internal var isOnAvailablePaymentMethodsLoadImplemented = false
13
+ internal var isOnTokenizationStartImplemented = false
14
+ internal var isOnTokenizationSuccessImplemented = false
15
+
16
+ internal var isOnCheckoutResumeImplemented = false
17
+ internal var isOnCheckoutPendingImplemented = false
18
+ internal var isOnCheckoutAdditionalInfoImplemented = false
19
+
20
+ internal var isOnErrorImplemented = false
21
+ internal var isOnCheckoutCompleteImplemented = false
22
+ internal var isOnBeforeClientSessionUpdateImplemented = false
23
+
24
+ internal var isOnClientSessionUpdateImplemented = false
25
+ internal var isOnBeforePaymentCreateImplemented = false
26
+ internal var isOnPreparationStartImplemented = false
27
+
28
+ internal var isOnPaymentMethodShowImplemented = false
29
+ internal var isOnDismissImplemented = false
30
+
31
+ enum CodingKeys: String, CodingKey {
32
+
33
+ case isOnAvailablePaymentMethodsLoadImplemented = "onAvailablePaymentMethodsLoad"
34
+ case isOnTokenizationStartImplemented = "onTokenizationStart"
35
+ case isOnTokenizationSuccessImplemented = "onTokenizationSuccess"
36
+
37
+ case isOnCheckoutResumeImplemented = "onCheckoutResume"
38
+ case isOnCheckoutPendingImplemented = "onCheckoutPending"
39
+ case isOnCheckoutAdditionalInfoImplemented = "onCheckoutAdditionalInfo"
40
+
41
+ case isOnErrorImplemented = "onError"
42
+ case isOnCheckoutCompleteImplemented = "onCheckoutComplete"
43
+ case isOnBeforeClientSessionUpdateImplemented = "onBeforeClientSessionUpdate"
44
+
45
+ case isOnClientSessionUpdateImplemented = "onClientSessionUpdate"
46
+ case isOnBeforePaymentCreateImplemented = "onBeforePaymentCreate"
47
+ case isOnPreparationStartImplemented = "onPreparationStart"
48
+
49
+ case isOnPaymentMethodShowImplemented = "onPaymentMethodShow"
50
+ case isOnDismissImplemented = "onDismiss"
51
+ }
52
+
53
+ init(from decoder: Decoder) throws {
54
+ let container = try decoder.container(keyedBy: CodingKeys.self)
55
+
56
+ self.isOnAvailablePaymentMethodsLoadImplemented = (try? container.decode(Bool.self, forKey: .isOnAvailablePaymentMethodsLoadImplemented)) ?? false
57
+ self.isOnTokenizationStartImplemented = (try? container.decode(Bool.self, forKey: .isOnTokenizationStartImplemented)) ?? false
58
+ self.isOnTokenizationSuccessImplemented = (try? container.decode(Bool.self, forKey: .isOnTokenizationSuccessImplemented)) ?? false
59
+
60
+ self.isOnCheckoutResumeImplemented = (try? container.decode(Bool.self, forKey: .isOnCheckoutResumeImplemented)) ?? false
61
+ self.isOnCheckoutPendingImplemented = (try? container.decode(Bool.self, forKey: .isOnCheckoutPendingImplemented)) ?? false
62
+ self.isOnCheckoutAdditionalInfoImplemented = (try? container.decode(Bool.self, forKey: .isOnCheckoutAdditionalInfoImplemented)) ?? false
63
+
64
+ self.isOnErrorImplemented = (try? container.decode(Bool.self, forKey: .isOnErrorImplemented)) ?? false
65
+ self.isOnCheckoutCompleteImplemented = (try? container.decode(Bool.self, forKey: .isOnCheckoutCompleteImplemented)) ?? false
66
+ self.isOnBeforeClientSessionUpdateImplemented = (try? container.decode(Bool.self, forKey: .isOnBeforeClientSessionUpdateImplemented)) ?? false
67
+
68
+ self.isOnClientSessionUpdateImplemented = (try? container.decode(Bool.self, forKey: .isOnClientSessionUpdateImplemented)) ?? false
69
+ self.isOnBeforePaymentCreateImplemented = (try? container.decode(Bool.self, forKey: .isOnBeforePaymentCreateImplemented)) ?? false
70
+ self.isOnPreparationStartImplemented = (try? container.decode(Bool.self, forKey: .isOnPreparationStartImplemented)) ?? false
71
+
72
+ self.isOnPaymentMethodShowImplemented = (try? container.decode(Bool.self, forKey: .isOnPaymentMethodShowImplemented)) ?? false
73
+ self.isOnDismissImplemented = (try? container.decode(Bool.self, forKey: .isOnDismissImplemented)) ?? false
74
+ }
75
+ }
@@ -1,11 +1,11 @@
1
1
  import Foundation
2
2
  import PrimerSDK
3
3
 
4
- extension PrimerBancontactCardRedirectData {
4
+ extension PrimerBancontactCardData {
5
5
 
6
- convenience init?(cardRedirectDataStr: String) {
6
+ convenience init?(bankcontactCardDataStr: String) {
7
7
  do {
8
- guard let data = cardRedirectDataStr.data(using: .utf8) else {
8
+ guard let data = bankcontactCardDataStr.data(using: .utf8) else {
9
9
  return nil
10
10
  }
11
11
 
@@ -16,14 +16,12 @@ extension PrimerBancontactCardRedirectData {
16
16
  }
17
17
 
18
18
  if let cardNumber = dict["cardNumber"],
19
- let expiryMonth = dict["expiryMonth"],
20
- let expiryYear = dict["expiryYear"],
19
+ let expiryDate = dict["expiryDate"],
21
20
  let cardholderName = dict["cardholderName"]
22
21
  {
23
22
  self.init(
24
23
  cardNumber: cardNumber,
25
- expiryMonth: expiryMonth,
26
- expiryYear: expiryYear,
24
+ expiryDate: expiryDate,
27
25
  cardholderName: cardholderName)
28
26
  } else {
29
27
  return nil
@@ -33,5 +31,4 @@ extension PrimerBancontactCardRedirectData {
33
31
  return nil
34
32
  }
35
33
  }
36
-
37
34
  }
@@ -24,14 +24,12 @@ extension PrimerCardData {
24
24
 
25
25
  if let cardNumber = dict["cardNumber"],
26
26
  let cvv = dict["cvv"],
27
- let expiryMonth = dict["expiryMonth"],
28
- let expiryYear = dict["expiryYear"]
27
+ let expiryDate = dict["expiryDate"]
29
28
  {
30
29
  let cardholderName = dict["cardholderName"]
31
30
  self.init(
32
31
  cardNumber: cardNumber,
33
- expiryMonth: expiryMonth,
34
- expiryYear: expiryYear,
32
+ expiryDate: expiryDate,
35
33
  cvv: cvv,
36
34
  cardholderName: cardholderName)
37
35
  } else {
@@ -42,5 +40,4 @@ extension PrimerCardData {
42
40
  return nil
43
41
  }
44
42
  }
45
-
46
43
  }
@@ -0,0 +1,20 @@
1
+ //
2
+ // PrimerHeadlessUniversalCheckout_PaymentMethod.swift
3
+ // primer-io-react-native
4
+ //
5
+ // Created by Evangelos on 7/10/22.
6
+ //
7
+
8
+ import Foundation
9
+ import PrimerSDK
10
+
11
+ extension PrimerHeadlessUniversalCheckout.PaymentMethod {
12
+
13
+ func toJsonObject() -> [String: Any] {
14
+ return [
15
+ "paymentMethodType": paymentMethodType,
16
+ "supportedPrimerSessionIntents": self.supportedPrimerSessionIntents.compactMap({ $0.rawValue }),
17
+ "paymentMethodManagerCategories": self.paymentMethodManagerCategories.compactMap({ $0.rawValue }).filter({ $0 != "CARD_COMPONENTS" })
18
+ ]
19
+ }
20
+ }
@@ -8,11 +8,11 @@
8
8
  import Foundation
9
9
  import PrimerSDK
10
10
 
11
- extension PrimerRawRetailerData {
11
+ extension PrimerRetailerData {
12
12
 
13
- convenience init?(primerRawRetailerDataStr: String) {
13
+ convenience init?(primerRetailerDataStr: String) {
14
14
  do {
15
- guard let data = primerRawRetailerDataStr.data(using: .utf8) else {
15
+ guard let data = primerRetailerDataStr.data(using: .utf8) else {
16
16
  return nil
17
17
  }
18
18
 
@@ -34,5 +34,4 @@ extension PrimerRawRetailerData {
34
34
  return nil
35
35
  }
36
36
  }
37
-
38
37
  }
@@ -0,0 +1,88 @@
1
+ import PrimerSDK
2
+
3
+ extension PrimerSettings {
4
+
5
+ convenience init(settingsStr: String?) throws {
6
+ if settingsStr == nil {
7
+ self.init()
8
+ } else {
9
+ guard let settingsData = settingsStr!.data(using: .utf8) else {
10
+ let err = RNTNativeError(errorId: "native-ios", errorDescription: "The value of the 'settings' object is invalid.", recoverySuggestion: "Provide a valid 'settings' object")
11
+ throw err
12
+ }
13
+
14
+ let settingsJson = try JSONSerialization.jsonObject(with: settingsData)
15
+
16
+ guard let settingsJson = settingsJson as? [String: Any] else {
17
+ let err = RNTNativeError(errorId: "native-ios", errorDescription: "The 'settings' object is not a valid JSON", recoverySuggestion: "Provide a valid 'settings' object")
18
+ throw err
19
+ }
20
+
21
+ var paymentHandling: PrimerPaymentHandling = .auto
22
+ if let rnPaymentHandling = settingsJson["paymentHandling"] as? String,
23
+ rnPaymentHandling == "MANUAL" {
24
+ paymentHandling = .manual
25
+ }
26
+
27
+ let rnLocaleDataLanguageCode = (settingsJson["localeData"] as? [String: Any])?["languageCode"] as? String
28
+ let rnLocaleDataLocaleCode = (settingsJson["localeData"] as? [String: Any])?["localeCode"] as? String
29
+ let localeData = PrimerLocaleData(
30
+ languageCode: rnLocaleDataLanguageCode,
31
+ regionCode: rnLocaleDataLocaleCode)
32
+
33
+ let rnUrlScheme = ((settingsJson["paymentMethodOptions"] as? [String: Any])?["iOS"] as? [String: Any])?["urlScheme"] as? String
34
+
35
+ var applePayOptions: PrimerApplePayOptions?
36
+ if let rnApplePayOptions = ((settingsJson["paymentMethodOptions"] as? [String: Any])?["applePayOptions"] as? [String: Any]),
37
+ let rnApplePayMerchantIdentifier = rnApplePayOptions["merchantIdentifier"] as? String,
38
+ let rnApplePayMerchantName = rnApplePayOptions["merchantName"] as? String
39
+ {
40
+ let rnApplePayIsCaptureBillingAddressEnabled = (rnApplePayOptions["isCaptureBillingAddressEnabled"] as? Bool) ?? false
41
+
42
+ applePayOptions = PrimerApplePayOptions(
43
+ merchantIdentifier: rnApplePayMerchantIdentifier,
44
+ merchantName: rnApplePayMerchantName,
45
+ isCaptureBillingAddressEnabled: rnApplePayIsCaptureBillingAddressEnabled )
46
+ }
47
+
48
+ var klarnaOptions: PrimerKlarnaOptions?
49
+ if let rnKlarnaRecurringPaymentDescription = ((settingsJson["paymentMethodOptions"] as? [String: Any])?["klarnaOptions"] as? [String: Any])?["recurringPaymentDescription"] as? String {
50
+ klarnaOptions = PrimerKlarnaOptions(recurringPaymentDescription: rnKlarnaRecurringPaymentDescription)
51
+ }
52
+
53
+ var uiOptions: PrimerUIOptions?
54
+ if let rnUIOptions = settingsJson["uiOptions"] as? [String: Any] {
55
+
56
+ var theme: PrimerTheme?
57
+ if let rnTheme = rnUIOptions["theme"] as? [String: Any] {
58
+ let rnThemeData = (try JSONSerialization.data(withJSONObject: rnTheme))
59
+ let rnTheme = try JSONDecoder().decode(PrimerThemeRN.self, from: rnThemeData)
60
+ theme = rnTheme.asPrimerTheme()
61
+ }
62
+
63
+ uiOptions = PrimerUIOptions(
64
+ isInitScreenEnabled: rnUIOptions["isInitScreenEnabled"] as? Bool,
65
+ isSuccessScreenEnabled: rnUIOptions["isSuccessScreenEnabled"] as? Bool,
66
+ isErrorScreenEnabled: rnUIOptions["isErrorScreenEnabled"] as? Bool,
67
+ theme: theme)
68
+ }
69
+
70
+ var debugOptions: PrimerDebugOptions?
71
+ if let rnIs3DSSanityCheckEnabled = (settingsJson["debugOptions"] as? [String: Any])?["is3DSSanityCheckEnabled"] as? Bool {
72
+ debugOptions = PrimerDebugOptions(is3DSSanityCheckEnabled: rnIs3DSSanityCheckEnabled)
73
+ }
74
+
75
+ let paymentMethodOptions = PrimerPaymentMethodOptions(
76
+ urlScheme: rnUrlScheme,
77
+ applePayOptions: applePayOptions,
78
+ klarnaOptions: klarnaOptions)
79
+
80
+ self.init(
81
+ paymentHandling: paymentHandling,
82
+ localeData: localeData,
83
+ paymentMethodOptions: paymentMethodOptions,
84
+ uiOptions: uiOptions,
85
+ debugOptions: debugOptions)
86
+ }
87
+ }
88
+ }
@@ -0,0 +1,22 @@
1
+
2
+ import Foundation
3
+
4
+ struct RNTNativeError: CustomNSError, LocalizedError, Codable {
5
+
6
+ let errorId: String
7
+ let errorDescription: String?
8
+ let recoverySuggestion: String?
9
+
10
+ var rnError: [String: String] {
11
+ var json: [String: String] = [
12
+ "errorId": errorId,
13
+ "description": errorDescription ?? "Something went wrong"
14
+ ]
15
+
16
+ if let recoverySuggestion = recoverySuggestion {
17
+ json["recoverySuggestion"] = recoverySuggestion
18
+ }
19
+
20
+ return json
21
+ }
22
+ }
@@ -0,0 +1,65 @@
1
+ //
2
+ // RNTPrimerPaymentMethodAsset.swift
3
+ // primer-io-react-native
4
+ //
5
+ // Created by Evangelos on 6/10/22.
6
+ //
7
+
8
+ import Foundation
9
+ import PrimerSDK
10
+
11
+ struct RNTPrimerPaymentMethodAsset: Codable {
12
+
13
+ let paymentMethodType: String
14
+ let paymentMethodLogo: RNTPrimerPaymentMethodLogo
15
+ let paymentMethodBackgroundColor: RNTPrimerPaymentMethodBackgroundColor
16
+
17
+ init(primerPaymentMethodAsset: PrimerPaymentMethodAsset) {
18
+ self.paymentMethodType = primerPaymentMethodAsset.paymentMethodType
19
+ self.paymentMethodLogo = RNTPrimerPaymentMethodLogo(
20
+ paymentMethodType: primerPaymentMethodAsset.paymentMethodType,
21
+ primerPaymentMethodLogo: primerPaymentMethodAsset.paymentMethodLogo)
22
+ self.paymentMethodBackgroundColor = RNTPrimerPaymentMethodBackgroundColor(
23
+ primerPaymentMethodBackgroundColor: primerPaymentMethodAsset.paymentMethodBackgroundColor)
24
+ }
25
+ }
26
+
27
+ struct RNTPrimerPaymentMethodLogo: Codable {
28
+
29
+ let colored: String?
30
+ let dark: String?
31
+ let light: String?
32
+
33
+ init(paymentMethodType: String, primerPaymentMethodLogo: PrimerPaymentMethodLogo) {
34
+ self.colored = (try? primerPaymentMethodLogo.colored?.store(withName: "\(paymentMethodType)-colored").absoluteString) ?? nil
35
+ self.dark = (try? primerPaymentMethodLogo.dark?.store(withName: "\(paymentMethodType)-dark").absoluteString) ?? nil
36
+ self.light = (try? primerPaymentMethodLogo.light?.store(withName: "\(paymentMethodType)-light").absoluteString) ?? nil
37
+ }
38
+ }
39
+
40
+ struct RNTPrimerPaymentMethodBackgroundColor: Codable {
41
+
42
+ let colored: String?
43
+ let dark: String?
44
+ let light: String?
45
+
46
+ init(primerPaymentMethodBackgroundColor: PrimerPaymentMethodBackgroundColor) {
47
+ if let bgColoredHex = primerPaymentMethodBackgroundColor.colored?.toHex() {
48
+ self.colored = "#\(bgColoredHex)"
49
+ } else {
50
+ self.colored = nil
51
+ }
52
+
53
+ if let darkColoredHex = primerPaymentMethodBackgroundColor.dark?.toHex() {
54
+ self.dark = "#\(darkColoredHex)"
55
+ } else {
56
+ self.dark = nil
57
+ }
58
+
59
+ if let lightColoredHex = primerPaymentMethodBackgroundColor.light?.toHex() {
60
+ self.light = "#\(lightColoredHex)"
61
+ } else {
62
+ self.light = nil
63
+ }
64
+ }
65
+ }
@@ -0,0 +1,19 @@
1
+ //
2
+ // NativeUIManager.m
3
+ // primer-io-react-native
4
+ //
5
+ // Created by Evangelos on 7/10/22.
6
+ //
7
+
8
+ #import <React/RCTBridgeModule.h>
9
+ #import <React/RCTEventEmitter.h>
10
+
11
+ @interface RCT_EXTERN_MODULE(RNTPrimerHeadlessUniversalPaymentMethodNativeUIManager, RCTEventEmitter)
12
+
13
+ // MARK: - API
14
+
15
+ RCT_EXTERN_METHOD(configure: (NSString *)paymentMethod resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
16
+
17
+ RCT_EXTERN_METHOD(showPaymentMethod:(NSString *)intentStr resolver:(RCTPromiseResolveBlock)resolver rejecter:(RCTPromiseRejectBlock)rejecter)
18
+
19
+ @end
@@ -0,0 +1,63 @@
1
+ //
2
+ // NativeUIManager.swift
3
+ // primer-io-react-native
4
+ //
5
+ // Created by Evangelos on 6/10/22.
6
+ //
7
+
8
+ import Foundation
9
+ import PrimerSDK
10
+
11
+ @objc(RNTPrimerHeadlessUniversalPaymentMethodNativeUIManager)
12
+ class RNTPrimerHeadlessUniversalPaymentMethodNativeUIManager: RCTEventEmitter {
13
+
14
+ var paymentMethodNativeUIManager: PrimerSDK.PrimerHeadlessUniversalCheckout.NativeUIManager!
15
+
16
+ override func supportedEvents() -> [String]! {
17
+ return []
18
+ }
19
+
20
+ override class func requiresMainQueueSetup() -> Bool {
21
+ return true
22
+ }
23
+
24
+ @objc
25
+ func configure(
26
+ _ paymentMethod: String,
27
+ resolver: @escaping RCTPromiseResolveBlock,
28
+ rejecter: @escaping RCTPromiseRejectBlock
29
+ ) {
30
+ do {
31
+ self.paymentMethodNativeUIManager = try PrimerSDK.PrimerHeadlessUniversalCheckout.NativeUIManager(paymentMethodType: paymentMethod)
32
+ resolver(nil)
33
+ } catch {
34
+ rejecter(error.rnError["errorId"]!, error.rnError["description"], error)
35
+ }
36
+ }
37
+
38
+ @objc
39
+ func showPaymentMethod(_ intentStr: String, resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
40
+ do {
41
+ guard let paymentMethodNativeUIManager = paymentMethodNativeUIManager else {
42
+ let err = RNTNativeError(
43
+ errorId: "native-ios",
44
+ errorDescription: "The NativeUIManager has not been initialized.",
45
+ recoverySuggestion: "Initialize the NativeUIManager by calling the initialize function and providing a payment method type.")
46
+ throw err
47
+ }
48
+
49
+ guard let intent = PrimerSessionIntent(rawValue: intentStr) else {
50
+ let err = RNTNativeError(
51
+ errorId: "native-ios",
52
+ errorDescription: "Invalid value for 'intent'.",
53
+ recoverySuggestion: "'intent' can be 'CHECKOUT' or 'VAULT'.")
54
+ throw err
55
+ }
56
+
57
+ try paymentMethodNativeUIManager.showPaymentMethod(intent: intent)
58
+
59
+ } catch {
60
+ rejecter(error.rnError["errorId"]!, error.rnError["description"], error)
61
+ }
62
+ }
63
+ }
@@ -0,0 +1,23 @@
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(RNTPrimerHeadlessUniversalCheckoutRawDataManager, RCTEventEmitter)
12
+
13
+ RCT_EXTERN_METHOD(configure:(NSString *)paymentMethodTypeStr resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
14
+
15
+ RCT_EXTERN_METHOD(listRequiredInputElementTypes:(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(cleanUp:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
22
+
23
+ @end