@stripe/stripe-react-native 0.57.0 → 0.57.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (294) hide show
  1. package/android/build.gradle +76 -118
  2. package/android/gradle.properties +1 -1
  3. package/android/settings.gradle +2 -0
  4. package/android/spotless.gradle +1 -1
  5. package/android/src/main/java/com/reactnativestripesdk/AuBECSDebitFormView.kt +20 -17
  6. package/android/src/main/java/com/reactnativestripesdk/CardFieldView.kt +13 -11
  7. package/android/src/main/java/com/reactnativestripesdk/CardFormView.kt +17 -21
  8. package/android/src/main/java/com/reactnativestripesdk/CollectBankAccountLauncherManager.kt +2 -0
  9. package/android/src/main/java/com/reactnativestripesdk/CustomPaymentMethodActivity.kt +2 -0
  10. package/android/src/main/java/com/reactnativestripesdk/EmbeddedPaymentElementView.kt +4 -11
  11. package/android/src/main/java/com/reactnativestripesdk/EmbeddedPaymentElementViewManager.kt +46 -119
  12. package/android/src/main/java/com/reactnativestripesdk/EventEmitterCompat.kt +0 -8
  13. package/android/src/main/java/com/reactnativestripesdk/FakeOnrampSdkModule.kt +154 -0
  14. package/android/src/main/java/com/reactnativestripesdk/FinancialConnectionsSheetManager.kt +13 -15
  15. package/android/src/main/java/com/reactnativestripesdk/GooglePayButtonView.kt +1 -1
  16. package/android/src/main/java/com/reactnativestripesdk/GooglePayLauncherManager.kt +1 -1
  17. package/android/src/main/java/com/reactnativestripesdk/GooglePayRequestHelper.kt +7 -5
  18. package/android/src/main/java/com/reactnativestripesdk/NavigationBarManager.kt +31 -0
  19. package/android/src/main/java/com/reactnativestripesdk/NavigationBarView.kt +120 -0
  20. package/android/src/main/java/com/reactnativestripesdk/PaymentElementConfig.kt +228 -0
  21. package/android/src/main/java/com/reactnativestripesdk/PaymentLauncherManager.kt +1 -0
  22. package/android/src/main/java/com/reactnativestripesdk/PaymentMethodCreateParamsFactory.kt +3 -0
  23. package/android/src/main/java/com/reactnativestripesdk/PaymentOptionDisplayDataMapper.kt +4 -6
  24. package/android/src/main/java/com/reactnativestripesdk/PaymentSheetAppearance.kt +73 -30
  25. package/android/src/main/java/com/reactnativestripesdk/PaymentSheetManager.kt +19 -245
  26. package/android/src/main/java/com/reactnativestripesdk/StripeAbstractComposeView.kt +53 -17
  27. package/android/src/main/java/com/reactnativestripesdk/StripeSdkModule.kt +52 -14
  28. package/android/src/main/java/com/reactnativestripesdk/StripeSdkPackage.kt +21 -2
  29. package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressSheetView.kt +4 -4
  30. package/android/src/main/java/com/reactnativestripesdk/addresssheet/AddressSheetViewManager.kt +2 -2
  31. package/android/src/main/java/com/reactnativestripesdk/customersheet/CustomerSheetManager.kt +15 -35
  32. package/android/src/main/java/com/reactnativestripesdk/customersheet/ReactNativeCustomerSessionProvider.kt +2 -1
  33. package/android/src/main/java/com/reactnativestripesdk/pushprovisioning/AddToWalletButtonManager.kt +5 -10
  34. package/android/src/main/java/com/reactnativestripesdk/pushprovisioning/AddToWalletButtonView.kt +90 -77
  35. package/android/src/main/java/com/reactnativestripesdk/pushprovisioning/TapAndPayProxy.kt +6 -4
  36. package/android/src/main/java/com/reactnativestripesdk/utils/Errors.kt +13 -3
  37. package/android/src/main/java/com/reactnativestripesdk/utils/Extensions.kt +41 -0
  38. package/android/src/main/java/com/reactnativestripesdk/utils/KeepJsAwakeTask.kt +1 -1
  39. package/android/src/main/java/com/reactnativestripesdk/utils/Mappers.kt +92 -44
  40. package/android/src/oldarch/java/com/reactnativestripesdk/NativeOnrampSdkModuleSpec.java +118 -0
  41. package/android/src/oldarch/java/com/reactnativestripesdk/NativeStripeSdkModuleSpec.java +4 -0
  42. package/android/src/onramp/java/com/reactnativestripesdk/OnrampSdkModule.kt +922 -0
  43. package/android/src/test/java/com/facebook/testutils/shadows/ShadowArguments.kt +29 -0
  44. package/android/src/test/java/com/reactnativestripesdk/EmbeddedPaymentElementViewManagerTest.kt +163 -0
  45. package/android/src/test/java/com/reactnativestripesdk/PaymentElementConfigTest.kt +976 -0
  46. package/android/src/test/java/com/reactnativestripesdk/PaymentSheetAppearanceTest.kt +801 -0
  47. package/android/src/test/java/com/reactnativestripesdk/PaymentSheetManagerTest.kt +523 -0
  48. package/android/src/test/java/com/reactnativestripesdk/addresssheet/AddressSheetViewTest.kt +551 -0
  49. package/android/src/test/java/com/reactnativestripesdk/mappers/MappersTest.kt +567 -0
  50. package/android/src/test/java/com/reactnativestripesdk/mappers/PaymentOptionDisplayDataMapperTest.kt +456 -0
  51. package/android/src/test/java/com/reactnativestripesdk/pushprovisioning/PushProvisioningProxyTest.kt +43 -0
  52. package/android/src/test/resources/robolectric.properties +2 -0
  53. package/ios/AddressSheet/AddressSheetUtils.swift +3 -3
  54. package/ios/AddressSheet/AddressSheetView.swift +25 -25
  55. package/ios/AddressSheet/AddressSheetViewManager.swift +2 -2
  56. package/ios/ApplePayButtonManager.swift +1 -1
  57. package/ios/ApplePayButtonView.swift +9 -10
  58. package/ios/ApplePayUtils.swift +51 -51
  59. package/ios/ApplePayViewController.swift +25 -29
  60. package/ios/AuBECSDebitFormManager.swift +1 -1
  61. package/ios/AuBECSDebitFormView.swift +13 -15
  62. package/ios/CardFieldManager.swift +4 -4
  63. package/ios/CardFieldView.swift +9 -9
  64. package/ios/CardFormManager.swift +3 -3
  65. package/ios/CardFormView.swift +28 -28
  66. package/ios/ConnectAccountOnboarding/ConnectAccountOnboardingView.swift +97 -0
  67. package/ios/ConnectAccountOnboarding/ConnectAccountOnboardingViewController.swift +133 -0
  68. package/ios/ConnectAccountOnboarding/ConnectAccountOnboardingViewManager.m +16 -0
  69. package/ios/ConnectAccountOnboarding/ConnectAccountOnboardingViewManager.swift +17 -0
  70. package/ios/CustomerSheet/CustomerSheetUtils.swift +15 -16
  71. package/ios/CustomerSheet/ReactNativeCustomerAdapter.swift +19 -19
  72. package/ios/EmbeddedPaymentElementView.swift +2 -2
  73. package/ios/Errors.swift +22 -23
  74. package/ios/FinancialConnections.swift +37 -37
  75. package/ios/Mappers.swift +210 -71
  76. package/ios/NavigationBarManager.m +13 -0
  77. package/ios/NavigationBarManager.swift +17 -0
  78. package/ios/NavigationBarView.swift +65 -0
  79. package/ios/NewArch/NavigationBarComponentView.h +10 -0
  80. package/ios/NewArch/NavigationBarComponentView.mm +86 -0
  81. package/ios/OldArch/StripeSdkEventEmitterCompat.h +1 -0
  82. package/ios/OldArch/StripeSdkEventEmitterCompat.m +7 -1
  83. package/ios/PaymentMethodFactory.swift +24 -24
  84. package/ios/PaymentOptionDisplayData+ReactNative.swift +4 -4
  85. package/ios/PaymentPassFinder.swift +9 -10
  86. package/ios/PaymentSheetAppearance.swift +137 -138
  87. package/ios/PushProvisioning/AddToWalletButtonManager.swift +2 -2
  88. package/ios/PushProvisioning/AddToWalletButtonView.swift +15 -17
  89. package/ios/PushProvisioning/PushProvisioningUtils.swift +11 -11
  90. package/ios/StripeContainerManager.swift +1 -1
  91. package/ios/StripeContainerView.swift +3 -3
  92. package/ios/StripeOnrampSdk.h +17 -0
  93. package/ios/StripeOnrampSdk.mm +158 -0
  94. package/ios/StripeSdk.mm +8 -0
  95. package/ios/StripeSdkEmitter.swift +4 -0
  96. package/ios/StripeSdkImpl+CustomerSheet.swift +30 -25
  97. package/ios/StripeSdkImpl+Embedded.swift +11 -9
  98. package/ios/StripeSdkImpl+PaymentSheet.swift +36 -34
  99. package/ios/StripeSdkImpl.swift +913 -185
  100. package/ios/UIColorExtension.swift +72 -0
  101. package/lib/commonjs/components/AddToWalletButton.js +1 -1
  102. package/lib/commonjs/components/AddressSheet.js +1 -1
  103. package/lib/commonjs/components/AuBECSDebitForm.js +1 -1
  104. package/lib/commonjs/components/CardField.js +1 -1
  105. package/lib/commonjs/components/CardField.js.map +1 -1
  106. package/lib/commonjs/components/CardForm.js +1 -1
  107. package/lib/commonjs/components/CardForm.js.map +1 -1
  108. package/lib/commonjs/components/PlatformPayButton.js +1 -1
  109. package/lib/commonjs/components/StripeContainer.js +1 -1
  110. package/lib/commonjs/components/StripeProvider.js +1 -1
  111. package/lib/commonjs/components/StripeProvider.js.map +1 -1
  112. package/lib/commonjs/connect/Components.js +2 -0
  113. package/lib/commonjs/connect/Components.js.map +1 -0
  114. package/lib/commonjs/connect/ConnectComponentsProvider.js +2 -0
  115. package/lib/commonjs/connect/ConnectComponentsProvider.js.map +1 -0
  116. package/lib/commonjs/connect/EmbeddedComponent.js +19 -0
  117. package/lib/commonjs/connect/EmbeddedComponent.js.map +1 -0
  118. package/lib/commonjs/connect/ModalCloseButton.js +2 -0
  119. package/lib/commonjs/connect/ModalCloseButton.js.map +1 -0
  120. package/lib/commonjs/connect/NavigationBar.js +2 -0
  121. package/lib/commonjs/connect/NavigationBar.js.map +1 -0
  122. package/lib/commonjs/connect/connectTypes.js +2 -0
  123. package/lib/commonjs/connect/connectTypes.js.map +1 -0
  124. package/lib/commonjs/events.js +1 -1
  125. package/lib/commonjs/events.js.map +1 -1
  126. package/lib/commonjs/helpers.js +1 -1
  127. package/lib/commonjs/helpers.js.map +1 -1
  128. package/lib/commonjs/hooks/useOnramp.js +2 -0
  129. package/lib/commonjs/hooks/useOnramp.js.map +1 -0
  130. package/lib/commonjs/index.js +1 -1
  131. package/lib/commonjs/index.js.map +1 -1
  132. package/lib/commonjs/plugin/withStripe.js +1 -1
  133. package/lib/commonjs/plugin/withStripe.js.map +1 -1
  134. package/lib/commonjs/specs/NativeAddToWalletButton.js +1 -1
  135. package/lib/commonjs/specs/NativeAddToWalletButton.js.map +1 -1
  136. package/lib/commonjs/specs/NativeAddressSheet.js +1 -1
  137. package/lib/commonjs/specs/NativeAddressSheet.js.map +1 -1
  138. package/lib/commonjs/specs/NativeApplePayButton.js +1 -1
  139. package/lib/commonjs/specs/NativeApplePayButton.js.map +1 -1
  140. package/lib/commonjs/specs/NativeAuBECSDebitForm.js +1 -1
  141. package/lib/commonjs/specs/NativeAuBECSDebitForm.js.map +1 -1
  142. package/lib/commonjs/specs/NativeCardField.js +1 -1
  143. package/lib/commonjs/specs/NativeCardField.js.map +1 -1
  144. package/lib/commonjs/specs/NativeCardForm.js +1 -1
  145. package/lib/commonjs/specs/NativeCardForm.js.map +1 -1
  146. package/lib/commonjs/specs/NativeConnectAccountOnboardingView.js +2 -0
  147. package/lib/commonjs/specs/NativeConnectAccountOnboardingView.js.map +1 -0
  148. package/lib/commonjs/specs/NativeEmbeddedPaymentElement.js +1 -1
  149. package/lib/commonjs/specs/NativeEmbeddedPaymentElement.js.map +1 -1
  150. package/lib/commonjs/specs/NativeGooglePayButton.js +1 -1
  151. package/lib/commonjs/specs/NativeGooglePayButton.js.map +1 -1
  152. package/lib/commonjs/specs/NativeNavigationBar.js +2 -0
  153. package/lib/commonjs/specs/NativeNavigationBar.js.map +1 -0
  154. package/lib/commonjs/specs/NativeOnrampSdkModule.js +2 -0
  155. package/lib/commonjs/specs/NativeOnrampSdkModule.js.map +1 -0
  156. package/lib/commonjs/specs/NativeStripeContainer.js +1 -1
  157. package/lib/commonjs/specs/NativeStripeContainer.js.map +1 -1
  158. package/lib/commonjs/specs/NativeStripeSdkModule.js.map +1 -1
  159. package/lib/commonjs/types/EmbeddedPaymentElement.js +1 -1
  160. package/lib/commonjs/types/EmbeddedPaymentElement.js.map +1 -1
  161. package/lib/commonjs/types/Errors.js +1 -1
  162. package/lib/commonjs/types/Errors.js.map +1 -1
  163. package/lib/commonjs/types/Onramp.js +2 -0
  164. package/lib/commonjs/types/Onramp.js.map +1 -0
  165. package/lib/commonjs/types/PaymentSheet.js.map +1 -1
  166. package/lib/commonjs/types/index.js +1 -1
  167. package/lib/commonjs/types/index.js.map +1 -1
  168. package/lib/module/components/AddToWalletButton.js +1 -1
  169. package/lib/module/components/AddressSheet.js +1 -1
  170. package/lib/module/components/AuBECSDebitForm.js +1 -1
  171. package/lib/module/components/CardField.js +1 -1
  172. package/lib/module/components/CardField.js.map +1 -1
  173. package/lib/module/components/CardForm.js +1 -1
  174. package/lib/module/components/CardForm.js.map +1 -1
  175. package/lib/module/components/PlatformPayButton.js +1 -1
  176. package/lib/module/components/StripeContainer.js +1 -1
  177. package/lib/module/components/StripeProvider.js +1 -1
  178. package/lib/module/components/StripeProvider.js.map +1 -1
  179. package/lib/module/connect/Components.js +2 -0
  180. package/lib/module/connect/Components.js.map +1 -0
  181. package/lib/module/connect/ConnectComponentsProvider.js +2 -0
  182. package/lib/module/connect/ConnectComponentsProvider.js.map +1 -0
  183. package/lib/module/connect/EmbeddedComponent.js +19 -0
  184. package/lib/module/connect/EmbeddedComponent.js.map +1 -0
  185. package/lib/module/connect/ModalCloseButton.js +2 -0
  186. package/lib/module/connect/ModalCloseButton.js.map +1 -0
  187. package/lib/module/connect/NavigationBar.js +2 -0
  188. package/lib/module/connect/NavigationBar.js.map +1 -0
  189. package/lib/module/connect/connectTypes.js +2 -0
  190. package/lib/module/connect/connectTypes.js.map +1 -0
  191. package/lib/module/events.js +1 -1
  192. package/lib/module/events.js.map +1 -1
  193. package/lib/module/helpers.js +1 -1
  194. package/lib/module/helpers.js.map +1 -1
  195. package/lib/module/hooks/useOnramp.js +2 -0
  196. package/lib/module/hooks/useOnramp.js.map +1 -0
  197. package/lib/module/index.js +1 -1
  198. package/lib/module/index.js.map +1 -1
  199. package/lib/module/plugin/withStripe.js +1 -1
  200. package/lib/module/plugin/withStripe.js.map +1 -1
  201. package/lib/module/specs/NativeAddToWalletButton.js +1 -1
  202. package/lib/module/specs/NativeAddToWalletButton.js.map +1 -1
  203. package/lib/module/specs/NativeAddressSheet.js +1 -1
  204. package/lib/module/specs/NativeAddressSheet.js.map +1 -1
  205. package/lib/module/specs/NativeApplePayButton.js +1 -1
  206. package/lib/module/specs/NativeApplePayButton.js.map +1 -1
  207. package/lib/module/specs/NativeAuBECSDebitForm.js +1 -1
  208. package/lib/module/specs/NativeAuBECSDebitForm.js.map +1 -1
  209. package/lib/module/specs/NativeCardField.js +1 -1
  210. package/lib/module/specs/NativeCardField.js.map +1 -1
  211. package/lib/module/specs/NativeCardForm.js +1 -1
  212. package/lib/module/specs/NativeCardForm.js.map +1 -1
  213. package/lib/module/specs/NativeConnectAccountOnboardingView.js +2 -0
  214. package/lib/module/specs/NativeConnectAccountOnboardingView.js.map +1 -0
  215. package/lib/module/specs/NativeEmbeddedPaymentElement.js +1 -1
  216. package/lib/module/specs/NativeEmbeddedPaymentElement.js.map +1 -1
  217. package/lib/module/specs/NativeGooglePayButton.js +1 -1
  218. package/lib/module/specs/NativeGooglePayButton.js.map +1 -1
  219. package/lib/module/specs/NativeNavigationBar.js +2 -0
  220. package/lib/module/specs/NativeNavigationBar.js.map +1 -0
  221. package/lib/module/specs/NativeOnrampSdkModule.js +2 -0
  222. package/lib/module/specs/NativeOnrampSdkModule.js.map +1 -0
  223. package/lib/module/specs/NativeStripeContainer.js +1 -1
  224. package/lib/module/specs/NativeStripeContainer.js.map +1 -1
  225. package/lib/module/specs/NativeStripeSdkModule.js.map +1 -1
  226. package/lib/module/types/EmbeddedPaymentElement.js +1 -1
  227. package/lib/module/types/EmbeddedPaymentElement.js.map +1 -1
  228. package/lib/module/types/Errors.js +1 -1
  229. package/lib/module/types/Errors.js.map +1 -1
  230. package/lib/module/types/Onramp.js +2 -0
  231. package/lib/module/types/Onramp.js.map +1 -0
  232. package/lib/module/types/PaymentSheet.js.map +1 -1
  233. package/lib/module/types/index.js +1 -1
  234. package/lib/module/types/index.js.map +1 -1
  235. package/lib/typescript/src/components/StripeProvider.d.ts.map +1 -1
  236. package/lib/typescript/src/connect/Components.d.ts +23 -0
  237. package/lib/typescript/src/connect/Components.d.ts.map +1 -0
  238. package/lib/typescript/src/connect/ConnectComponentsProvider.d.ts +22 -0
  239. package/lib/typescript/src/connect/ConnectComponentsProvider.d.ts.map +1 -0
  240. package/lib/typescript/src/connect/EmbeddedComponent.d.ts +18 -0
  241. package/lib/typescript/src/connect/EmbeddedComponent.d.ts.map +1 -0
  242. package/lib/typescript/src/connect/ModalCloseButton.d.ts +7 -0
  243. package/lib/typescript/src/connect/ModalCloseButton.d.ts.map +1 -0
  244. package/lib/typescript/src/connect/NavigationBar.d.ts +8 -0
  245. package/lib/typescript/src/connect/NavigationBar.d.ts.map +1 -0
  246. package/lib/typescript/src/connect/connectTypes.d.ts +464 -0
  247. package/lib/typescript/src/connect/connectTypes.d.ts.map +1 -0
  248. package/lib/typescript/src/events.d.ts +3 -0
  249. package/lib/typescript/src/events.d.ts.map +1 -1
  250. package/lib/typescript/src/functions.d.ts.map +1 -1
  251. package/lib/typescript/src/helpers.d.ts.map +1 -1
  252. package/lib/typescript/src/hooks/useOnramp.d.ts +158 -0
  253. package/lib/typescript/src/hooks/useOnramp.d.ts.map +1 -0
  254. package/lib/typescript/src/index.d.ts +4 -0
  255. package/lib/typescript/src/index.d.ts.map +1 -1
  256. package/lib/typescript/src/plugin/withStripe.d.ts +15 -0
  257. package/lib/typescript/src/plugin/withStripe.d.ts.map +1 -1
  258. package/lib/typescript/src/specs/NativeConnectAccountOnboardingView.d.ts +14 -0
  259. package/lib/typescript/src/specs/NativeConnectAccountOnboardingView.d.ts.map +1 -0
  260. package/lib/typescript/src/specs/NativeNavigationBar.d.ts +11 -0
  261. package/lib/typescript/src/specs/NativeNavigationBar.d.ts.map +1 -0
  262. package/lib/typescript/src/specs/NativeOnrampSdkModule.d.ts +28 -0
  263. package/lib/typescript/src/specs/NativeOnrampSdkModule.d.ts.map +1 -0
  264. package/lib/typescript/src/specs/NativeStripeSdkModule.d.ts +3 -0
  265. package/lib/typescript/src/specs/NativeStripeSdkModule.d.ts.map +1 -1
  266. package/lib/typescript/src/types/Errors.d.ts +5 -0
  267. package/lib/typescript/src/types/Errors.d.ts.map +1 -1
  268. package/lib/typescript/src/types/Onramp.d.ts +275 -0
  269. package/lib/typescript/src/types/Onramp.d.ts.map +1 -0
  270. package/lib/typescript/src/types/PaymentSheet.d.ts +7 -0
  271. package/lib/typescript/src/types/PaymentSheet.d.ts.map +1 -1
  272. package/lib/typescript/src/types/index.d.ts +7 -1
  273. package/lib/typescript/src/types/index.d.ts.map +1 -1
  274. package/package.json +24 -12
  275. package/src/components/StripeProvider.tsx +5 -0
  276. package/src/connect/Components.tsx +279 -0
  277. package/src/connect/ConnectComponentsProvider.tsx +93 -0
  278. package/src/connect/EmbeddedComponent.tsx +407 -0
  279. package/src/connect/ModalCloseButton.tsx +44 -0
  280. package/src/connect/NavigationBar.tsx +29 -0
  281. package/src/connect/connectTypes.ts +626 -0
  282. package/src/events.ts +22 -0
  283. package/src/hooks/useOnramp.tsx +334 -0
  284. package/src/index.tsx +13 -0
  285. package/src/plugin/withStripe.ts +104 -7
  286. package/src/specs/NativeConnectAccountOnboardingView.ts +19 -0
  287. package/src/specs/NativeNavigationBar.ts +16 -0
  288. package/src/specs/NativeOnrampSdkModule.ts +47 -0
  289. package/src/specs/NativeStripeSdkModule.ts +5 -0
  290. package/src/types/Errors.ts +6 -0
  291. package/src/types/Onramp.ts +317 -0
  292. package/src/types/PaymentSheet.ts +7 -0
  293. package/src/types/index.ts +8 -0
  294. package/stripe-react-native.podspec +20 -7
@@ -1,10 +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')
4
- ? rootProject.ext.get('kotlinVersion')
5
- : project.properties['StripeSdk_kotlinVersion']
3
+ def kotlinVersion = rootProject.ext.has("kotlinVersion")
4
+ ? rootProject.ext.get("kotlinVersion")
5
+ : project.properties["StripeSdk_kotlinVersion"]
6
6
 
7
- def kotlinMajor = kotlin_version.tokenize('\\.')[0].toInteger()
7
+ def kotlinMajor = kotlinVersion.tokenize("\\.")[0].toInteger()
8
8
 
9
9
  repositories {
10
10
  google()
@@ -12,28 +12,28 @@ buildscript {
12
12
  }
13
13
 
14
14
  dependencies {
15
- classpath 'com.android.tools.build:gradle:7.2.2'
15
+ classpath "com.android.tools.build:gradle:7.2.2"
16
16
  // noinspection DifferentKotlinGradleVersion
17
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
18
- classpath 'com.diffplug.spotless:spotless-plugin-gradle:6.25.0'
17
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
18
+ classpath "com.diffplug.spotless:spotless-plugin-gradle:6.25.0"
19
19
  // only use this old compose-compiler plugin when Kotlin >= 2.0
20
20
  if (kotlinMajor >= 2) {
21
- classpath "org.jetbrains.kotlin:compose-compiler-gradle-plugin:$kotlin_version"
21
+ classpath "org.jetbrains.kotlin:compose-compiler-gradle-plugin:$kotlinVersion"
22
22
  }
23
23
  }
24
24
  }
25
25
 
26
26
  if (project == rootProject) {
27
- apply from: 'spotless.gradle'
27
+ apply from: "spotless.gradle"
28
28
  return
29
29
  }
30
30
 
31
31
  def getExtOrDefault(name) {
32
- return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties['StripeSdk_' + name]
32
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties["StripeSdk_" + name]
33
33
  }
34
34
 
35
35
  def getExtOrIntegerDefault(name) {
36
- return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties['StripeSdk_' + name]).toInteger()
36
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["StripeSdk_" + name]).toInteger()
37
37
  }
38
38
 
39
39
  def isNewArchitectureEnabled() {
@@ -44,6 +44,11 @@ def isNewArchitectureEnabled() {
44
44
  return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
45
45
  }
46
46
 
47
+ def isOnrampIncluded() {
48
+ return rootProject.ext.has("StripeSdk_includeOnramp") &&
49
+ rootProject.ext.StripeSdk_includeOnramp.toString().toLowerCase() == "true"
50
+ }
51
+
47
52
  def reactNativeArchitectures() {
48
53
  def value = project.getProperties().get("reactNativeArchitectures")
49
54
  return value ? value.split(",") : [
@@ -54,22 +59,19 @@ def reactNativeArchitectures() {
54
59
  ]
55
60
  }
56
61
 
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()
62
+ def kotlinVersion = getExtOrDefault("kotlinVersion")
63
+ def kotlinMajor = kotlinVersion.tokenize("\\.")[0].toInteger()
61
64
 
62
- apply plugin: 'com.android.library'
63
- apply plugin: 'kotlin-android'
64
- apply plugin: 'kotlin-parcelize'
65
+ apply plugin: "com.android.library"
66
+ apply plugin: "kotlin-android"
67
+ apply plugin: "kotlin-parcelize"
65
68
  // Only apply the compose plugin if we have the old compose-compiler on the classpath
66
69
  if (kotlinMajor >= 2) {
67
- apply plugin: 'org.jetbrains.kotlin.plugin.compose'
70
+ apply plugin: "org.jetbrains.kotlin.plugin.compose"
68
71
  }
69
- //apply plugin: 'kotlin-android-extensions'
70
72
 
71
73
  if (isNewArchitectureEnabled()) {
72
- apply plugin: 'com.facebook.react'
74
+ apply plugin: "com.facebook.react"
73
75
  }
74
76
 
75
77
  android {
@@ -78,7 +80,7 @@ android {
78
80
  buildConfig true
79
81
  }
80
82
 
81
- compileSdkVersion getExtOrIntegerDefault('compileSdkVersion')
83
+ compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")
82
84
 
83
85
  // Used to override the NDK path/version on internal CI or by allowing
84
86
  // users to customize the NDK path/version from their root project (e.g. for M1 support)
@@ -90,28 +92,24 @@ android {
90
92
  }
91
93
 
92
94
  defaultConfig {
93
- minSdkVersion getExtOrIntegerDefault('minSdkVersion')
94
- targetSdkVersion getExtOrIntegerDefault('targetSdkVersion')
95
+ minSdkVersion getExtOrIntegerDefault("minSdkVersion")
96
+ targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
95
97
  versionCode 1
96
98
  versionName "1.0"
97
99
  vectorDrawables.useSupportLibrary = true
98
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
99
- consumerProguardFiles 'proguard-rules.txt'
100
+ consumerProguardFiles "proguard-rules.txt"
100
101
  buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
102
+ buildConfigField "boolean", "IS_ONRAMP_INCLUDED", isOnrampIncluded().toString()
101
103
 
102
104
  ndk {
103
105
  abiFilters(*reactNativeArchitectures())
104
106
  }
105
107
  }
106
108
 
107
- buildTypes {
108
- release {
109
- minifyEnabled false
110
- }
111
- }
112
-
113
109
  lintOptions {
114
- disable 'GradleCompatible'
110
+ disable "GradleCompatible"
111
+ textReport true
112
+ textOutput "stdout"
115
113
  }
116
114
 
117
115
  compileOptions {
@@ -119,6 +117,10 @@ android {
119
117
  targetCompatibility JavaVersion.VERSION_1_8
120
118
  }
121
119
 
120
+ kotlinOptions {
121
+ allWarningsAsErrors = System.getenv("RN_STRIPE_WARNINGS_AS_ERRORS") == "true"
122
+ }
123
+
122
124
  buildFeatures {
123
125
  viewBinding true
124
126
  compose true
@@ -129,6 +131,19 @@ android {
129
131
  if (!isNewArchitectureEnabled()) {
130
132
  srcDirs += ["src/oldarch/java"]
131
133
  }
134
+ if (isOnrampIncluded()) {
135
+ srcDirs += ["src/onramp/java"]
136
+ }
137
+ }
138
+ }
139
+
140
+ // When running tests on bitrise we need to make sure that the test artifacts are inside
141
+ // the root project directory (in that case example/android), or it won't be picked up.
142
+ testOptions {
143
+ unitTests.all { Test test ->
144
+ def outputRoot = rootProject.layout.buildDirectory.get().asFile
145
+ test.reports.junitXml.outputLocation.set(new File(outputRoot, "test-results/${test.name}"))
146
+ test.reports.html.outputLocation.set(new File(outputRoot, "reports/tests/${test.name}"))
132
147
  }
133
148
  }
134
149
  }
@@ -136,104 +151,47 @@ android {
136
151
  repositories {
137
152
  mavenCentral()
138
153
  google()
139
-
140
- def found = false
141
- def defaultDir = null
142
- def androidSourcesName = 'React Native sources'
143
-
144
- if (rootProject.ext.has('reactNativeAndroidRoot')) {
145
- defaultDir = rootProject.ext.get('reactNativeAndroidRoot')
146
- } else {
147
- defaultDir = new File(
148
- projectDir,
149
- '/../../../node_modules/react-native/android'
150
- )
151
- }
152
-
153
- if (defaultDir.exists()) {
154
- maven {
155
- url defaultDir.toString()
156
- name androidSourcesName
157
- }
158
-
159
- logger.info(":${project.name}:reactNativeAndroidRoot ${defaultDir.canonicalPath}")
160
- found = true
161
- } else {
162
- def parentDir = rootProject.projectDir
163
-
164
- 1.upto(5, {
165
- if (found) return true
166
- parentDir = parentDir.parentFile
167
-
168
- def androidSourcesDir = new File(
169
- parentDir,
170
- 'node_modules/react-native'
171
- )
172
-
173
- def androidPrebuiltBinaryDir = new File(
174
- parentDir,
175
- 'node_modules/react-native/android'
176
- )
177
-
178
- if (androidPrebuiltBinaryDir.exists()) {
179
- maven {
180
- url androidPrebuiltBinaryDir.toString()
181
- name androidSourcesName
182
- }
183
-
184
- logger.info(":${project.name}:reactNativeAndroidRoot ${androidPrebuiltBinaryDir.canonicalPath}")
185
- found = true
186
- } else if (androidSourcesDir.exists()) {
187
- maven {
188
- url androidSourcesDir.toString()
189
- name androidSourcesName
190
- }
191
-
192
- logger.info(":${project.name}:reactNativeAndroidRoot ${androidSourcesDir.canonicalPath}")
193
- found = true
194
- }
195
- })
196
- }
197
-
198
- if (!found) {
199
- throw new GradleException(
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."
202
- )
203
- }
204
154
  }
205
155
 
206
- def stripe_version = getExtOrDefault('stripeVersion')
156
+ def stripeVersion = getExtOrDefault("stripeVersion")
207
157
 
208
158
  dependencies {
209
159
  // noinspection GradleDynamicVersion
210
- api 'com.facebook.react:react-native:+'
211
- implementation 'com.github.bumptech.glide:glide:4.12.0'
212
- implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
160
+ api "com.facebook.react:react-native:+"
161
+ implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
213
162
  implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.3.1"
214
- implementation("com.stripe:stripe-android:$stripe_version") {
215
- exclude group: 'androidx.emoji2', module: 'emoji2'
216
- }
217
- implementation("com.stripe:financial-connections:$stripe_version") {
218
- exclude group: 'androidx.emoji2', module: 'emoji2'
219
- }
220
- implementation('androidx.emoji2:emoji2:1.3.0').force // Avoid using 1.4.0 since that requires targetSdkVersion 34
221
- implementation 'com.google.android.material:material:1.3.0'
222
- implementation 'androidx.appcompat:appcompat:1.4.1'
223
- implementation 'androidx.legacy:legacy-support-v4:1.0.0'
224
- implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0'
163
+ implementation("com.stripe:stripe-android:$stripeVersion")
164
+ implementation("com.stripe:financial-connections:$stripeVersion")
165
+
166
+ if (isOnrampIncluded()) {
167
+ implementation("com.stripe:crypto-onramp:$stripeVersion")
168
+ }
169
+
170
+ implementation "com.google.android.material:material:1.3.0"
171
+ implementation "androidx.appcompat:appcompat:1.4.1"
172
+ implementation "androidx.legacy:legacy-support-v4:1.0.0"
173
+ implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0"
174
+ implementation "androidx.browser:browser:1.8.0"
225
175
 
226
176
  // play-services-wallet is already included in stripe-android
227
177
  compileOnly "com.google.android.gms:play-services-wallet:19.3.0"
228
178
 
229
179
  // Users need to declare this dependency on their own, otherwise all methods are a no-op
230
- compileOnly 'com.stripe:stripe-android-issuing-push-provisioning:1.1.0'
180
+ compileOnly "com.stripe:stripe-android-issuing-push-provisioning:1.1.0"
231
181
 
232
- androidTestImplementation "junit:junit:4.13"
233
- androidTestImplementation "androidx.test:core:1.4.0"
234
- androidTestImplementation 'androidx.test:runner:1.1.0'
235
- androidTestImplementation "org.mockito:mockito-core:3.+"
182
+ testImplementation "junit:junit:4.13"
183
+ testImplementation "org.mockito:mockito-core:3.+"
184
+ testImplementation "org.robolectric:robolectric:4.10"
185
+ testImplementation "androidx.test:core:1.4.0"
236
186
 
237
187
  implementation "androidx.compose.ui:ui:1.7.8"
238
188
  implementation "androidx.compose.foundation:foundation-layout:1.7.8"
239
189
  }
190
+
191
+ def lintRulesJar = file("$projectDir/lint-rules/build/libs/lint-rules-1.0.0.jar")
192
+ if (lintRulesJar.exists()) {
193
+ dependencies {
194
+ lintChecks files(lintRulesJar)
195
+ }
196
+ }
197
+
@@ -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=22.1.+
6
+ StripeSdk_stripeVersion=22.2.+
@@ -0,0 +1,2 @@
1
+ rootProject.name = 'stripe-react-native'
2
+ include ':lint-rules'
@@ -11,7 +11,7 @@ allprojects {
11
11
  spotless {
12
12
  kotlin {
13
13
  target 'src/**/*.kt'
14
- ktlint("1.5.0")
14
+ ktlint("1.5.0").setEditorConfigPath("$projectDir/../.editorconfig")
15
15
  trimTrailingWhitespace()
16
16
  indentWithSpaces()
17
17
  endWithNewline()
@@ -2,8 +2,8 @@ package com.reactnativestripesdk
2
2
 
3
3
  import android.annotation.SuppressLint
4
4
  import android.content.res.ColorStateList
5
- import android.graphics.Color
6
5
  import android.widget.FrameLayout
6
+ import androidx.core.graphics.toColorInt
7
7
  import com.facebook.react.bridge.ReadableMap
8
8
  import com.facebook.react.uimanager.ThemedReactContext
9
9
  import com.facebook.react.uimanager.UIManagerHelper
@@ -49,24 +49,27 @@ class AuBECSDebitFormView(
49
49
  val borderRadius = value.getIntOr("borderRadius", 0)
50
50
 
51
51
  textColor?.let {
52
- (binding.accountNumberEditText as StripeEditText).setTextColor(Color.parseColor(it))
53
- (binding.bsbEditText as StripeEditText).setTextColor(Color.parseColor(it))
54
- (binding.emailEditText as StripeEditText).setTextColor(Color.parseColor(it))
55
- (binding.nameEditText).setTextColor(Color.parseColor(it))
52
+ val color = it.toColorInt()
53
+ (binding.accountNumberEditText as StripeEditText).setTextColor(color)
54
+ (binding.bsbEditText as StripeEditText).setTextColor(color)
55
+ (binding.emailEditText as StripeEditText).setTextColor(color)
56
+ (binding.nameEditText).setTextColor(color)
56
57
  }
57
58
 
58
59
  textErrorColor?.let {
59
- (binding.accountNumberEditText as StripeEditText).setErrorColor(Color.parseColor(it))
60
- (binding.bsbEditText as StripeEditText).setErrorColor(Color.parseColor(it))
61
- (binding.emailEditText as StripeEditText).setErrorColor(Color.parseColor(it))
62
- (binding.nameEditText).setErrorColor(Color.parseColor(it))
60
+ val color = it.toColorInt()
61
+ (binding.accountNumberEditText as StripeEditText).setErrorColor(color)
62
+ (binding.bsbEditText as StripeEditText).setErrorColor(color)
63
+ (binding.emailEditText as StripeEditText).setErrorColor(color)
64
+ (binding.nameEditText).setErrorColor(color)
63
65
  }
64
66
 
65
67
  placeholderColor?.let {
66
- (binding.accountNumberEditText as StripeEditText).setHintTextColor(Color.parseColor(it))
67
- (binding.bsbEditText as StripeEditText).setHintTextColor(Color.parseColor(it))
68
- (binding.emailEditText as StripeEditText).setHintTextColor(Color.parseColor(it))
69
- (binding.nameEditText).setHintTextColor(Color.parseColor(it))
68
+ val color = it.toColorInt()
69
+ (binding.accountNumberEditText as StripeEditText).setHintTextColor(color)
70
+ (binding.bsbEditText as StripeEditText).setHintTextColor(color)
71
+ (binding.emailEditText as StripeEditText).setHintTextColor(color)
72
+ (binding.nameEditText).setHintTextColor(color)
70
73
  }
71
74
 
72
75
  fontSize?.let {
@@ -84,12 +87,12 @@ class AuBECSDebitFormView(
84
87
  .build(),
85
88
  ).also { shape ->
86
89
  shape.strokeWidth = 0.0f
87
- shape.strokeColor = ColorStateList.valueOf(Color.parseColor("#000000"))
88
- shape.fillColor = ColorStateList.valueOf(Color.parseColor("#FFFFFF"))
90
+ shape.strokeColor = ColorStateList.valueOf("#000000".toColorInt())
91
+ shape.fillColor = ColorStateList.valueOf("#FFFFFF".toColorInt())
89
92
  borderWidth?.let { shape.strokeWidth = (it * 2).toFloat() }
90
- borderColor?.let { shape.strokeColor = ColorStateList.valueOf(Color.parseColor(it)) }
93
+ borderColor?.let { shape.strokeColor = ColorStateList.valueOf(it.toColorInt()) }
91
94
  backgroundColor?.let {
92
- shape.fillColor = ColorStateList.valueOf(Color.parseColor(it))
95
+ shape.fillColor = ColorStateList.valueOf(it.toColorInt())
93
96
  }
94
97
  }
95
98
  }
@@ -2,13 +2,13 @@ package com.reactnativestripesdk
2
2
 
3
3
  import android.annotation.SuppressLint
4
4
  import android.content.res.ColorStateList
5
- import android.graphics.Color
6
5
  import android.os.Build
7
6
  import android.text.Editable
8
7
  import android.text.InputFilter
9
8
  import android.text.TextWatcher
10
9
  import android.util.Log
11
10
  import android.widget.FrameLayout
11
+ import androidx.core.graphics.toColorInt
12
12
  import androidx.core.os.LocaleListCompat
13
13
  import com.facebook.react.bridge.ReadableMap
14
14
  import com.facebook.react.uimanager.PixelUtil
@@ -124,19 +124,19 @@ class CardFieldView(
124
124
 
125
125
  textColor?.let {
126
126
  for (editTextBinding in bindings) {
127
- editTextBinding.setTextColor(Color.parseColor(it))
127
+ editTextBinding.setTextColor(it.toColorInt())
128
128
  }
129
129
  }
130
130
  textErrorColor?.let {
131
131
  for (editTextBinding in bindings) {
132
- editTextBinding.setErrorColor(Color.parseColor(it))
132
+ editTextBinding.setErrorColor(it.toColorInt())
133
133
  }
134
134
  }
135
135
  placeholderColor?.let {
136
136
  for (editTextBinding in bindings) {
137
- editTextBinding.setHintTextColor(Color.parseColor(it))
137
+ editTextBinding.setHintTextColor(it.toColorInt())
138
138
  }
139
- setCardBrandTint(Color.parseColor(it))
139
+ setCardBrandTint(it.toColorInt())
140
140
  }
141
141
  fontSize?.let {
142
142
  for (editTextBinding in bindings) {
@@ -158,7 +158,7 @@ class CardFieldView(
158
158
  }
159
159
  cursorColor?.let {
160
160
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
161
- val color = Color.parseColor(it)
161
+ val color = it.toColorInt()
162
162
  for (editTextBinding in bindings) {
163
163
  editTextBinding.textCursorDrawable?.setTint(color)
164
164
  editTextBinding.textSelectHandle?.setTint(color)
@@ -178,16 +178,16 @@ class CardFieldView(
178
178
  .build(),
179
179
  ).also { shape ->
180
180
  shape.strokeWidth = 0.0f
181
- shape.strokeColor = ColorStateList.valueOf(Color.parseColor("#000000"))
182
- shape.fillColor = ColorStateList.valueOf(Color.parseColor("#FFFFFF"))
181
+ shape.strokeColor = ColorStateList.valueOf("#000000".toColorInt())
182
+ shape.fillColor = ColorStateList.valueOf("#FFFFFF".toColorInt())
183
183
  borderWidth?.let {
184
184
  shape.strokeWidth = PixelUtil.toPixelFromDIP(it.toDouble())
185
185
  }
186
186
  borderColor?.let {
187
- shape.strokeColor = ColorStateList.valueOf(Color.parseColor(it))
187
+ shape.strokeColor = ColorStateList.valueOf(it.toColorInt())
188
188
  }
189
189
  backgroundColor?.let {
190
- shape.fillColor = ColorStateList.valueOf(Color.parseColor(it))
190
+ shape.fillColor = ColorStateList.valueOf(it.toColorInt())
191
191
  }
192
192
  }
193
193
  }
@@ -234,7 +234,7 @@ class CardFieldView(
234
234
  fun setPostalCodeEnabled(isEnabled: Boolean) {
235
235
  mCardWidget.postalCodeEnabled = isEnabled
236
236
 
237
- if (isEnabled == false) {
237
+ if (!isEnabled) {
238
238
  mCardWidget.postalCodeRequired = false
239
239
  }
240
240
  }
@@ -284,6 +284,7 @@ class CardFieldView(
284
284
 
285
285
  mCardWidget.paymentMethodCreateParams?.let {
286
286
  cardDetails["brand"] = mapCardBrand(mCardWidget.brand)
287
+ @SuppressLint("RestrictedApi")
287
288
  cardDetails["last4"] = it.cardLast4()
288
289
  } ?: run {
289
290
  cardDetails["brand"] = null
@@ -354,6 +355,7 @@ class CardFieldView(
354
355
  CardValidCallback.Fields.Expiry,
355
356
  cardInputWidgetBinding.expiryDateEditText,
356
357
  )
358
+ @SuppressLint("VisibleForTests")
357
359
  cardDetails["brand"] = mapCardBrand(cardInputWidgetBinding.cardNumberEditText.cardBrand)
358
360
 
359
361
  if (isValid) {
@@ -2,11 +2,11 @@ package com.reactnativestripesdk
2
2
 
3
3
  import android.annotation.SuppressLint
4
4
  import android.content.res.ColorStateList
5
- import android.graphics.Color
6
5
  import android.os.Build
7
6
  import android.text.InputFilter
8
7
  import android.view.View
9
8
  import android.widget.FrameLayout
9
+ import androidx.core.graphics.toColorInt
10
10
  import androidx.core.view.setMargins
11
11
  import com.facebook.react.bridge.ReadableMap
12
12
  import com.facebook.react.uimanager.PixelUtil
@@ -36,6 +36,7 @@ import com.stripe.android.view.CardInputListener
36
36
  class CardFormView(
37
37
  private val context: ThemedReactContext,
38
38
  ) : FrameLayout(context) {
39
+ @SuppressLint("PrivateResource")
39
40
  private var cardForm: CardFormView =
40
41
  CardFormView(context, null, com.stripe.android.R.style.StripeCardFormView_Borderless)
41
42
  private var dangerouslyGetFullCardDetails: Boolean = false
@@ -77,7 +78,7 @@ class CardFormView(
77
78
  cardForm.setPreferredNetworks(mapToPreferredNetworks(preferredNetworks))
78
79
  }
79
80
 
80
- @SuppressLint("RestrictedApi")
81
+ @SuppressLint("RestrictedApi", "VisibleForTests")
81
82
  private fun setCountry(countryString: String?) {
82
83
  if (countryString != null) {
83
84
  cardFormViewBinding.countryLayout.setSelectedCountryCode(CountryCode(countryString))
@@ -126,20 +127,13 @@ class CardFormView(
126
127
  cardNumberEditText.clearFocus()
127
128
  }
128
129
 
129
- fun requestClearFromJS() {
130
- multilineWidgetBinding.etCardNumber.setText("")
131
- multilineWidgetBinding.etCvc.setText("")
132
- multilineWidgetBinding.etExpiry.setText("")
133
- cardFormViewBinding.postalCode.setText("")
134
- }
135
-
136
130
  private fun onChangeFocus() {
137
131
  UIManagerHelper
138
132
  .getEventDispatcherForReactTag(context, id)
139
133
  ?.dispatchEvent(CardFocusChangeEvent(context.surfaceId, id, currentFocusedField))
140
134
  }
141
135
 
142
- @SuppressLint("RestrictedApi")
136
+ @SuppressLint("RestrictedApi", "VisibleForTests")
143
137
  fun setCardStyle(value: ReadableMap?) {
144
138
  val backgroundColor = getValOr(value, "backgroundColor", null)
145
139
  val textColor = getValOr(value, "textColor", null)
@@ -169,19 +163,19 @@ class CardFormView(
169
163
 
170
164
  textColor?.let {
171
165
  for (binding in editTextBindings) {
172
- binding.setTextColor(Color.parseColor(it))
166
+ binding.setTextColor(it.toColorInt())
173
167
  }
174
- cardFormViewBinding.countryLayout.countryAutocomplete.setTextColor(Color.parseColor(it))
168
+ cardFormViewBinding.countryLayout.countryAutocomplete.setTextColor(it.toColorInt())
175
169
  }
176
170
  textErrorColor?.let {
177
171
  for (binding in editTextBindings) {
178
- binding.setErrorColor(Color.parseColor(it))
179
- cardFormViewBinding.postalCode.setErrorColor(Color.parseColor(it))
172
+ binding.setErrorColor(it.toColorInt())
173
+ cardFormViewBinding.postalCode.setErrorColor(it.toColorInt())
180
174
  }
181
175
  }
182
176
  placeholderColor?.let {
183
177
  for (binding in placeholderTextBindings) {
184
- binding.defaultHintTextColor = ColorStateList.valueOf(Color.parseColor(it))
178
+ binding.defaultHintTextColor = ColorStateList.valueOf(it.toColorInt())
185
179
  }
186
180
  }
187
181
  fontSize?.let {
@@ -205,7 +199,7 @@ class CardFormView(
205
199
  }
206
200
  cursorColor?.let {
207
201
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
208
- val color = Color.parseColor(it)
202
+ val color = it.toColorInt()
209
203
  for (binding in editTextBindings) {
210
204
  binding.textCursorDrawable?.setTint(color)
211
205
  binding.textSelectHandle?.setTint(color)
@@ -224,16 +218,16 @@ class CardFormView(
224
218
  .build(),
225
219
  ).also { shape ->
226
220
  shape.strokeWidth = 0.0f
227
- shape.strokeColor = ColorStateList.valueOf(Color.parseColor("#000000"))
228
- shape.fillColor = ColorStateList.valueOf(Color.parseColor("#FFFFFF"))
221
+ shape.strokeColor = ColorStateList.valueOf("#000000".toColorInt())
222
+ shape.fillColor = ColorStateList.valueOf("#FFFFFF".toColorInt())
229
223
  borderWidth?.let {
230
224
  shape.strokeWidth = PixelUtil.toPixelFromDIP(it.toDouble())
231
225
  }
232
226
  borderColor?.let {
233
- shape.strokeColor = ColorStateList.valueOf(Color.parseColor(it))
227
+ shape.strokeColor = ColorStateList.valueOf(it.toColorInt())
234
228
  }
235
229
  backgroundColor?.let {
236
- shape.fillColor = ColorStateList.valueOf(Color.parseColor(it))
230
+ shape.fillColor = ColorStateList.valueOf(it.toColorInt())
237
231
  }
238
232
  }
239
233
  }
@@ -247,6 +241,8 @@ class CardFormView(
247
241
  if (isValid) {
248
242
  cardForm.paymentMethodCreateParams?.let {
249
243
  val cardParamsMap = it.toParamMap()["card"] as HashMap<*, *>
244
+
245
+ @SuppressLint("RestrictedApi")
250
246
  val cardDetails: MutableMap<String, Any> =
251
247
  mutableMapOf(
252
248
  "expiryMonth" to cardParamsMap["exp_month"] as Int,
@@ -340,7 +336,7 @@ class CardFormView(
340
336
  )
341
337
  }
342
338
 
343
- @SuppressLint("RestrictedApi")
339
+ @SuppressLint("RestrictedApi", "VisibleForTests")
344
340
  private fun createPostalCodeInputFilter(): InputFilter {
345
341
  return InputFilter { charSequence, start, end, _, _, _ ->
346
342
  if (cardFormViewBinding.countryLayout.getSelectedCountryCode() == CountryCode.US) {
@@ -1,5 +1,6 @@
1
1
  package com.reactnativestripesdk
2
2
 
3
+ import android.annotation.SuppressLint
3
4
  import androidx.activity.ComponentActivity
4
5
  import com.facebook.react.bridge.ReactApplicationContext
5
6
  import com.reactnativestripesdk.utils.ErrorType
@@ -66,6 +67,7 @@ class CollectBankAccountLauncherManager(
66
67
  }
67
68
 
68
69
  private fun createBankAccountLauncher(activity: ComponentActivity): CollectBankAccountLauncher =
70
+ @SuppressLint("RestrictedApi")
69
71
  CollectBankAccountLauncher.create(activity, signal) { result ->
70
72
  when (result) {
71
73
  is CollectBankAccountResult.Completed -> {
@@ -22,6 +22,7 @@ import java.lang.ref.WeakReference
22
22
  class CustomPaymentMethodActivity : ReactActivity() {
23
23
  override fun onCreate(savedInstanceState: Bundle?) {
24
24
  // Disable the transition animation to make it truly invisible
25
+ @Suppress("DEPRECATION")
25
26
  overridePendingTransition(0, 0)
26
27
  super.onCreate(savedInstanceState)
27
28
  }
@@ -53,6 +54,7 @@ class CustomPaymentMethodActivity : ReactActivity() {
53
54
  override fun finish() {
54
55
  super.finish()
55
56
  // Disable the exit animation as well
57
+ @Suppress("DEPRECATION")
56
58
  overridePendingTransition(0, 0)
57
59
 
58
60
  // Clear the weak reference when finished