@stripe/stripe-react-native 0.44.0 → 0.46.0

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 (334) hide show
  1. package/.clang-format +90 -0
  2. package/.editorconfig +3 -0
  3. package/CHANGELOG.md +13 -1
  4. package/README.md +0 -3
  5. package/android/.gradle/8.11.1/checksums/checksums.lock +0 -0
  6. package/android/.gradle/8.11.1/checksums/md5-checksums.bin +0 -0
  7. package/android/.gradle/8.11.1/checksums/sha1-checksums.bin +0 -0
  8. package/android/.gradle/8.11.1/executionHistory/executionHistory.bin +0 -0
  9. package/android/.gradle/8.11.1/executionHistory/executionHistory.lock +0 -0
  10. package/android/.gradle/8.11.1/fileHashes/fileHashes.bin +0 -0
  11. package/android/.gradle/8.11.1/fileHashes/fileHashes.lock +0 -0
  12. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  13. package/android/.gradle/buildOutputCleanup/cache.properties +1 -1
  14. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  15. package/android/.gradle/config.properties +2 -0
  16. package/android/.gradle/file-system.probe +0 -0
  17. package/android/.idea/caches/deviceStreaming.xml +619 -0
  18. package/android/.idea/compiler.xml +6 -0
  19. package/android/.idea/gradle.xml +19 -0
  20. package/android/.idea/migrations.xml +10 -0
  21. package/android/.idea/misc.xml +10 -0
  22. package/android/.idea/runConfigurations.xml +17 -0
  23. package/android/.idea/vcs.xml +6 -0
  24. package/android/build.gradle +90 -18
  25. package/android/gradle.properties +1 -1
  26. package/android/local.properties +8 -0
  27. package/android/src/main/java/com/reactnativestripesdk/AuBECSDebitFormViewManager.kt +15 -6
  28. package/android/src/main/java/com/reactnativestripesdk/CardChangeEvent.kt +56 -0
  29. package/android/src/main/java/com/reactnativestripesdk/CardFieldView.kt +4 -4
  30. package/android/src/main/java/com/reactnativestripesdk/CardFieldViewManager.kt +55 -45
  31. package/android/src/main/java/com/reactnativestripesdk/{CardFocusEvent.kt → CardFocusChangeEvent.kt} +2 -2
  32. package/android/src/main/java/com/reactnativestripesdk/CardFormCompleteEvent.kt +17 -16
  33. package/android/src/main/java/com/reactnativestripesdk/CardFormView.kt +5 -5
  34. package/android/src/main/java/com/reactnativestripesdk/CardFormViewManager.kt +39 -33
  35. package/android/src/main/java/com/reactnativestripesdk/CollectBankAccountLauncherFragment.kt +35 -36
  36. package/android/src/main/java/com/reactnativestripesdk/EmbeddedPaymentElementView.kt +224 -0
  37. package/android/src/main/java/com/reactnativestripesdk/EmbeddedPaymentElementViewManager.kt +238 -0
  38. package/android/src/main/java/com/reactnativestripesdk/FinancialConnectionsSheetFragment.kt +11 -26
  39. package/android/src/main/java/com/reactnativestripesdk/GooglePayButtonManager.kt +14 -6
  40. package/android/src/main/java/com/reactnativestripesdk/GooglePayLauncherFragment.kt +3 -17
  41. package/android/src/main/java/com/reactnativestripesdk/GooglePayPaymentMethodLauncherFragment.kt +20 -6
  42. package/android/src/main/java/com/reactnativestripesdk/PaymentLauncherFragment.kt +63 -44
  43. package/android/src/main/java/com/reactnativestripesdk/PaymentMethodCreateParamsFactory.kt +3 -1
  44. package/android/src/main/java/com/reactnativestripesdk/PaymentOptionDisplayDataMapper.kt +17 -0
  45. package/android/src/main/java/com/reactnativestripesdk/PaymentSheetAppearance.kt +266 -0
  46. package/android/src/main/java/com/reactnativestripesdk/PaymentSheetFragment.kt +25 -33
  47. package/android/src/main/java/com/reactnativestripesdk/StripeAbstractComposeView.kt +113 -0
  48. package/android/src/main/java/com/reactnativestripesdk/StripeContainerManager.kt +11 -3
  49. package/android/src/main/java/com/reactnativestripesdk/StripeSdkModule.kt +180 -65
  50. package/android/src/main/java/com/reactnativestripesdk/StripeSdkPackage.kt +34 -4
  51. package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressLauncherFragment.kt +3 -17
  52. package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressSheetView.kt +33 -27
  53. package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressSheetViewManager.kt +49 -24
  54. package/android/src/main/java/com/reactnativestripesdk/customersheet/CustomerSheetFragment.kt +19 -24
  55. package/android/src/main/java/com/reactnativestripesdk/customersheet/ReactNativeCustomerAdapter.kt +11 -29
  56. package/android/src/main/java/com/reactnativestripesdk/pushprovisioning/AddToWalletButtonManager.kt +36 -12
  57. package/android/src/main/java/com/reactnativestripesdk/pushprovisioning/AddToWalletButtonView.kt +5 -3
  58. package/android/src/main/java/com/reactnativestripesdk/utils/Extensions.kt +4 -0
  59. package/android/src/main/java/com/reactnativestripesdk/utils/KeepJsAwakeTask.kt +2 -2
  60. package/android/src/main/java/com/reactnativestripesdk/utils/Mappers.kt +21 -0
  61. package/android/src/main/java/com/reactnativestripesdk/utils/StripeFragment.kt +52 -0
  62. package/android/src/oldarch/java/com/facebook/react/viewmanagers/AddToWalletButtonManagerDelegate.java +49 -0
  63. package/android/src/oldarch/java/com/facebook/react/viewmanagers/AddToWalletButtonManagerInterface.java +25 -0
  64. package/android/src/oldarch/java/com/facebook/react/viewmanagers/AddressSheetViewManagerDelegate.java +64 -0
  65. package/android/src/oldarch/java/com/facebook/react/viewmanagers/AddressSheetViewManagerInterface.java +30 -0
  66. package/android/src/oldarch/java/com/facebook/react/viewmanagers/ApplePayButtonManagerDelegate.java +41 -0
  67. package/android/src/oldarch/java/com/facebook/react/viewmanagers/ApplePayButtonManagerInterface.java +20 -0
  68. package/android/src/oldarch/java/com/facebook/react/viewmanagers/AuBECSDebitFormManagerDelegate.java +36 -0
  69. package/android/src/oldarch/java/com/facebook/react/viewmanagers/AuBECSDebitFormManagerInterface.java +20 -0
  70. package/android/src/oldarch/java/com/facebook/react/viewmanagers/CardFieldManagerDelegate.java +73 -0
  71. package/android/src/oldarch/java/com/facebook/react/viewmanagers/CardFieldManagerInterface.java +31 -0
  72. package/android/src/oldarch/java/com/facebook/react/viewmanagers/CardFormManagerDelegate.java +67 -0
  73. package/android/src/oldarch/java/com/facebook/react/viewmanagers/CardFormManagerInterface.java +29 -0
  74. package/android/src/oldarch/java/com/facebook/react/viewmanagers/EmbeddedPaymentElementViewManagerDelegate.java +49 -0
  75. package/android/src/oldarch/java/com/facebook/react/viewmanagers/EmbeddedPaymentElementViewManagerInterface.java +21 -0
  76. package/android/src/oldarch/java/com/facebook/react/viewmanagers/GooglePayButtonManagerDelegate.java +38 -0
  77. package/android/src/oldarch/java/com/facebook/react/viewmanagers/GooglePayButtonManagerInterface.java +19 -0
  78. package/android/src/oldarch/java/com/facebook/react/viewmanagers/StripeContainerManagerDelegate.java +32 -0
  79. package/android/src/oldarch/java/com/facebook/react/viewmanagers/StripeContainerManagerInterface.java +17 -0
  80. package/android/src/oldarch/java/com/reactnativestripesdk/NativeStripeSdkModuleSpec.java +310 -0
  81. package/ios/AddressSheet/AddressSheetUtils.swift +21 -19
  82. package/ios/AddressSheet/AddressSheetView.swift +23 -17
  83. package/ios/ApplePayButtonManager.m +0 -1
  84. package/ios/ApplePayButtonManager.swift +1 -3
  85. package/ios/ApplePayButtonView.swift +25 -20
  86. package/ios/ApplePayViewController.swift +22 -22
  87. package/ios/AuBECSDebitFormView.swift +14 -8
  88. package/ios/CardFieldManager.swift +1 -4
  89. package/ios/CardFieldView.swift +28 -25
  90. package/ios/CardFormManager.swift +1 -4
  91. package/ios/CardFormView.swift +25 -16
  92. package/ios/CustomerSheet/CustomerSheetUtils.swift +12 -16
  93. package/ios/CustomerSheet/ReactNativeCustomerAdapter.swift +8 -8
  94. package/ios/EmbeddedPaymentElementManager.m +6 -0
  95. package/ios/EmbeddedPaymentElementView.swift +49 -0
  96. package/ios/NewArch/AddToWalletButtonComponentView.h +10 -0
  97. package/ios/NewArch/AddToWalletButtonComponentView.mm +93 -0
  98. package/ios/NewArch/AddressSheetViewComponentView.h +10 -0
  99. package/ios/NewArch/AddressSheetViewComponentView.mm +109 -0
  100. package/ios/NewArch/ApplePayButtonComponentView.h +10 -0
  101. package/ios/NewArch/ApplePayButtonComponentView.mm +124 -0
  102. package/ios/NewArch/AuBECSDebitFormComponentView.h +10 -0
  103. package/ios/NewArch/AuBECSDebitFormComponentView.mm +95 -0
  104. package/ios/NewArch/CardFieldComponentView.h +10 -0
  105. package/ios/NewArch/CardFieldComponentView.mm +125 -0
  106. package/ios/NewArch/CardFormComponentView.h +10 -0
  107. package/ios/NewArch/CardFormComponentView.mm +108 -0
  108. package/ios/NewArch/EmbeddedPaymentElementViewComponentView.h +10 -0
  109. package/ios/NewArch/EmbeddedPaymentElementViewComponentView.mm +81 -0
  110. package/ios/NewArch/StripeContainerComponentView.h +10 -0
  111. package/ios/NewArch/StripeContainerComponentView.mm +74 -0
  112. package/ios/NewArch/StripeNewArchConversions.h +20 -0
  113. package/ios/NewArch/StripeNewArchConversions.mm +47 -0
  114. package/ios/OldArch/StripeSdkEventEmitterCompat.h +27 -0
  115. package/ios/OldArch/StripeSdkEventEmitterCompat.m +105 -0
  116. package/ios/PaymentOptionDisplayData+ReactNative.swift +55 -0
  117. package/ios/PaymentSheetAppearance.swift +194 -1
  118. package/ios/PushProvisioning/AddToWalletButtonView.swift +19 -13
  119. package/ios/StripeContainerView.swift +5 -3
  120. package/ios/StripeSdk.h +21 -0
  121. package/ios/StripeSdk.mm +415 -0
  122. package/ios/StripeSdkEmitter.swift +19 -0
  123. package/ios/{StripeSdk+CustomerSheet.swift → StripeSdkImpl+CustomerSheet.swift} +24 -25
  124. package/ios/StripeSdkImpl+Embedded.swift +327 -0
  125. package/ios/{StripeSdk+PaymentSheet.swift → StripeSdkImpl+PaymentSheet.swift} +18 -29
  126. package/ios/{StripeSdk.swift → StripeSdkImpl.swift} +50 -72
  127. package/ios/StripeSwiftInterop.h +25 -0
  128. package/ios/stripe_react_native.h +2 -0
  129. package/lib/commonjs/components/AddToWalletButton.js +1 -1
  130. package/lib/commonjs/components/AddToWalletButton.js.map +1 -1
  131. package/lib/commonjs/components/AddressSheet.js +1 -1
  132. package/lib/commonjs/components/AddressSheet.js.map +1 -1
  133. package/lib/commonjs/components/AuBECSDebitForm.js +1 -1
  134. package/lib/commonjs/components/AuBECSDebitForm.js.map +1 -1
  135. package/lib/commonjs/components/CardField.js +1 -1
  136. package/lib/commonjs/components/CardField.js.map +1 -1
  137. package/lib/commonjs/components/CardForm.js +1 -1
  138. package/lib/commonjs/components/CardForm.js.map +1 -1
  139. package/lib/commonjs/components/CustomerSheet.js +1 -1
  140. package/lib/commonjs/components/CustomerSheet.js.map +1 -1
  141. package/lib/commonjs/components/PlatformPayButton.js +1 -1
  142. package/lib/commonjs/components/PlatformPayButton.js.map +1 -1
  143. package/lib/commonjs/components/StripeContainer.js +1 -1
  144. package/lib/commonjs/components/StripeContainer.js.map +1 -1
  145. package/lib/commonjs/components/StripeProvider.js +1 -1
  146. package/lib/commonjs/components/StripeProvider.js.map +1 -1
  147. package/lib/commonjs/events.js +2 -0
  148. package/lib/commonjs/events.js.map +1 -0
  149. package/lib/commonjs/functions.js +1 -1
  150. package/lib/commonjs/functions.js.map +1 -1
  151. package/lib/commonjs/index.js +1 -1
  152. package/lib/commonjs/index.js.map +1 -1
  153. package/lib/commonjs/specs/NativeAddToWalletButton.js +2 -0
  154. package/lib/commonjs/specs/NativeAddToWalletButton.js.map +1 -0
  155. package/lib/commonjs/specs/NativeAddressSheet.js +2 -0
  156. package/lib/commonjs/specs/NativeAddressSheet.js.map +1 -0
  157. package/lib/commonjs/specs/NativeApplePayButton.js +2 -0
  158. package/lib/commonjs/specs/NativeApplePayButton.js.map +1 -0
  159. package/lib/commonjs/specs/NativeAuBECSDebitForm.js +2 -0
  160. package/lib/commonjs/specs/NativeAuBECSDebitForm.js.map +1 -0
  161. package/lib/commonjs/specs/NativeCardField.js +2 -0
  162. package/lib/commonjs/specs/NativeCardField.js.map +1 -0
  163. package/lib/commonjs/specs/NativeCardForm.js +2 -0
  164. package/lib/commonjs/specs/NativeCardForm.js.map +1 -0
  165. package/lib/commonjs/specs/NativeEmbeddedPaymentElement.js +2 -0
  166. package/lib/commonjs/specs/NativeEmbeddedPaymentElement.js.map +1 -0
  167. package/lib/commonjs/specs/NativeGooglePayButton.js +2 -0
  168. package/lib/commonjs/specs/NativeGooglePayButton.js.map +1 -0
  169. package/lib/commonjs/specs/NativeStripeContainer.js +2 -0
  170. package/lib/commonjs/specs/NativeStripeContainer.js.map +1 -0
  171. package/lib/commonjs/specs/NativeStripeSdkModule.js +2 -0
  172. package/lib/commonjs/specs/NativeStripeSdkModule.js.map +1 -0
  173. package/lib/commonjs/specs/utils.js +2 -0
  174. package/lib/commonjs/specs/utils.js.map +1 -0
  175. package/lib/commonjs/types/EmbeddedPaymentElement.js +2 -0
  176. package/lib/commonjs/types/EmbeddedPaymentElement.js.map +1 -0
  177. package/lib/commonjs/types/PaymentSheet.js +1 -1
  178. package/lib/commonjs/types/PaymentSheet.js.map +1 -1
  179. package/lib/module/components/AddToWalletButton.js +1 -1
  180. package/lib/module/components/AddToWalletButton.js.map +1 -1
  181. package/lib/module/components/AddressSheet.js +1 -1
  182. package/lib/module/components/AddressSheet.js.map +1 -1
  183. package/lib/module/components/AuBECSDebitForm.js +1 -1
  184. package/lib/module/components/AuBECSDebitForm.js.map +1 -1
  185. package/lib/module/components/CardField.js +1 -1
  186. package/lib/module/components/CardField.js.map +1 -1
  187. package/lib/module/components/CardForm.js +1 -1
  188. package/lib/module/components/CardForm.js.map +1 -1
  189. package/lib/module/components/CustomerSheet.js +1 -1
  190. package/lib/module/components/CustomerSheet.js.map +1 -1
  191. package/lib/module/components/PlatformPayButton.js +1 -1
  192. package/lib/module/components/PlatformPayButton.js.map +1 -1
  193. package/lib/module/components/StripeContainer.js +1 -1
  194. package/lib/module/components/StripeContainer.js.map +1 -1
  195. package/lib/module/components/StripeProvider.js +1 -1
  196. package/lib/module/components/StripeProvider.js.map +1 -1
  197. package/lib/module/events.js +2 -0
  198. package/lib/module/events.js.map +1 -0
  199. package/lib/module/functions.js +1 -1
  200. package/lib/module/functions.js.map +1 -1
  201. package/lib/module/index.js +1 -1
  202. package/lib/module/index.js.map +1 -1
  203. package/lib/module/specs/NativeAddToWalletButton.js +2 -0
  204. package/lib/module/specs/NativeAddToWalletButton.js.map +1 -0
  205. package/lib/module/specs/NativeAddressSheet.js +2 -0
  206. package/lib/module/specs/NativeAddressSheet.js.map +1 -0
  207. package/lib/module/specs/NativeApplePayButton.js +2 -0
  208. package/lib/module/specs/NativeApplePayButton.js.map +1 -0
  209. package/lib/module/specs/NativeAuBECSDebitForm.js +2 -0
  210. package/lib/module/specs/NativeAuBECSDebitForm.js.map +1 -0
  211. package/lib/module/specs/NativeCardField.js +2 -0
  212. package/lib/module/specs/NativeCardField.js.map +1 -0
  213. package/lib/module/specs/NativeCardForm.js +2 -0
  214. package/lib/module/specs/NativeCardForm.js.map +1 -0
  215. package/lib/module/specs/NativeEmbeddedPaymentElement.js +2 -0
  216. package/lib/module/specs/NativeEmbeddedPaymentElement.js.map +1 -0
  217. package/lib/module/specs/NativeGooglePayButton.js +2 -0
  218. package/lib/module/specs/NativeGooglePayButton.js.map +1 -0
  219. package/lib/module/specs/NativeStripeContainer.js +2 -0
  220. package/lib/module/specs/NativeStripeContainer.js.map +1 -0
  221. package/lib/module/specs/NativeStripeSdkModule.js +2 -0
  222. package/lib/module/specs/NativeStripeSdkModule.js.map +1 -0
  223. package/lib/module/specs/utils.js +2 -0
  224. package/lib/module/specs/utils.js.map +1 -0
  225. package/lib/module/types/EmbeddedPaymentElement.js +2 -0
  226. package/lib/module/types/EmbeddedPaymentElement.js.map +1 -0
  227. package/lib/module/types/PaymentSheet.js +1 -1
  228. package/lib/module/types/PaymentSheet.js.map +1 -1
  229. package/lib/typescript/src/components/AddToWalletButton.d.ts.map +1 -1
  230. package/lib/typescript/src/components/AddressSheet.d.ts.map +1 -1
  231. package/lib/typescript/src/components/AuBECSDebitForm.d.ts.map +1 -1
  232. package/lib/typescript/src/components/CardField.d.ts +1 -1
  233. package/lib/typescript/src/components/CardField.d.ts.map +1 -1
  234. package/lib/typescript/src/components/CardForm.d.ts +1 -1
  235. package/lib/typescript/src/components/CardForm.d.ts.map +1 -1
  236. package/lib/typescript/src/components/CustomerSheet.d.ts +1 -1
  237. package/lib/typescript/src/components/CustomerSheet.d.ts.map +1 -1
  238. package/lib/typescript/src/components/StripeContainer.d.ts.map +1 -1
  239. package/lib/typescript/src/events.d.ts +13 -0
  240. package/lib/typescript/src/events.d.ts.map +1 -0
  241. package/lib/typescript/src/functions.d.ts.map +1 -1
  242. package/lib/typescript/src/hooks/useFinancialConnectionsSheet.d.ts +4 -4
  243. package/lib/typescript/src/hooks/useFinancialConnectionsSheet.d.ts.map +1 -1
  244. package/lib/typescript/src/hooks/useStripe.d.ts +2 -2
  245. package/lib/typescript/src/hooks/useStripe.d.ts.map +1 -1
  246. package/lib/typescript/src/index.d.ts +2 -0
  247. package/lib/typescript/src/index.d.ts.map +1 -1
  248. package/lib/typescript/src/specs/NativeAddToWalletButton.d.ts +27 -0
  249. package/lib/typescript/src/specs/NativeAddToWalletButton.d.ts.map +1 -0
  250. package/lib/typescript/src/specs/NativeAddressSheet.d.ts +34 -0
  251. package/lib/typescript/src/specs/NativeAddressSheet.d.ts.map +1 -0
  252. package/lib/typescript/src/specs/NativeApplePayButton.d.ts +28 -0
  253. package/lib/typescript/src/specs/NativeApplePayButton.d.ts.map +1 -0
  254. package/lib/typescript/src/specs/NativeAuBECSDebitForm.d.ts +19 -0
  255. package/lib/typescript/src/specs/NativeAuBECSDebitForm.d.ts.map +1 -0
  256. package/lib/typescript/src/specs/NativeCardField.d.ts +33 -0
  257. package/lib/typescript/src/specs/NativeCardField.d.ts.map +1 -0
  258. package/lib/typescript/src/specs/NativeCardForm.d.ts +31 -0
  259. package/lib/typescript/src/specs/NativeCardForm.d.ts.map +1 -0
  260. package/lib/typescript/src/specs/NativeEmbeddedPaymentElement.d.ts +17 -0
  261. package/lib/typescript/src/specs/NativeEmbeddedPaymentElement.d.ts.map +1 -0
  262. package/lib/typescript/src/specs/NativeGooglePayButton.d.ts +11 -0
  263. package/lib/typescript/src/specs/NativeGooglePayButton.d.ts.map +1 -0
  264. package/lib/typescript/src/specs/NativeStripeContainer.d.ts +8 -0
  265. package/lib/typescript/src/specs/NativeStripeContainer.d.ts.map +1 -0
  266. package/lib/typescript/src/specs/NativeStripeSdkModule.d.ts +93 -0
  267. package/lib/typescript/src/specs/NativeStripeSdkModule.d.ts.map +1 -0
  268. package/lib/typescript/src/specs/utils.d.ts +20 -0
  269. package/lib/typescript/src/specs/utils.d.ts.map +1 -0
  270. package/lib/typescript/src/types/CustomerSheet.d.ts +1 -5
  271. package/lib/typescript/src/types/CustomerSheet.d.ts.map +1 -1
  272. package/lib/typescript/src/types/EmbeddedPaymentElement.d.ts +161 -0
  273. package/lib/typescript/src/types/EmbeddedPaymentElement.d.ts.map +1 -0
  274. package/lib/typescript/src/types/PaymentSheet.d.ts +97 -4
  275. package/lib/typescript/src/types/PaymentSheet.d.ts.map +1 -1
  276. package/lib/typescript/src/types/components/CardFieldInput.d.ts +3 -2
  277. package/lib/typescript/src/types/components/CardFieldInput.d.ts.map +1 -1
  278. package/lib/typescript/src/types/components/CardFormView.d.ts +3 -1
  279. package/lib/typescript/src/types/components/CardFormView.d.ts.map +1 -1
  280. package/package.json +22 -2
  281. package/src/components/AddToWalletButton.tsx +2 -5
  282. package/src/components/AddressSheet.tsx +5 -16
  283. package/src/components/AuBECSDebitForm.tsx +3 -12
  284. package/src/components/CardField.tsx +20 -30
  285. package/src/components/CardForm.tsx +14 -29
  286. package/src/components/CustomerSheet.tsx +23 -25
  287. package/src/components/PlatformPayButton.tsx +6 -6
  288. package/src/components/StripeContainer.tsx +5 -12
  289. package/src/components/StripeProvider.tsx +1 -1
  290. package/src/events.ts +49 -0
  291. package/src/functions.ts +13 -24
  292. package/src/hooks/useFinancialConnectionsSheet.tsx +2 -2
  293. package/src/hooks/useStripe.tsx +2 -2
  294. package/src/index.tsx +3 -0
  295. package/src/specs/NativeAddToWalletButton.ts +40 -0
  296. package/src/specs/NativeAddressSheet.ts +50 -0
  297. package/src/specs/NativeApplePayButton.ts +40 -0
  298. package/src/specs/NativeAuBECSDebitForm.ts +24 -0
  299. package/src/specs/NativeCardField.ts +51 -0
  300. package/src/specs/NativeCardForm.ts +43 -0
  301. package/src/specs/NativeEmbeddedPaymentElement.ts +28 -0
  302. package/src/specs/NativeGooglePayButton.ts +20 -0
  303. package/src/specs/NativeStripeContainer.ts +12 -0
  304. package/src/specs/NativeStripeSdkModule.ts +219 -0
  305. package/src/specs/utils.ts +22 -0
  306. package/src/types/CustomerSheet.ts +1 -5
  307. package/src/types/EmbeddedPaymentElement.tsx +467 -0
  308. package/src/types/PaymentSheet.ts +114 -4
  309. package/src/types/components/CardFieldInput.ts +1 -2
  310. package/src/types/components/CardFormView.ts +1 -1
  311. package/stripe-react-native.podspec +27 -2
  312. package/android/src/main/java/com/reactnativestripesdk/CardChangedEvent.kt +0 -54
  313. package/ios/StripeSdk.m +0 -244
  314. package/lib/commonjs/NativeStripeSdk.js +0 -2
  315. package/lib/commonjs/NativeStripeSdk.js.map +0 -1
  316. package/lib/commonjs/components/ApplePayButtonNative.js +0 -2
  317. package/lib/commonjs/components/ApplePayButtonNative.js.map +0 -1
  318. package/lib/commonjs/components/GooglePayButtonNative.js +0 -2
  319. package/lib/commonjs/components/GooglePayButtonNative.js.map +0 -1
  320. package/lib/module/NativeStripeSdk.js +0 -2
  321. package/lib/module/NativeStripeSdk.js.map +0 -1
  322. package/lib/module/components/ApplePayButtonNative.js +0 -2
  323. package/lib/module/components/ApplePayButtonNative.js.map +0 -1
  324. package/lib/module/components/GooglePayButtonNative.js +0 -2
  325. package/lib/module/components/GooglePayButtonNative.js.map +0 -1
  326. package/lib/typescript/src/NativeStripeSdk.d.ts +0 -58
  327. package/lib/typescript/src/NativeStripeSdk.d.ts.map +0 -1
  328. package/lib/typescript/src/components/ApplePayButtonNative.d.ts +0 -4
  329. package/lib/typescript/src/components/ApplePayButtonNative.d.ts.map +0 -1
  330. package/lib/typescript/src/components/GooglePayButtonNative.d.ts +0 -4
  331. package/lib/typescript/src/components/GooglePayButtonNative.d.ts.map +0 -1
  332. package/src/NativeStripeSdk.tsx +0 -159
  333. package/src/components/ApplePayButtonNative.tsx +0 -5
  334. package/src/components/GooglePayButtonNative.tsx +0 -7
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectMigrations">
4
+ <option name="MigrateToGradleLocalJavaHome">
5
+ <set>
6
+ <option value="$PROJECT_DIR$" />
7
+ </set>
8
+ </option>
9
+ </component>
10
+ </project>
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ExternalStorageConfigurationManager" enabled="true" />
4
+ <component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="jbr-21" project-jdk-type="JavaSDK">
5
+ <output url="file://$PROJECT_DIR$/build/classes" />
6
+ </component>
7
+ <component name="ProjectType">
8
+ <option name="id" value="Android" />
9
+ </component>
10
+ </project>
@@ -0,0 +1,17 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="RunConfigurationProducerService">
4
+ <option name="ignoredProducers">
5
+ <set>
6
+ <option value="com.intellij.execution.junit.AbstractAllInDirectoryConfigurationProducer" />
7
+ <option value="com.intellij.execution.junit.AllInPackageConfigurationProducer" />
8
+ <option value="com.intellij.execution.junit.PatternConfigurationProducer" />
9
+ <option value="com.intellij.execution.junit.TestInClassConfigurationProducer" />
10
+ <option value="com.intellij.execution.junit.UniqueIdConfigurationProducer" />
11
+ <option value="com.intellij.execution.junit.testDiscovery.JUnitTestDiscoveryConfigurationProducer" />
12
+ <option value="org.jetbrains.kotlin.idea.junit.KotlinJUnitRunConfigurationProducer" />
13
+ <option value="org.jetbrains.kotlin.idea.junit.KotlinPatternConfigurationProducer" />
14
+ </set>
15
+ </option>
16
+ </component>
17
+ </project>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
5
+ </component>
6
+ </project>
@@ -1,6 +1,10 @@
1
1
  buildscript {
2
2
  // Buildscript is evaluated before everything else so we can't use getExtOrDefault
3
- def kotlin_version = rootProject.ext.has('kotlinVersion') ? rootProject.ext.get('kotlinVersion') : project.properties['StripeSdk_kotlinVersion']
3
+ def kotlin_version = rootProject.ext.has('kotlinVersion')
4
+ ? rootProject.ext.get('kotlinVersion')
5
+ : project.properties['StripeSdk_kotlinVersion']
6
+
7
+ def kotlinMajor = kotlin_version.tokenize('\\.')[0].toInteger()
4
8
 
5
9
  repositories {
6
10
  google()
@@ -12,19 +16,18 @@ buildscript {
12
16
  // noinspection DifferentKotlinGradleVersion
13
17
  classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
14
18
  classpath 'com.diffplug.spotless:spotless-plugin-gradle:6.25.0'
19
+ // only use this old compose-compiler plugin when Kotlin >= 2.0
20
+ if (kotlinMajor >= 2) {
21
+ classpath "org.jetbrains.kotlin:compose-compiler-gradle-plugin:$kotlin_version"
22
+ }
15
23
  }
16
24
  }
17
25
 
18
26
  if (project == rootProject) {
19
- apply from: 'spotless.gradle'
20
- return
27
+ apply from: 'spotless.gradle'
28
+ return
21
29
  }
22
30
 
23
- apply plugin: 'com.android.library'
24
- apply plugin: 'kotlin-android'
25
- apply plugin: 'kotlin-parcelize'
26
- //apply plugin: 'kotlin-android-extensions'
27
-
28
31
  def getExtOrDefault(name) {
29
32
  return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties['StripeSdk_' + name]
30
33
  }
@@ -33,8 +36,59 @@ def getExtOrIntegerDefault(name) {
33
36
  return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties['StripeSdk_' + name]).toInteger()
34
37
  }
35
38
 
39
+ def isNewArchitectureEnabled() {
40
+ // To opt-in for the New Architecture, you can either:
41
+ // - Set `newArchEnabled` to true inside the `gradle.properties` file
42
+ // - Invoke gradle with `-newArchEnabled=true`
43
+ // - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true`
44
+ return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
45
+ }
46
+
47
+ def reactNativeArchitectures() {
48
+ def value = project.getProperties().get("reactNativeArchitectures")
49
+ return value ? value.split(",") : [
50
+ "armeabi-v7a",
51
+ "x86",
52
+ "x86_64",
53
+ "arm64-v8a"
54
+ ]
55
+ }
56
+
57
+ def kotlin_version = rootProject.ext.has('kotlinVersion')
58
+ ? rootProject.ext.get('kotlinVersion')
59
+ : project.properties['StripeSdk_kotlinVersion']
60
+ def kotlinMajor = kotlin_version.tokenize('\\.')[0].toInteger()
61
+
62
+ apply plugin: 'com.android.library'
63
+ apply plugin: 'kotlin-android'
64
+ apply plugin: 'kotlin-parcelize'
65
+ // Only apply the compose plugin if we have the old compose-compiler on the classpath
66
+ if (kotlinMajor >= 2) {
67
+ apply plugin: 'org.jetbrains.kotlin.plugin.compose'
68
+ }
69
+ //apply plugin: 'kotlin-android-extensions'
70
+
71
+ if (isNewArchitectureEnabled()) {
72
+ apply plugin: 'com.facebook.react'
73
+ }
74
+
36
75
  android {
76
+ namespace "com.reactnativestripesdk"
77
+ buildFeatures {
78
+ buildConfig true
79
+ }
80
+
37
81
  compileSdkVersion getExtOrIntegerDefault('compileSdkVersion')
82
+
83
+ // Used to override the NDK path/version on internal CI or by allowing
84
+ // users to customize the NDK path/version from their root project (e.g. for M1 support)
85
+ if (rootProject.hasProperty("ndkPath")) {
86
+ ndkPath rootProject.ext.ndkPath
87
+ }
88
+ if (rootProject.hasProperty("ndkVersion")) {
89
+ ndkVersion rootProject.ext.ndkVersion
90
+ }
91
+
38
92
  defaultConfig {
39
93
  minSdkVersion getExtOrIntegerDefault('minSdkVersion')
40
94
  targetSdkVersion getExtOrIntegerDefault('targetSdkVersion')
@@ -43,6 +97,11 @@ android {
43
97
  vectorDrawables.useSupportLibrary = true
44
98
  testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
45
99
  consumerProguardFiles 'proguard-rules.txt'
100
+ buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
101
+
102
+ ndk {
103
+ abiFilters(*reactNativeArchitectures())
104
+ }
46
105
  }
47
106
 
48
107
  buildTypes {
@@ -50,9 +109,11 @@ android {
50
109
  minifyEnabled false
51
110
  }
52
111
  }
112
+
53
113
  lintOptions {
54
114
  disable 'GradleCompatible'
55
115
  }
116
+
56
117
  compileOptions {
57
118
  sourceCompatibility JavaVersion.VERSION_1_8
58
119
  targetCompatibility JavaVersion.VERSION_1_8
@@ -60,6 +121,15 @@ android {
60
121
 
61
122
  buildFeatures {
62
123
  viewBinding true
124
+ compose true
125
+ }
126
+
127
+ sourceSets.main {
128
+ java {
129
+ if (!isNewArchitectureEnabled()) {
130
+ srcDirs += ["src/oldarch/java"]
131
+ }
132
+ }
63
133
  }
64
134
  }
65
135
 
@@ -75,8 +145,8 @@ repositories {
75
145
  defaultDir = rootProject.ext.get('reactNativeAndroidRoot')
76
146
  } else {
77
147
  defaultDir = new File(
78
- projectDir,
79
- '/../../../node_modules/react-native/android'
148
+ projectDir,
149
+ '/../../../node_modules/react-native/android'
80
150
  )
81
151
  }
82
152
 
@@ -96,13 +166,13 @@ repositories {
96
166
  parentDir = parentDir.parentFile
97
167
 
98
168
  def androidSourcesDir = new File(
99
- parentDir,
100
- 'node_modules/react-native'
169
+ parentDir,
170
+ 'node_modules/react-native'
101
171
  )
102
172
 
103
173
  def androidPrebuiltBinaryDir = new File(
104
- parentDir,
105
- 'node_modules/react-native/android'
174
+ parentDir,
175
+ 'node_modules/react-native/android'
106
176
  )
107
177
 
108
178
  if (androidPrebuiltBinaryDir.exists()) {
@@ -127,13 +197,12 @@ repositories {
127
197
 
128
198
  if (!found) {
129
199
  throw new GradleException(
130
- "${project.name}: unable to locate React Native android sources. " +
131
- "Ensure you have you installed React Native as a dependency in your project and try again."
200
+ "${project.name}: unable to locate React Native android sources. " +
201
+ "Ensure you have you installed React Native as a dependency in your project and try again."
132
202
  )
133
203
  }
134
204
  }
135
205
 
136
- def kotlin_version = getExtOrDefault('kotlinVersion')
137
206
  def stripe_version = getExtOrDefault('stripeVersion')
138
207
 
139
208
  dependencies {
@@ -145,7 +214,7 @@ dependencies {
145
214
  implementation("com.stripe:stripe-android:$stripe_version") {
146
215
  exclude group: 'androidx.emoji2', module: 'emoji2'
147
216
  }
148
- implementation ("com.stripe:financial-connections:$stripe_version") {
217
+ implementation("com.stripe:financial-connections:$stripe_version") {
149
218
  exclude group: 'androidx.emoji2', module: 'emoji2'
150
219
  }
151
220
  implementation('androidx.emoji2:emoji2:1.3.0').force // Avoid using 1.4.0 since that requires targetSdkVersion 34
@@ -164,4 +233,7 @@ dependencies {
164
233
  androidTestImplementation "androidx.test:core:1.4.0"
165
234
  androidTestImplementation 'androidx.test:runner:1.1.0'
166
235
  androidTestImplementation "org.mockito:mockito-core:3.+"
236
+
237
+ implementation "androidx.compose.ui:ui:1.7.8"
238
+ implementation "androidx.compose.foundation:foundation-layout:1.7.8"
167
239
  }
@@ -3,4 +3,4 @@ StripeSdk_compileSdkVersion=30
3
3
  StripeSdk_targetSdkVersion=28
4
4
  StripeSdk_minSdkVersion=21
5
5
  # Keep StripeSdk_stripeVersion in sync with https://github.com/stripe/stripe-identity-react-native/blob/main/android/gradle.properties
6
- StripeSdk_stripeVersion=21.10.+
6
+ StripeSdk_stripeVersion=21.12.+
@@ -0,0 +1,8 @@
1
+ ## This file must *NOT* be checked into Version Control Systems,
2
+ # as it contains information specific to your local configuration.
3
+ #
4
+ # Location of the SDK. This is only used by Gradle.
5
+ # For customization when using a Version Control System, please read the
6
+ # header note.
7
+ #Tue Sep 24 20:02:13 MDT 2024
8
+ sdk.dir=/Users/porter/Library/Android/sdk
@@ -1,15 +1,24 @@
1
1
  package com.reactnativestripesdk
2
2
 
3
- import com.facebook.react.bridge.ReadableMap
3
+ import com.facebook.react.bridge.Dynamic
4
4
  import com.facebook.react.module.annotations.ReactModule
5
5
  import com.facebook.react.uimanager.SimpleViewManager
6
6
  import com.facebook.react.uimanager.ThemedReactContext
7
7
  import com.facebook.react.uimanager.annotations.ReactProp
8
+ import com.facebook.react.viewmanagers.AuBECSDebitFormManagerDelegate
9
+ import com.facebook.react.viewmanagers.AuBECSDebitFormManagerInterface
10
+ import com.reactnativestripesdk.utils.asMapOrNull
8
11
 
9
12
  @ReactModule(name = AuBECSDebitFormViewManager.REACT_CLASS)
10
- class AuBECSDebitFormViewManager : SimpleViewManager<AuBECSDebitFormView>() {
13
+ class AuBECSDebitFormViewManager :
14
+ SimpleViewManager<AuBECSDebitFormView>(),
15
+ AuBECSDebitFormManagerInterface<AuBECSDebitFormView> {
16
+ private val delegate = AuBECSDebitFormManagerDelegate(this)
17
+
11
18
  override fun getName() = REACT_CLASS
12
19
 
20
+ override fun getDelegate() = delegate
21
+
13
22
  override fun getExportedCustomDirectEventTypeConstants(): MutableMap<String, Any> =
14
23
  mutableMapOf(
15
24
  FormCompleteEvent.EVENT_NAME to
@@ -17,7 +26,7 @@ class AuBECSDebitFormViewManager : SimpleViewManager<AuBECSDebitFormView>() {
17
26
  )
18
27
 
19
28
  @ReactProp(name = "companyName")
20
- fun setCompanyName(
29
+ override fun setCompanyName(
21
30
  view: AuBECSDebitFormView,
22
31
  name: String?,
23
32
  ) {
@@ -25,11 +34,11 @@ class AuBECSDebitFormViewManager : SimpleViewManager<AuBECSDebitFormView>() {
25
34
  }
26
35
 
27
36
  @ReactProp(name = "formStyle")
28
- fun setFormStyle(
37
+ override fun setFormStyle(
29
38
  view: AuBECSDebitFormView,
30
- style: ReadableMap,
39
+ style: Dynamic,
31
40
  ) {
32
- view.setFormStyle(style)
41
+ view.setFormStyle(style.asMapOrNull())
33
42
  }
34
43
 
35
44
  override fun createViewInstance(reactContext: ThemedReactContext): AuBECSDebitFormView = AuBECSDebitFormView(reactContext)
@@ -0,0 +1,56 @@
1
+ package com.reactnativestripesdk
2
+
3
+ import com.facebook.react.bridge.Arguments
4
+ import com.facebook.react.bridge.WritableMap
5
+ import com.facebook.react.uimanager.events.Event
6
+
7
+ internal class CardChangeEvent(
8
+ surfaceId: Int,
9
+ viewTag: Int,
10
+ private val cardDetails: MutableMap<String, Any?>,
11
+ private val postalCodeEnabled: Boolean,
12
+ private val complete: Boolean,
13
+ private val dangerouslyGetFullCardDetails: Boolean,
14
+ ) : Event<CardChangeEvent>(surfaceId, viewTag) {
15
+ override fun getEventName(): String = EVENT_NAME
16
+
17
+ override fun getEventData(): WritableMap? {
18
+ val cardData = Arguments.createMap()
19
+ cardData.putString("brand", cardDetails["brand"]?.toString())
20
+ cardData.putString("last4", cardDetails["last4"]?.toString())
21
+
22
+ (cardDetails["expiryMonth"] as Int?)?.let {
23
+ cardData.putInt("expiryMonth", it)
24
+ } ?: run {
25
+ cardData.putNull("expiryMonth")
26
+ }
27
+
28
+ (cardDetails["expiryYear"] as Int?)?.let {
29
+ cardData.putInt("expiryYear", it)
30
+ } ?: run {
31
+ cardData.putNull("expiryYear")
32
+ }
33
+
34
+ cardData.putBoolean("complete", complete)
35
+ cardData.putString("validNumber", cardDetails["validNumber"]?.toString())
36
+ cardData.putString("validCVC", cardDetails["validCVC"]?.toString())
37
+ cardData.putString("validExpiryDate", cardDetails["validExpiryDate"]?.toString())
38
+
39
+ if (postalCodeEnabled) {
40
+ cardData.putString("postalCode", cardDetails["postalCode"]?.toString())
41
+ }
42
+
43
+ if (dangerouslyGetFullCardDetails) {
44
+ cardData.putString("number", cardDetails["number"]?.toString()?.replace(" ", ""))
45
+ cardData.putString("cvc", cardDetails["cvc"]?.toString())
46
+ }
47
+
48
+ return Arguments.createMap().apply {
49
+ putMap("card", cardData)
50
+ }
51
+ }
52
+
53
+ companion object {
54
+ const val EVENT_NAME = "topCardChange"
55
+ }
56
+ }
@@ -99,10 +99,10 @@ class CardFieldView(
99
99
  private fun onChangeFocus() {
100
100
  UIManagerHelper
101
101
  .getEventDispatcherForReactTag(context, id)
102
- ?.dispatchEvent(CardFocusEvent(context.surfaceId, id, currentFocusedField))
102
+ ?.dispatchEvent(CardFocusChangeEvent(context.surfaceId, id, currentFocusedField))
103
103
  }
104
104
 
105
- fun setCardStyle(value: ReadableMap) {
105
+ fun setCardStyle(value: ReadableMap?) {
106
106
  val borderWidth = getIntOrNull(value, "borderWidth")
107
107
  val backgroundColor = getValOr(value, "backgroundColor", null)
108
108
  val borderColor = getValOr(value, "borderColor", null)
@@ -206,7 +206,7 @@ class CardFieldView(
206
206
  }
207
207
  }
208
208
 
209
- fun setPlaceHolders(value: ReadableMap) {
209
+ fun setPlaceHolders(value: ReadableMap?) {
210
210
  val numberPlaceholder = getValOr(value, "number", null)
211
211
  val expirationPlaceholder = getValOr(value, "expiration", null)
212
212
  val cvcPlaceholder = getValOr(value, "cvc", null)
@@ -295,7 +295,7 @@ class CardFieldView(
295
295
  UIManagerHelper
296
296
  .getEventDispatcherForReactTag(context, id)
297
297
  ?.dispatchEvent(
298
- CardChangedEvent(
298
+ CardChangeEvent(
299
299
  context.surfaceId,
300
300
  id,
301
301
  cardDetails,
@@ -1,70 +1,86 @@
1
1
  package com.reactnativestripesdk
2
2
 
3
+ import com.facebook.react.bridge.Dynamic
3
4
  import com.facebook.react.bridge.ReadableArray
4
- import com.facebook.react.bridge.ReadableMap
5
5
  import com.facebook.react.module.annotations.ReactModule
6
6
  import com.facebook.react.uimanager.SimpleViewManager
7
7
  import com.facebook.react.uimanager.ThemedReactContext
8
8
  import com.facebook.react.uimanager.annotations.ReactProp
9
+ import com.facebook.react.viewmanagers.CardFieldManagerDelegate
10
+ import com.facebook.react.viewmanagers.CardFieldManagerInterface
11
+ import com.reactnativestripesdk.utils.asMapOrNull
9
12
 
10
13
  @ReactModule(name = CardFieldViewManager.REACT_CLASS)
11
- class CardFieldViewManager : SimpleViewManager<CardFieldView>() {
14
+ class CardFieldViewManager :
15
+ SimpleViewManager<CardFieldView>(),
16
+ CardFieldManagerInterface<CardFieldView> {
17
+ private val delegate = CardFieldManagerDelegate(this)
18
+ private var reactContextRef: ThemedReactContext? = null
19
+
12
20
  override fun getName() = REACT_CLASS
13
21
 
14
- private var reactContextRef: ThemedReactContext? = null
22
+ override fun getDelegate() = delegate
15
23
 
16
24
  override fun getExportedCustomDirectEventTypeConstants() =
17
25
  mutableMapOf(
18
- CardFocusEvent.EVENT_NAME to mutableMapOf("registrationName" to "onFocusChange"),
19
- CardChangedEvent.EVENT_NAME to mutableMapOf("registrationName" to "onCardChange"),
26
+ CardFocusChangeEvent.EVENT_NAME to mutableMapOf("registrationName" to "onFocusChange"),
27
+ CardChangeEvent.EVENT_NAME to mutableMapOf("registrationName" to "onCardChange"),
20
28
  )
21
29
 
22
- override fun receiveCommand(
23
- root: CardFieldView,
24
- commandId: String?,
25
- args: ReadableArray?,
26
- ) {
27
- when (commandId) {
28
- "focus" -> root.requestFocusFromJS()
29
- "blur" -> root.requestBlurFromJS()
30
- "clear" -> root.requestClearFromJS()
31
- }
30
+ override fun createViewInstance(reactContext: ThemedReactContext): CardFieldView {
31
+ val stripeSdkModule: StripeSdkModule? =
32
+ reactContext.getNativeModule(StripeSdkModule::class.java)
33
+ val view = CardFieldView(reactContext)
34
+
35
+ reactContextRef = reactContext
36
+
37
+ stripeSdkModule?.cardFieldView = view
38
+ return view
39
+ }
40
+
41
+ override fun onDropViewInstance(view: CardFieldView) {
42
+ super.onDropViewInstance(view)
43
+
44
+ val stripeSdkModule: StripeSdkModule? =
45
+ reactContextRef?.getNativeModule(StripeSdkModule::class.java)
46
+ stripeSdkModule?.cardFieldView = null
47
+ reactContextRef = null
32
48
  }
33
49
 
34
50
  @ReactProp(name = "dangerouslyGetFullCardDetails")
35
- fun setDangerouslyGetFullCardDetails(
51
+ override fun setDangerouslyGetFullCardDetails(
36
52
  view: CardFieldView,
37
- dangerouslyGetFullCardDetails: Boolean = false,
53
+ dangerouslyGetFullCardDetails: Boolean,
38
54
  ) {
39
55
  view.setDangerouslyGetFullCardDetails(dangerouslyGetFullCardDetails)
40
56
  }
41
57
 
42
58
  @ReactProp(name = "postalCodeEnabled")
43
- fun setPostalCodeEnabled(
59
+ override fun setPostalCodeEnabled(
44
60
  view: CardFieldView,
45
- postalCodeEnabled: Boolean = true,
61
+ postalCodeEnabled: Boolean,
46
62
  ) {
47
63
  view.setPostalCodeEnabled(postalCodeEnabled)
48
64
  }
49
65
 
50
66
  @ReactProp(name = "autofocus")
51
- fun setAutofocus(
67
+ override fun setAutofocus(
52
68
  view: CardFieldView,
53
- autofocus: Boolean = false,
69
+ autofocus: Boolean,
54
70
  ) {
55
71
  view.setAutofocus(autofocus)
56
72
  }
57
73
 
58
74
  @ReactProp(name = "cardStyle")
59
- fun setCardStyle(
75
+ override fun setCardStyle(
60
76
  view: CardFieldView,
61
- cardStyle: ReadableMap,
77
+ cardStyle: Dynamic,
62
78
  ) {
63
- view.setCardStyle(cardStyle)
79
+ view.setCardStyle(cardStyle.asMapOrNull())
64
80
  }
65
81
 
66
82
  @ReactProp(name = "countryCode")
67
- fun setCountryCode(
83
+ override fun setCountryCode(
68
84
  view: CardFieldView,
69
85
  countryCode: String?,
70
86
  ) {
@@ -72,7 +88,7 @@ class CardFieldViewManager : SimpleViewManager<CardFieldView>() {
72
88
  }
73
89
 
74
90
  @ReactProp(name = "onBehalfOf")
75
- fun setOnBehalfOf(
91
+ override fun setOnBehalfOf(
76
92
  view: CardFieldView,
77
93
  onBehalfOf: String?,
78
94
  ) {
@@ -80,15 +96,15 @@ class CardFieldViewManager : SimpleViewManager<CardFieldView>() {
80
96
  }
81
97
 
82
98
  @ReactProp(name = "placeholders")
83
- fun setPlaceHolders(
99
+ override fun setPlaceholders(
84
100
  view: CardFieldView,
85
- placeholders: ReadableMap,
101
+ placeholders: Dynamic,
86
102
  ) {
87
- view.setPlaceHolders(placeholders)
103
+ view.setPlaceHolders(placeholders.asMapOrNull())
88
104
  }
89
105
 
90
106
  @ReactProp(name = "disabled")
91
- fun setDisabled(
107
+ override fun setDisabled(
92
108
  view: CardFieldView,
93
109
  isDisabled: Boolean,
94
110
  ) {
@@ -96,7 +112,7 @@ class CardFieldViewManager : SimpleViewManager<CardFieldView>() {
96
112
  }
97
113
 
98
114
  @ReactProp(name = "preferredNetworks")
99
- fun setPreferredNetworks(
115
+ override fun setPreferredNetworks(
100
116
  view: CardFieldView,
101
117
  preferredNetworks: ReadableArray?,
102
118
  ) {
@@ -104,24 +120,18 @@ class CardFieldViewManager : SimpleViewManager<CardFieldView>() {
104
120
  view.setPreferredNetworks(networks)
105
121
  }
106
122
 
107
- override fun createViewInstance(reactContext: ThemedReactContext): CardFieldView {
108
- val stripeSdkModule: StripeSdkModule? =
109
- reactContext.getNativeModule(StripeSdkModule::class.java)
110
- val view = CardFieldView(reactContext)
111
-
112
- reactContextRef = reactContext
123
+ // Native commands
113
124
 
114
- stripeSdkModule?.cardFieldView = view
115
- return view
125
+ override fun blur(view: CardFieldView) {
126
+ view.requestBlurFromJS()
116
127
  }
117
128
 
118
- override fun onDropViewInstance(view: CardFieldView) {
119
- super.onDropViewInstance(view)
129
+ override fun focus(view: CardFieldView) {
130
+ view.requestFocusFromJS()
131
+ }
120
132
 
121
- val stripeSdkModule: StripeSdkModule? =
122
- reactContextRef?.getNativeModule(StripeSdkModule::class.java)
123
- stripeSdkModule?.cardFieldView = null
124
- reactContextRef = null
133
+ override fun clear(view: CardFieldView) {
134
+ view.requestClearFromJS()
125
135
  }
126
136
 
127
137
  companion object {
@@ -4,11 +4,11 @@ import com.facebook.react.bridge.Arguments
4
4
  import com.facebook.react.bridge.WritableMap
5
5
  import com.facebook.react.uimanager.events.Event
6
6
 
7
- internal class CardFocusEvent(
7
+ internal class CardFocusChangeEvent(
8
8
  surfaceId: Int,
9
9
  viewTag: Int,
10
10
  private val focusField: String?,
11
- ) : Event<CardFocusEvent>(surfaceId, viewTag) {
11
+ ) : Event<CardFocusChangeEvent>(surfaceId, viewTag) {
12
12
  override fun getEventName() = EVENT_NAME
13
13
 
14
14
  override fun getEventData(): WritableMap? {
@@ -10,29 +10,30 @@ internal class CardFormCompleteEvent(
10
10
  private val cardDetails: MutableMap<String, Any>?,
11
11
  private val complete: Boolean,
12
12
  private val dangerouslyGetFullCardDetails: Boolean,
13
- ) : Event<CardChangedEvent>(surfaceId, viewTag) {
13
+ ) : Event<CardChangeEvent>(surfaceId, viewTag) {
14
14
  override fun getEventName() = EVENT_NAME
15
15
 
16
16
  override fun getEventData(): WritableMap? {
17
- val eventData = Arguments.createMap()
17
+ val cardData = Arguments.createMap()
18
18
 
19
- if (cardDetails == null) {
20
- return eventData
21
- }
22
- eventData.putString("brand", cardDetails["brand"]?.toString())
23
- eventData.putString("last4", cardDetails["last4"]?.toString())
24
- eventData.putString("country", cardDetails["country"]?.toString())
25
- eventData.putInt("expiryMonth", cardDetails["expiryMonth"] as Int)
26
- eventData.putInt("expiryYear", cardDetails["expiryYear"] as Int)
27
- eventData.putBoolean("complete", complete)
28
- eventData.putString("postalCode", cardDetails["postalCode"]?.toString())
19
+ if (cardDetails != null) {
20
+ cardData.putString("brand", cardDetails["brand"]?.toString())
21
+ cardData.putString("last4", cardDetails["last4"]?.toString())
22
+ cardData.putString("country", cardDetails["country"]?.toString())
23
+ cardData.putInt("expiryMonth", cardDetails["expiryMonth"] as Int)
24
+ cardData.putInt("expiryYear", cardDetails["expiryYear"] as Int)
25
+ cardData.putBoolean("complete", complete)
26
+ cardData.putString("postalCode", cardDetails["postalCode"]?.toString())
29
27
 
30
- if (dangerouslyGetFullCardDetails) {
31
- eventData.putString("number", cardDetails["number"]?.toString()?.replace(" ", ""))
32
- eventData.putString("cvc", cardDetails["cvc"]?.toString())
28
+ if (dangerouslyGetFullCardDetails) {
29
+ cardData.putString("number", cardDetails["number"]?.toString()?.replace(" ", ""))
30
+ cardData.putString("cvc", cardDetails["cvc"]?.toString())
31
+ }
33
32
  }
34
33
 
35
- return eventData
34
+ return Arguments.createMap().apply {
35
+ putMap("card", cardData)
36
+ }
36
37
  }
37
38
 
38
39
  companion object {