@reown/appkit-react-native 0.0.0-feat-multichain-20250724181758 → 0.0.0-feat-multichain-20250725183909

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 (389) hide show
  1. package/lib/commonjs/AppKit.js +40 -27
  2. package/lib/commonjs/AppKit.js.map +1 -1
  3. package/lib/commonjs/AppKitContext.js +1 -2
  4. package/lib/commonjs/AppKitContext.js.map +1 -1
  5. package/lib/commonjs/config/animations.js.map +1 -1
  6. package/lib/commonjs/connectors/WalletConnectConnector.js.map +1 -1
  7. package/lib/commonjs/hooks/useAccount.js +2 -1
  8. package/lib/commonjs/hooks/useAccount.js.map +1 -1
  9. package/lib/commonjs/hooks/useAppKit.js.map +1 -1
  10. package/lib/commonjs/hooks/useAppKitEvents.js.map +1 -1
  11. package/lib/commonjs/hooks/useCustomDimensions.js.map +1 -1
  12. package/lib/commonjs/hooks/useDebounceCallback.js.map +1 -1
  13. package/lib/commonjs/hooks/useKeyboard.js.map +1 -1
  14. package/lib/commonjs/hooks/useProvider.js.map +1 -1
  15. package/lib/commonjs/hooks/useTimeout.js.map +1 -1
  16. package/lib/commonjs/hooks/useWalletInfo.js.map +1 -1
  17. package/lib/commonjs/index.js +0 -7
  18. package/lib/commonjs/index.js.map +1 -1
  19. package/lib/commonjs/modal/w3m-account-button/index.js +0 -1
  20. package/lib/commonjs/modal/w3m-account-button/index.js.map +1 -1
  21. package/lib/commonjs/modal/w3m-button/index.js.map +1 -1
  22. package/lib/commonjs/modal/w3m-connect-button/index.js.map +1 -1
  23. package/lib/commonjs/modal/w3m-modal/index.js.map +1 -1
  24. package/lib/commonjs/modal/w3m-modal/styles.js.map +1 -1
  25. package/lib/commonjs/modal/w3m-network-button/index.js.map +1 -1
  26. package/lib/commonjs/modal/w3m-router/index.js.map +1 -1
  27. package/lib/commonjs/partials/w3m-account-activity/index.js.map +1 -1
  28. package/lib/commonjs/partials/w3m-account-activity/styles.js.map +1 -1
  29. package/lib/commonjs/partials/w3m-account-activity/utils.js.map +1 -1
  30. package/lib/commonjs/partials/w3m-account-tokens/index.js.map +1 -1
  31. package/lib/commonjs/partials/w3m-account-wallet-features/index.js.map +1 -1
  32. package/lib/commonjs/partials/w3m-account-wallet-features/styles.js.map +1 -1
  33. package/lib/commonjs/partials/w3m-all-wallets-list/index.js.map +1 -1
  34. package/lib/commonjs/partials/w3m-all-wallets-list/styles.js.map +1 -1
  35. package/lib/commonjs/partials/w3m-all-wallets-search/index.js.map +1 -1
  36. package/lib/commonjs/partials/w3m-all-wallets-search/styles.js.map +1 -1
  37. package/lib/commonjs/partials/w3m-connecting-body/index.js.map +1 -1
  38. package/lib/commonjs/partials/w3m-connecting-body/utils.js.map +1 -1
  39. package/lib/commonjs/partials/w3m-connecting-header/index.js.map +1 -1
  40. package/lib/commonjs/partials/w3m-connecting-mobile/components/StoreLink.js.map +1 -1
  41. package/lib/commonjs/partials/w3m-connecting-mobile/index.js.map +1 -1
  42. package/lib/commonjs/partials/w3m-connecting-mobile/styles.js.map +1 -1
  43. package/lib/commonjs/partials/w3m-connecting-qrcode/index.js.map +1 -1
  44. package/lib/commonjs/partials/w3m-connecting-qrcode/styles.js.map +1 -1
  45. package/lib/commonjs/partials/w3m-connecting-web/index.js.map +1 -1
  46. package/lib/commonjs/partials/w3m-connecting-web/styles.js.map +1 -1
  47. package/lib/commonjs/partials/w3m-header/index.js.map +1 -1
  48. package/lib/commonjs/partials/w3m-header/styles.js.map +1 -1
  49. package/lib/commonjs/partials/w3m-information-modal/index.js.map +1 -1
  50. package/lib/commonjs/partials/w3m-information-modal/styles.js.map +1 -1
  51. package/lib/commonjs/partials/w3m-otp-code/index.js.map +1 -1
  52. package/lib/commonjs/partials/w3m-otp-code/styles.js.map +1 -1
  53. package/lib/commonjs/partials/w3m-placeholder/index.js.map +1 -1
  54. package/lib/commonjs/partials/w3m-selector-modal/index.js.map +1 -1
  55. package/lib/commonjs/partials/w3m-selector-modal/styles.js.map +1 -1
  56. package/lib/commonjs/partials/w3m-send-input-address/index.js +0 -1
  57. package/lib/commonjs/partials/w3m-send-input-address/index.js.map +1 -1
  58. package/lib/commonjs/partials/w3m-send-input-address/styles.js.map +1 -1
  59. package/lib/commonjs/partials/w3m-send-input-token/index.js.map +1 -1
  60. package/lib/commonjs/partials/w3m-send-input-token/styles.js.map +1 -1
  61. package/lib/commonjs/partials/w3m-send-input-token/utils.js.map +1 -1
  62. package/lib/commonjs/partials/w3m-snackbar/index.js.map +1 -1
  63. package/lib/commonjs/partials/w3m-snackbar/styles.js.map +1 -1
  64. package/lib/commonjs/partials/w3m-swap-details/index.js.map +1 -1
  65. package/lib/commonjs/partials/w3m-swap-details/styles.js.map +1 -1
  66. package/lib/commonjs/partials/w3m-swap-details/utils.js.map +1 -1
  67. package/lib/commonjs/partials/w3m-swap-input/index.js.map +1 -1
  68. package/lib/commonjs/partials/w3m-swap-input/styles.js.map +1 -1
  69. package/lib/commonjs/utils/HelpersUtil.js.map +1 -1
  70. package/lib/commonjs/utils/NetworkUtil.js.map +1 -1
  71. package/lib/commonjs/utils/UiUtil.js.map +1 -1
  72. package/lib/commonjs/views/w3m-account-default-view/components/auth-buttons.js.map +1 -1
  73. package/lib/commonjs/views/w3m-account-default-view/components/upgrade-wallet-button.js.map +1 -1
  74. package/lib/commonjs/views/w3m-account-default-view/index.js +2 -1
  75. package/lib/commonjs/views/w3m-account-default-view/index.js.map +1 -1
  76. package/lib/commonjs/views/w3m-account-default-view/styles.js.map +1 -1
  77. package/lib/commonjs/views/w3m-account-view/index.js +4 -0
  78. package/lib/commonjs/views/w3m-account-view/index.js.map +1 -1
  79. package/lib/commonjs/views/w3m-account-view/styles.js.map +1 -1
  80. package/lib/commonjs/views/w3m-all-wallets-view/index.js.map +1 -1
  81. package/lib/commonjs/views/w3m-all-wallets-view/styles.js.map +1 -1
  82. package/lib/commonjs/views/w3m-connect-socials-view/index.js.map +1 -1
  83. package/lib/commonjs/views/w3m-connect-socials-view/styles.js.map +1 -1
  84. package/lib/commonjs/views/w3m-connect-view/components/all-wallet-list.js.map +1 -1
  85. package/lib/commonjs/views/w3m-connect-view/components/all-wallets-button.js.map +1 -1
  86. package/lib/commonjs/views/w3m-connect-view/components/connectors-list.js +1 -1
  87. package/lib/commonjs/views/w3m-connect-view/components/connectors-list.js.map +1 -1
  88. package/lib/commonjs/views/w3m-connect-view/components/custom-wallet-list.js.map +1 -1
  89. package/lib/commonjs/views/w3m-connect-view/components/recent-wallet-list.js.map +1 -1
  90. package/lib/commonjs/views/w3m-connect-view/components/social-login-list.js.map +1 -1
  91. package/lib/commonjs/views/w3m-connect-view/index.js.map +1 -1
  92. package/lib/commonjs/views/w3m-connect-view/styles.js.map +1 -1
  93. package/lib/commonjs/views/w3m-connect-view/utils.js.map +1 -1
  94. package/lib/commonjs/views/w3m-connecting-external-view/index.js.map +1 -1
  95. package/lib/commonjs/views/w3m-connecting-external-view/styles.js.map +1 -1
  96. package/lib/commonjs/views/w3m-connecting-siwe-view/index.js +2 -2
  97. package/lib/commonjs/views/w3m-connecting-siwe-view/index.js.map +1 -1
  98. package/lib/commonjs/views/w3m-connecting-siwe-view/styles.js.map +1 -1
  99. package/lib/commonjs/views/w3m-connecting-social-view/index.js.map +1 -1
  100. package/lib/commonjs/views/w3m-connecting-social-view/styles.js.map +1 -1
  101. package/lib/commonjs/views/w3m-connecting-view/index.js.map +1 -1
  102. package/lib/commonjs/views/w3m-get-wallet-view/index.js.map +1 -1
  103. package/lib/commonjs/views/w3m-get-wallet-view/styles.js.map +1 -1
  104. package/lib/commonjs/views/w3m-network-switch-view/index.js.map +1 -1
  105. package/lib/commonjs/views/w3m-network-switch-view/styles.js.map +1 -1
  106. package/lib/commonjs/views/w3m-networks-view/index.js.map +1 -1
  107. package/lib/commonjs/views/w3m-networks-view/styles.js.map +1 -1
  108. package/lib/commonjs/views/w3m-onramp-checkout-view/index.js.map +1 -1
  109. package/lib/commonjs/views/w3m-onramp-loading-view/index.js.map +1 -1
  110. package/lib/commonjs/views/w3m-onramp-loading-view/styles.js.map +1 -1
  111. package/lib/commonjs/views/w3m-onramp-settings-view/components/Country.js.map +1 -1
  112. package/lib/commonjs/views/w3m-onramp-settings-view/index.js.map +1 -1
  113. package/lib/commonjs/views/w3m-onramp-settings-view/styles.js.map +1 -1
  114. package/lib/commonjs/views/w3m-onramp-settings-view/utils.js.map +1 -1
  115. package/lib/commonjs/views/w3m-onramp-transaction-view/index.js +1 -1
  116. package/lib/commonjs/views/w3m-onramp-transaction-view/index.js.map +1 -1
  117. package/lib/commonjs/views/w3m-onramp-transaction-view/styles.js.map +1 -1
  118. package/lib/commonjs/views/w3m-onramp-view/components/Currency.js +5 -3
  119. package/lib/commonjs/views/w3m-onramp-view/components/Currency.js.map +1 -1
  120. package/lib/commonjs/views/w3m-onramp-view/components/CurrencyInput.js +3 -2
  121. package/lib/commonjs/views/w3m-onramp-view/components/CurrencyInput.js.map +1 -1
  122. package/lib/commonjs/views/w3m-onramp-view/components/Header.js.map +1 -1
  123. package/lib/commonjs/views/w3m-onramp-view/components/LoadingView.js +2 -2
  124. package/lib/commonjs/views/w3m-onramp-view/components/LoadingView.js.map +1 -1
  125. package/lib/commonjs/views/w3m-onramp-view/components/PaymentButton.js +109 -0
  126. package/lib/commonjs/views/w3m-onramp-view/components/PaymentButton.js.map +1 -0
  127. package/lib/commonjs/views/w3m-onramp-view/components/PaymentMethod.js +9 -8
  128. package/lib/commonjs/views/w3m-onramp-view/components/PaymentMethod.js.map +1 -1
  129. package/lib/commonjs/views/w3m-onramp-view/components/Quote.js +5 -3
  130. package/lib/commonjs/views/w3m-onramp-view/components/Quote.js.map +1 -1
  131. package/lib/commonjs/views/w3m-onramp-view/components/SelectPaymentModal.js +39 -51
  132. package/lib/commonjs/views/w3m-onramp-view/components/SelectPaymentModal.js.map +1 -1
  133. package/lib/commonjs/views/w3m-onramp-view/index.js +32 -51
  134. package/lib/commonjs/views/w3m-onramp-view/index.js.map +1 -1
  135. package/lib/commonjs/views/w3m-onramp-view/styles.js +4 -0
  136. package/lib/commonjs/views/w3m-onramp-view/styles.js.map +1 -1
  137. package/lib/commonjs/views/w3m-onramp-view/utils.js +19 -78
  138. package/lib/commonjs/views/w3m-onramp-view/utils.js.map +1 -1
  139. package/lib/commonjs/views/w3m-swap-preview-view/index.js.map +1 -1
  140. package/lib/commonjs/views/w3m-swap-preview-view/styles.js.map +1 -1
  141. package/lib/commonjs/views/w3m-swap-view/components/select-token-view/index.js.map +1 -1
  142. package/lib/commonjs/views/w3m-swap-view/components/select-token-view/styles.js.map +1 -1
  143. package/lib/commonjs/views/w3m-swap-view/components/select-token-view/utils.js.map +1 -1
  144. package/lib/commonjs/views/w3m-swap-view/index.js.map +1 -1
  145. package/lib/commonjs/views/w3m-swap-view/styles.js.map +1 -1
  146. package/lib/commonjs/views/w3m-transactions-view/index.js.map +1 -1
  147. package/lib/commonjs/views/w3m-unsupported-chain-view/index.js.map +1 -1
  148. package/lib/commonjs/views/w3m-unsupported-chain-view/styles.js.map +1 -1
  149. package/lib/commonjs/views/w3m-upgrade-email-wallet-view/index.js.map +1 -1
  150. package/lib/commonjs/views/w3m-wallet-compatible-networks-view/index.js.map +1 -1
  151. package/lib/commonjs/views/w3m-wallet-compatible-networks-view/styles.js.map +1 -1
  152. package/lib/commonjs/views/w3m-wallet-receive-view/index.js.map +1 -1
  153. package/lib/commonjs/views/w3m-wallet-receive-view/styles.js.map +1 -1
  154. package/lib/commonjs/views/w3m-wallet-send-preview-view/components/preview-send-details.js.map +1 -1
  155. package/lib/commonjs/views/w3m-wallet-send-preview-view/components/preview-send-pill.js.map +1 -1
  156. package/lib/commonjs/views/w3m-wallet-send-preview-view/index.js.map +1 -1
  157. package/lib/commonjs/views/w3m-wallet-send-preview-view/styles.js.map +1 -1
  158. package/lib/commonjs/views/w3m-wallet-send-select-token-view/index.js.map +1 -1
  159. package/lib/commonjs/views/w3m-wallet-send-select-token-view/styles.js.map +1 -1
  160. package/lib/commonjs/views/w3m-wallet-send-view/index.js.map +1 -1
  161. package/lib/commonjs/views/w3m-wallet-send-view/styles.js.map +1 -1
  162. package/lib/commonjs/views/w3m-what-is-a-network-view/index.js.map +1 -1
  163. package/lib/commonjs/views/w3m-what-is-a-network-view/styles.js.map +1 -1
  164. package/lib/commonjs/views/w3m-what-is-a-wallet-view/index.js.map +1 -1
  165. package/lib/commonjs/views/w3m-what-is-a-wallet-view/styles.js.map +1 -1
  166. package/lib/module/AppKit.js +41 -28
  167. package/lib/module/AppKit.js.map +1 -1
  168. package/lib/module/AppKitContext.js.map +1 -1
  169. package/lib/module/config/animations.js.map +1 -1
  170. package/lib/module/connectors/WalletConnectConnector.js.map +1 -1
  171. package/lib/module/hooks/useAccount.js +2 -1
  172. package/lib/module/hooks/useAccount.js.map +1 -1
  173. package/lib/module/hooks/useAppKit.js.map +1 -1
  174. package/lib/module/hooks/useAppKitEvents.js.map +1 -1
  175. package/lib/module/hooks/useCustomDimensions.js.map +1 -1
  176. package/lib/module/hooks/useDebounceCallback.js.map +1 -1
  177. package/lib/module/hooks/useKeyboard.js.map +1 -1
  178. package/lib/module/hooks/useProvider.js.map +1 -1
  179. package/lib/module/hooks/useTimeout.js.map +1 -1
  180. package/lib/module/hooks/useWalletInfo.js.map +1 -1
  181. package/lib/module/index.js +0 -4
  182. package/lib/module/index.js.map +1 -1
  183. package/lib/module/modal/w3m-account-button/index.js +0 -2
  184. package/lib/module/modal/w3m-account-button/index.js.map +1 -1
  185. package/lib/module/modal/w3m-button/index.js.map +1 -1
  186. package/lib/module/modal/w3m-connect-button/index.js.map +1 -1
  187. package/lib/module/modal/w3m-modal/index.js.map +1 -1
  188. package/lib/module/modal/w3m-modal/styles.js.map +1 -1
  189. package/lib/module/modal/w3m-network-button/index.js.map +1 -1
  190. package/lib/module/modal/w3m-router/index.js.map +1 -1
  191. package/lib/module/partials/w3m-account-activity/index.js.map +1 -1
  192. package/lib/module/partials/w3m-account-activity/styles.js.map +1 -1
  193. package/lib/module/partials/w3m-account-activity/utils.js.map +1 -1
  194. package/lib/module/partials/w3m-account-tokens/index.js.map +1 -1
  195. package/lib/module/partials/w3m-account-wallet-features/index.js.map +1 -1
  196. package/lib/module/partials/w3m-account-wallet-features/styles.js.map +1 -1
  197. package/lib/module/partials/w3m-all-wallets-list/index.js.map +1 -1
  198. package/lib/module/partials/w3m-all-wallets-list/styles.js.map +1 -1
  199. package/lib/module/partials/w3m-all-wallets-search/index.js.map +1 -1
  200. package/lib/module/partials/w3m-all-wallets-search/styles.js.map +1 -1
  201. package/lib/module/partials/w3m-connecting-body/index.js.map +1 -1
  202. package/lib/module/partials/w3m-connecting-body/utils.js.map +1 -1
  203. package/lib/module/partials/w3m-connecting-header/index.js.map +1 -1
  204. package/lib/module/partials/w3m-connecting-mobile/components/StoreLink.js.map +1 -1
  205. package/lib/module/partials/w3m-connecting-mobile/index.js.map +1 -1
  206. package/lib/module/partials/w3m-connecting-mobile/styles.js.map +1 -1
  207. package/lib/module/partials/w3m-connecting-qrcode/index.js.map +1 -1
  208. package/lib/module/partials/w3m-connecting-qrcode/styles.js.map +1 -1
  209. package/lib/module/partials/w3m-connecting-web/index.js.map +1 -1
  210. package/lib/module/partials/w3m-connecting-web/styles.js.map +1 -1
  211. package/lib/module/partials/w3m-header/index.js.map +1 -1
  212. package/lib/module/partials/w3m-header/styles.js.map +1 -1
  213. package/lib/module/partials/w3m-information-modal/index.js.map +1 -1
  214. package/lib/module/partials/w3m-information-modal/styles.js.map +1 -1
  215. package/lib/module/partials/w3m-otp-code/index.js.map +1 -1
  216. package/lib/module/partials/w3m-otp-code/styles.js.map +1 -1
  217. package/lib/module/partials/w3m-placeholder/index.js.map +1 -1
  218. package/lib/module/partials/w3m-selector-modal/index.js.map +1 -1
  219. package/lib/module/partials/w3m-selector-modal/styles.js.map +1 -1
  220. package/lib/module/partials/w3m-send-input-address/index.js +0 -1
  221. package/lib/module/partials/w3m-send-input-address/index.js.map +1 -1
  222. package/lib/module/partials/w3m-send-input-address/styles.js.map +1 -1
  223. package/lib/module/partials/w3m-send-input-token/index.js.map +1 -1
  224. package/lib/module/partials/w3m-send-input-token/styles.js.map +1 -1
  225. package/lib/module/partials/w3m-send-input-token/utils.js.map +1 -1
  226. package/lib/module/partials/w3m-snackbar/index.js.map +1 -1
  227. package/lib/module/partials/w3m-snackbar/styles.js.map +1 -1
  228. package/lib/module/partials/w3m-swap-details/index.js.map +1 -1
  229. package/lib/module/partials/w3m-swap-details/styles.js.map +1 -1
  230. package/lib/module/partials/w3m-swap-details/utils.js.map +1 -1
  231. package/lib/module/partials/w3m-swap-input/index.js.map +1 -1
  232. package/lib/module/partials/w3m-swap-input/styles.js.map +1 -1
  233. package/lib/module/utils/HelpersUtil.js.map +1 -1
  234. package/lib/module/utils/NetworkUtil.js.map +1 -1
  235. package/lib/module/utils/UiUtil.js.map +1 -1
  236. package/lib/module/views/w3m-account-default-view/components/auth-buttons.js.map +1 -1
  237. package/lib/module/views/w3m-account-default-view/components/upgrade-wallet-button.js.map +1 -1
  238. package/lib/module/views/w3m-account-default-view/index.js +2 -1
  239. package/lib/module/views/w3m-account-default-view/index.js.map +1 -1
  240. package/lib/module/views/w3m-account-default-view/styles.js.map +1 -1
  241. package/lib/module/views/w3m-account-view/index.js +5 -1
  242. package/lib/module/views/w3m-account-view/index.js.map +1 -1
  243. package/lib/module/views/w3m-account-view/styles.js.map +1 -1
  244. package/lib/module/views/w3m-all-wallets-view/index.js.map +1 -1
  245. package/lib/module/views/w3m-all-wallets-view/styles.js.map +1 -1
  246. package/lib/module/views/w3m-connect-socials-view/index.js.map +1 -1
  247. package/lib/module/views/w3m-connect-socials-view/styles.js.map +1 -1
  248. package/lib/module/views/w3m-connect-view/components/all-wallet-list.js.map +1 -1
  249. package/lib/module/views/w3m-connect-view/components/all-wallets-button.js.map +1 -1
  250. package/lib/module/views/w3m-connect-view/components/connectors-list.js +1 -1
  251. package/lib/module/views/w3m-connect-view/components/connectors-list.js.map +1 -1
  252. package/lib/module/views/w3m-connect-view/components/custom-wallet-list.js.map +1 -1
  253. package/lib/module/views/w3m-connect-view/components/recent-wallet-list.js.map +1 -1
  254. package/lib/module/views/w3m-connect-view/components/social-login-list.js.map +1 -1
  255. package/lib/module/views/w3m-connect-view/index.js.map +1 -1
  256. package/lib/module/views/w3m-connect-view/styles.js.map +1 -1
  257. package/lib/module/views/w3m-connect-view/utils.js.map +1 -1
  258. package/lib/module/views/w3m-connecting-external-view/index.js.map +1 -1
  259. package/lib/module/views/w3m-connecting-external-view/styles.js.map +1 -1
  260. package/lib/module/views/w3m-connecting-siwe-view/index.js +2 -2
  261. package/lib/module/views/w3m-connecting-siwe-view/index.js.map +1 -1
  262. package/lib/module/views/w3m-connecting-siwe-view/styles.js.map +1 -1
  263. package/lib/module/views/w3m-connecting-social-view/index.js.map +1 -1
  264. package/lib/module/views/w3m-connecting-social-view/styles.js.map +1 -1
  265. package/lib/module/views/w3m-connecting-view/index.js.map +1 -1
  266. package/lib/module/views/w3m-get-wallet-view/index.js.map +1 -1
  267. package/lib/module/views/w3m-get-wallet-view/styles.js.map +1 -1
  268. package/lib/module/views/w3m-network-switch-view/index.js.map +1 -1
  269. package/lib/module/views/w3m-network-switch-view/styles.js.map +1 -1
  270. package/lib/module/views/w3m-networks-view/index.js.map +1 -1
  271. package/lib/module/views/w3m-networks-view/styles.js.map +1 -1
  272. package/lib/module/views/w3m-onramp-checkout-view/index.js.map +1 -1
  273. package/lib/module/views/w3m-onramp-loading-view/index.js.map +1 -1
  274. package/lib/module/views/w3m-onramp-loading-view/styles.js.map +1 -1
  275. package/lib/module/views/w3m-onramp-settings-view/components/Country.js.map +1 -1
  276. package/lib/module/views/w3m-onramp-settings-view/index.js.map +1 -1
  277. package/lib/module/views/w3m-onramp-settings-view/styles.js.map +1 -1
  278. package/lib/module/views/w3m-onramp-settings-view/utils.js.map +1 -1
  279. package/lib/module/views/w3m-onramp-transaction-view/index.js +2 -2
  280. package/lib/module/views/w3m-onramp-transaction-view/index.js.map +1 -1
  281. package/lib/module/views/w3m-onramp-transaction-view/styles.js.map +1 -1
  282. package/lib/module/views/w3m-onramp-view/components/Currency.js +6 -4
  283. package/lib/module/views/w3m-onramp-view/components/Currency.js.map +1 -1
  284. package/lib/module/views/w3m-onramp-view/components/CurrencyInput.js +4 -4
  285. package/lib/module/views/w3m-onramp-view/components/CurrencyInput.js.map +1 -1
  286. package/lib/module/views/w3m-onramp-view/components/Header.js +1 -2
  287. package/lib/module/views/w3m-onramp-view/components/Header.js.map +1 -1
  288. package/lib/module/views/w3m-onramp-view/components/LoadingView.js +2 -2
  289. package/lib/module/views/w3m-onramp-view/components/LoadingView.js.map +1 -1
  290. package/lib/module/views/w3m-onramp-view/components/PaymentButton.js +103 -0
  291. package/lib/module/views/w3m-onramp-view/components/PaymentButton.js.map +1 -0
  292. package/lib/module/views/w3m-onramp-view/components/PaymentMethod.js +9 -8
  293. package/lib/module/views/w3m-onramp-view/components/PaymentMethod.js.map +1 -1
  294. package/lib/module/views/w3m-onramp-view/components/Quote.js +5 -3
  295. package/lib/module/views/w3m-onramp-view/components/Quote.js.map +1 -1
  296. package/lib/module/views/w3m-onramp-view/components/SelectPaymentModal.js +42 -55
  297. package/lib/module/views/w3m-onramp-view/components/SelectPaymentModal.js.map +1 -1
  298. package/lib/module/views/w3m-onramp-view/index.js +35 -55
  299. package/lib/module/views/w3m-onramp-view/index.js.map +1 -1
  300. package/lib/module/views/w3m-onramp-view/styles.js +4 -0
  301. package/lib/module/views/w3m-onramp-view/styles.js.map +1 -1
  302. package/lib/module/views/w3m-onramp-view/utils.js +18 -77
  303. package/lib/module/views/w3m-onramp-view/utils.js.map +1 -1
  304. package/lib/module/views/w3m-swap-preview-view/index.js.map +1 -1
  305. package/lib/module/views/w3m-swap-preview-view/styles.js.map +1 -1
  306. package/lib/module/views/w3m-swap-view/components/select-token-view/index.js.map +1 -1
  307. package/lib/module/views/w3m-swap-view/components/select-token-view/styles.js.map +1 -1
  308. package/lib/module/views/w3m-swap-view/components/select-token-view/utils.js.map +1 -1
  309. package/lib/module/views/w3m-swap-view/index.js.map +1 -1
  310. package/lib/module/views/w3m-swap-view/styles.js.map +1 -1
  311. package/lib/module/views/w3m-transactions-view/index.js.map +1 -1
  312. package/lib/module/views/w3m-unsupported-chain-view/index.js.map +1 -1
  313. package/lib/module/views/w3m-unsupported-chain-view/styles.js.map +1 -1
  314. package/lib/module/views/w3m-upgrade-email-wallet-view/index.js.map +1 -1
  315. package/lib/module/views/w3m-wallet-compatible-networks-view/index.js.map +1 -1
  316. package/lib/module/views/w3m-wallet-compatible-networks-view/styles.js.map +1 -1
  317. package/lib/module/views/w3m-wallet-receive-view/index.js.map +1 -1
  318. package/lib/module/views/w3m-wallet-receive-view/styles.js.map +1 -1
  319. package/lib/module/views/w3m-wallet-send-preview-view/components/preview-send-details.js.map +1 -1
  320. package/lib/module/views/w3m-wallet-send-preview-view/components/preview-send-pill.js.map +1 -1
  321. package/lib/module/views/w3m-wallet-send-preview-view/index.js.map +1 -1
  322. package/lib/module/views/w3m-wallet-send-preview-view/styles.js.map +1 -1
  323. package/lib/module/views/w3m-wallet-send-select-token-view/index.js.map +1 -1
  324. package/lib/module/views/w3m-wallet-send-select-token-view/styles.js.map +1 -1
  325. package/lib/module/views/w3m-wallet-send-view/index.js.map +1 -1
  326. package/lib/module/views/w3m-wallet-send-view/styles.js.map +1 -1
  327. package/lib/module/views/w3m-what-is-a-network-view/index.js.map +1 -1
  328. package/lib/module/views/w3m-what-is-a-network-view/styles.js.map +1 -1
  329. package/lib/module/views/w3m-what-is-a-wallet-view/index.js.map +1 -1
  330. package/lib/module/views/w3m-what-is-a-wallet-view/styles.js.map +1 -1
  331. package/lib/typescript/AppKit.d.ts +2 -3
  332. package/lib/typescript/AppKit.d.ts.map +1 -1
  333. package/lib/typescript/AppKitContext.d.ts +1 -1
  334. package/lib/typescript/hooks/useAccount.d.ts +1 -0
  335. package/lib/typescript/hooks/useAccount.d.ts.map +1 -1
  336. package/lib/typescript/index.d.ts +0 -3
  337. package/lib/typescript/index.d.ts.map +1 -1
  338. package/lib/typescript/modal/w3m-account-button/index.d.ts.map +1 -1
  339. package/lib/typescript/utils/HelpersUtil.d.ts +1 -1
  340. package/lib/typescript/utils/HelpersUtil.d.ts.map +1 -1
  341. package/lib/typescript/utils/NetworkUtil.d.ts +1 -1
  342. package/lib/typescript/utils/NetworkUtil.d.ts.map +1 -1
  343. package/lib/typescript/views/w3m-account-default-view/index.d.ts.map +1 -1
  344. package/lib/typescript/views/w3m-account-view/index.d.ts.map +1 -1
  345. package/lib/typescript/views/w3m-onramp-transaction-view/index.d.ts.map +1 -1
  346. package/lib/typescript/views/w3m-onramp-view/components/Currency.d.ts.map +1 -1
  347. package/lib/typescript/views/w3m-onramp-view/components/CurrencyInput.d.ts.map +1 -1
  348. package/lib/typescript/views/w3m-onramp-view/components/Header.d.ts.map +1 -1
  349. package/lib/typescript/views/w3m-onramp-view/components/PaymentButton.d.ts +13 -0
  350. package/lib/typescript/views/w3m-onramp-view/components/PaymentButton.d.ts.map +1 -0
  351. package/lib/typescript/views/w3m-onramp-view/components/PaymentMethod.d.ts +1 -1
  352. package/lib/typescript/views/w3m-onramp-view/components/PaymentMethod.d.ts.map +1 -1
  353. package/lib/typescript/views/w3m-onramp-view/components/Quote.d.ts +2 -1
  354. package/lib/typescript/views/w3m-onramp-view/components/Quote.d.ts.map +1 -1
  355. package/lib/typescript/views/w3m-onramp-view/components/SelectPaymentModal.d.ts.map +1 -1
  356. package/lib/typescript/views/w3m-onramp-view/index.d.ts.map +1 -1
  357. package/lib/typescript/views/w3m-onramp-view/styles.d.ts +4 -0
  358. package/lib/typescript/views/w3m-onramp-view/styles.d.ts.map +1 -1
  359. package/lib/typescript/views/w3m-onramp-view/utils.d.ts +2 -2
  360. package/lib/typescript/views/w3m-onramp-view/utils.d.ts.map +1 -1
  361. package/package.json +13 -10
  362. package/src/AppKit.ts +47 -29
  363. package/src/hooks/useAccount.ts +2 -1
  364. package/src/index.ts +0 -5
  365. package/src/modal/w3m-account-button/index.tsx +1 -4
  366. package/src/utils/HelpersUtil.ts +6 -5
  367. package/src/utils/NetworkUtil.ts +6 -2
  368. package/src/views/w3m-account-default-view/index.tsx +7 -1
  369. package/src/views/w3m-account-view/index.tsx +5 -0
  370. package/src/views/w3m-connecting-siwe-view/index.tsx +3 -3
  371. package/src/views/w3m-onramp-transaction-view/index.tsx +1 -2
  372. package/src/views/w3m-onramp-view/components/Currency.tsx +3 -4
  373. package/src/views/w3m-onramp-view/components/CurrencyInput.tsx +33 -28
  374. package/src/views/w3m-onramp-view/components/Header.tsx +1 -2
  375. package/src/views/w3m-onramp-view/components/LoadingView.tsx +2 -2
  376. package/src/views/w3m-onramp-view/components/PaymentButton.tsx +137 -0
  377. package/src/views/w3m-onramp-view/components/PaymentMethod.tsx +9 -8
  378. package/src/views/w3m-onramp-view/components/Quote.tsx +5 -2
  379. package/src/views/w3m-onramp-view/components/SelectPaymentModal.tsx +61 -76
  380. package/src/views/w3m-onramp-view/index.tsx +38 -67
  381. package/src/views/w3m-onramp-view/styles.ts +4 -0
  382. package/src/views/w3m-onramp-view/utils.ts +22 -92
  383. package/lib/commonjs/client.js +0 -222
  384. package/lib/commonjs/client.js.map +0 -1
  385. package/lib/module/client.js +0 -216
  386. package/lib/module/client.js.map +0 -1
  387. package/lib/typescript/client.d.ts +0 -85
  388. package/lib/typescript/client.d.ts.map +0 -1
  389. package/src/client.ts +0 -335
@@ -0,0 +1,137 @@
1
+ import {
2
+ BorderRadius,
3
+ FlexView,
4
+ Icon,
5
+ Image,
6
+ LoadingSpinner,
7
+ Pressable,
8
+ Spacing,
9
+ Text,
10
+ useTheme
11
+ } from '@reown/appkit-ui-react-native';
12
+ import { StyleSheet, View } from 'react-native';
13
+
14
+ interface PaymentButtonProps {
15
+ disabled?: boolean;
16
+ loading?: boolean;
17
+ title: string;
18
+ subtitle?: string;
19
+ paymentLogo?: string;
20
+ providerLogo?: string;
21
+ onPress: () => void;
22
+ testID?: string;
23
+ }
24
+
25
+ function PaymentButton({
26
+ disabled,
27
+ loading,
28
+ title,
29
+ subtitle,
30
+ paymentLogo,
31
+ providerLogo,
32
+ onPress,
33
+ testID
34
+ }: PaymentButtonProps) {
35
+ const Theme = useTheme();
36
+ const backgroundColor = Theme['gray-glass-005'];
37
+
38
+ return (
39
+ <Pressable
40
+ disabled={disabled || loading}
41
+ onPress={onPress}
42
+ style={styles.pressable}
43
+ testID={testID}
44
+ >
45
+ <FlexView
46
+ style={[styles.container, { backgroundColor }]}
47
+ alignItems="center"
48
+ justifyContent="space-between"
49
+ flexDirection="row"
50
+ >
51
+ <FlexView
52
+ alignItems="center"
53
+ justifyContent="center"
54
+ style={[styles.iconContainer, { backgroundColor: Theme['bg-300'] }]}
55
+ >
56
+ {paymentLogo ? (
57
+ <Image
58
+ source={paymentLogo}
59
+ style={styles.paymentLogo}
60
+ resizeMethod="resize"
61
+ resizeMode="contain"
62
+ />
63
+ ) : (
64
+ <Icon name="card" size="lg" />
65
+ )}
66
+ </FlexView>
67
+ <FlexView
68
+ flexGrow={1}
69
+ flexDirection="column"
70
+ alignItems="flex-start"
71
+ margin={['0', '0', '0', 's']}
72
+ >
73
+ <Text variant="paragraph-400" color="fg-100">
74
+ {title}
75
+ </Text>
76
+ {subtitle && (
77
+ <FlexView flexDirection="row" alignItems="center" margin={['4xs', '0', '0', '0']}>
78
+ {providerLogo && (
79
+ <>
80
+ <Text variant="small-400" color="fg-150">
81
+ via
82
+ </Text>
83
+ <Image
84
+ source={providerLogo}
85
+ style={styles.providerLogo}
86
+ resizeMethod="resize"
87
+ resizeMode="contain"
88
+ />
89
+ </>
90
+ )}
91
+ <Text variant="small-400" color="fg-150">
92
+ {subtitle}
93
+ </Text>
94
+ </FlexView>
95
+ )}
96
+ </FlexView>
97
+ {loading ? (
98
+ <LoadingSpinner size="md" color="fg-200" style={styles.rightIcon} />
99
+ ) : disabled ? (
100
+ <View />
101
+ ) : (
102
+ <Icon name="chevronRight" size="md" color="fg-200" style={styles.rightIcon} />
103
+ )}
104
+ </FlexView>
105
+ </Pressable>
106
+ );
107
+ }
108
+
109
+ const styles = StyleSheet.create({
110
+ pressable: {
111
+ borderRadius: BorderRadius.xs
112
+ },
113
+ container: {
114
+ padding: Spacing.s,
115
+ borderRadius: BorderRadius.xs
116
+ },
117
+ iconContainer: {
118
+ height: 40,
119
+ width: 40,
120
+ borderRadius: BorderRadius['3xs']
121
+ },
122
+ paymentLogo: {
123
+ height: 24,
124
+ width: 24
125
+ },
126
+ providerLogo: {
127
+ height: 16,
128
+ width: 16,
129
+ marginHorizontal: Spacing['4xs'],
130
+ borderRadius: BorderRadius['5xs']
131
+ },
132
+ rightIcon: {
133
+ marginRight: Spacing.xs
134
+ }
135
+ });
136
+
137
+ export default PaymentButton;
@@ -12,7 +12,7 @@ import {
12
12
  } from '@reown/appkit-ui-react-native';
13
13
  import { StyleSheet } from 'react-native';
14
14
 
15
- export const ITEM_SIZE = 85;
15
+ export const ITEM_SIZE = 100;
16
16
 
17
17
  interface Props {
18
18
  onPress: (item: OnRampPaymentMethod) => void;
@@ -47,7 +47,7 @@ export function PaymentMethod({ onPress, item, selected, testID }: Props) {
47
47
  source={item.logos[themeMode ?? 'light']}
48
48
  style={styles.logo}
49
49
  resizeMethod="resize"
50
- resizeMode="center"
50
+ resizeMode="contain"
51
51
  />
52
52
  {selected && (
53
53
  <IconBox
@@ -61,7 +61,7 @@ export function PaymentMethod({ onPress, item, selected, testID }: Props) {
61
61
  />
62
62
  )}
63
63
  </FlexView>
64
- <Text variant="tiny-400" color="fg-100" numberOfLines={1} style={styles.text}>
64
+ <Text variant="tiny-400" color="fg-100" numberOfLines={2} style={styles.text}>
65
65
  {item.name}
66
66
  </Text>
67
67
  </Pressable>
@@ -71,8 +71,7 @@ export function PaymentMethod({ onPress, item, selected, testID }: Props) {
71
71
  const styles = StyleSheet.create({
72
72
  container: {
73
73
  height: ITEM_SIZE,
74
- width: ITEM_SIZE,
75
- justifyContent: 'center',
74
+ width: 85,
76
75
  alignItems: 'center'
77
76
  },
78
77
  logoContainer: {
@@ -82,8 +81,8 @@ const styles = StyleSheet.create({
82
81
  marginBottom: Spacing['4xs']
83
82
  },
84
83
  logo: {
85
- width: 22,
86
- height: 22
84
+ width: 26,
85
+ height: 26
87
86
  },
88
87
  checkmark: {
89
88
  borderRadius: BorderRadius.full,
@@ -92,6 +91,8 @@ const styles = StyleSheet.create({
92
91
  right: -10
93
92
  },
94
93
  text: {
95
- marginTop: Spacing.xs
94
+ marginTop: Spacing.xs,
95
+ paddingHorizontal: Spacing['3xs'],
96
+ textAlign: 'center'
96
97
  }
97
98
  });
@@ -20,17 +20,19 @@ interface Props {
20
20
  logoURL?: string;
21
21
  onQuotePress: (item: OnRampQuote) => void;
22
22
  selected?: boolean;
23
+ testID?: string;
23
24
  }
24
25
 
25
26
  export const ITEM_HEIGHT = 64;
26
27
 
27
- export function Quote({ item, logoURL, onQuotePress, selected, tagText }: Props) {
28
+ export function Quote({ item, logoURL, onQuotePress, selected, tagText, testID }: Props) {
28
29
  const Theme = useTheme();
29
30
 
30
31
  return (
31
32
  <Pressable
32
33
  style={[styles.container, selected && { borderColor: Theme['accent-100'] }]}
33
34
  onPress={() => onQuotePress(item)}
35
+ testID={testID}
34
36
  >
35
37
  <FlexView
36
38
  justifyContent="space-between"
@@ -60,7 +62,8 @@ export function Quote({ item, logoURL, onQuotePress, selected, tagText }: Props)
60
62
  )}
61
63
  </FlexView>
62
64
  <Text variant="tiny-500">
63
- {NumberUtil.roundNumber(item.destinationAmount, 6, 5)} {item.destinationCurrencyCode}
65
+ {NumberUtil.roundNumber(item.destinationAmount, 6, 5)}{' '}
66
+ {item.destinationCurrencyCode?.split('_')[0]}
64
67
  </Text>
65
68
  </FlexView>
66
69
  </FlexView>
@@ -1,7 +1,8 @@
1
+ /* eslint-disable valtio/state-snapshot-rule */
1
2
  import { useSnapshot } from 'valtio';
2
- import { useRef, useState, useMemo } from 'react';
3
+ import { useRef, useState, useMemo, useEffect } from 'react';
3
4
  import Modal from 'react-native-modal';
4
- import { Dimensions, FlatList, StyleSheet, View } from 'react-native';
5
+ import { FlatList, StyleSheet, View } from 'react-native';
5
6
  import {
6
7
  FlexView,
7
8
  IconLink,
@@ -9,7 +10,6 @@ import {
9
10
  Text,
10
11
  useTheme,
11
12
  Separator,
12
- LoadingSpinner,
13
13
  BorderRadius
14
14
  } from '@reown/appkit-ui-react-native';
15
15
  import {
@@ -17,9 +17,8 @@ import {
17
17
  type OnRampPaymentMethod,
18
18
  type OnRampQuote
19
19
  } from '@reown/appkit-core-react-native';
20
- import { Placeholder } from '../../../partials/w3m-placeholder';
21
20
  import { Quote, ITEM_HEIGHT as QUOTE_ITEM_HEIGHT } from './Quote';
22
- import { PaymentMethod, ITEM_SIZE } from './PaymentMethod';
21
+ import { PaymentMethod } from './PaymentMethod';
23
22
 
24
23
  interface SelectPaymentModalProps {
25
24
  title?: string;
@@ -31,124 +30,110 @@ const SEPARATOR_HEIGHT = Spacing.s;
31
30
 
32
31
  export function SelectPaymentModal({ title, visible, onClose }: SelectPaymentModalProps) {
33
32
  const Theme = useTheme();
34
- const { selectedQuote, quotes } = useSnapshot(OnRampController.state);
33
+ const { selectedQuote, quotes, selectedPaymentMethod } = useSnapshot(OnRampController.state);
34
+
35
35
  const paymentMethodsRef = useRef<FlatList>(null);
36
36
  const [paymentMethods, setPaymentMethods] = useState<OnRampPaymentMethod[]>(
37
37
  OnRampController.state.paymentMethods
38
38
  );
39
39
 
40
+ const [activePaymentMethod, setActivePaymentMethod] = useState<OnRampPaymentMethod | undefined>(
41
+ OnRampController.state.selectedPaymentMethod
42
+ );
43
+
44
+ const availablePaymentMethods = useMemo(() => {
45
+ return paymentMethods.filter(
46
+ paymentMethod =>
47
+ quotes?.some(quote => quote.paymentMethodType === paymentMethod.paymentMethod)
48
+ );
49
+ }, [paymentMethods, quotes]);
50
+
51
+ const availableQuotes = useMemo(() => {
52
+ return quotes?.filter(quote => activePaymentMethod?.paymentMethod === quote.paymentMethodType);
53
+ }, [quotes, activePaymentMethod]);
54
+
40
55
  const sortedQuotes = useMemo(() => {
41
- if (!selectedQuote) {
42
- return quotes;
56
+ if (!selectedQuote || selectedQuote.paymentMethodType !== activePaymentMethod?.paymentMethod) {
57
+ return availableQuotes;
43
58
  }
44
59
 
45
60
  return [
46
61
  selectedQuote,
47
- // eslint-disable-next-line valtio/state-snapshot-rule
48
- ...(quotes?.filter(quote => quote.serviceProvider !== selectedQuote.serviceProvider) ?? [])
62
+
63
+ ...(availableQuotes?.filter(
64
+ quote => quote.serviceProvider !== selectedQuote.serviceProvider
65
+ ) ?? [])
49
66
  ];
50
- }, [quotes, selectedQuote]);
67
+ }, [availableQuotes, selectedQuote, activePaymentMethod]);
51
68
 
52
69
  const renderSeparator = () => {
53
70
  return <View style={{ height: SEPARATOR_HEIGHT }} />;
54
71
  };
55
72
 
56
73
  const handleQuotePress = (quote: OnRampQuote) => {
57
- if (quote.serviceProvider !== OnRampController.state.selectedQuote?.serviceProvider) {
74
+ if (activePaymentMethod) {
75
+ OnRampController.clearError();
58
76
  OnRampController.setSelectedQuote(quote);
77
+ OnRampController.setSelectedPaymentMethod(activePaymentMethod);
59
78
  }
60
79
  onClose();
61
80
  };
62
81
 
63
82
  const handlePaymentMethodPress = (paymentMethod: OnRampPaymentMethod) => {
64
- if (
65
- paymentMethod.paymentMethod !== OnRampController.state.selectedPaymentMethod?.paymentMethod
66
- ) {
67
- OnRampController.setSelectedPaymentMethod(paymentMethod);
68
- }
69
-
70
- const visibleItemsCount = Math.round(Dimensions.get('window').width / ITEM_SIZE);
71
-
72
- // Switch payment method to the top if there are more than visibleItemsCount payment methods
73
- if (OnRampController.state.paymentMethods.length > visibleItemsCount) {
74
- const paymentIndex = paymentMethods.findIndex(
75
- method => method.paymentMethod === paymentMethod.paymentMethod
76
- );
77
-
78
- // Switch payment if its not visible
79
- if (paymentIndex + 1 > visibleItemsCount - 1) {
80
- const realIndex = OnRampController.state.paymentMethods.findIndex(
81
- method => method.paymentMethod === paymentMethod.paymentMethod
82
- );
83
-
84
- const newPaymentMethods = [
85
- paymentMethod,
86
- ...OnRampController.state.paymentMethods.slice(0, realIndex),
87
- ...OnRampController.state.paymentMethods.slice(realIndex + 1)
88
- ];
89
- setPaymentMethods(newPaymentMethods);
90
- }
91
- }
92
- paymentMethodsRef.current?.scrollToIndex({
93
- index: 0,
94
- animated: true
95
- });
83
+ setActivePaymentMethod(paymentMethod);
96
84
  };
97
85
 
98
- const renderQuote = ({ item }: { item: OnRampQuote }) => {
86
+ const renderQuote = ({ item, index }: { item: OnRampQuote; index: number }) => {
99
87
  const logoURL = OnRampController.getServiceProviderImage(item.serviceProvider);
100
- const selected = item.serviceProvider === OnRampController.state.selectedQuote?.serviceProvider;
101
- const isBestDeal =
102
- OnRampController.state.quotes?.findIndex(
103
- quote => quote.serviceProvider === item.serviceProvider
104
- ) === 0;
105
- const tagText = isBestDeal ? 'Best Deal' : item.lowKyc ? 'Low KYC' : undefined;
88
+ const isSelected =
89
+ item.serviceProvider === OnRampController.state.selectedQuote?.serviceProvider &&
90
+ item.paymentMethodType === OnRampController.state.selectedQuote?.paymentMethodType;
91
+
92
+ const isRecommended =
93
+ availableQuotes?.findIndex(quote => quote.serviceProvider === item.serviceProvider) === 0 &&
94
+ availableQuotes?.length > 1;
95
+ const tagText = isRecommended ? 'Recommended' : item.lowKyc ? 'Low KYC' : undefined;
106
96
 
107
97
  return (
108
98
  <Quote
109
99
  item={item}
110
- selected={selected}
100
+ selected={isSelected}
111
101
  logoURL={logoURL}
112
102
  onQuotePress={() => handleQuotePress(item)}
113
103
  tagText={tagText}
114
- />
115
- );
116
- };
117
-
118
- const renderEmpty = () => {
119
- return OnRampController.state.quotesLoading ? (
120
- <FlexView
121
- alignItems="center"
122
- justifyContent="center"
123
- padding="2xl"
124
- style={styles.emptyContainer}
125
- >
126
- <LoadingSpinner />
127
- </FlexView>
128
- ) : (
129
- <Placeholder
130
- title="No providers available"
131
- description="Please select a different payment method or increase the amount"
132
- icon="warningCircle"
104
+ testID={`quote-item-${index}`}
133
105
  />
134
106
  );
135
107
  };
136
108
 
137
109
  const renderPaymentMethod = ({ item }: { item: OnRampPaymentMethod }) => {
138
110
  const parsedItem = item as OnRampPaymentMethod;
139
- const selected =
140
- parsedItem.paymentMethod === OnRampController.state.selectedPaymentMethod?.paymentMethod;
111
+ const isSelected = parsedItem.paymentMethod === activePaymentMethod?.paymentMethod;
141
112
 
142
113
  return (
143
114
  <PaymentMethod
144
115
  item={parsedItem}
145
116
  onPress={() => handlePaymentMethodPress(parsedItem)}
146
- selected={selected}
117
+ selected={isSelected}
147
118
  testID={`payment-method-item-${parsedItem.paymentMethod}`}
148
119
  />
149
120
  );
150
121
  };
151
122
 
123
+ useEffect(() => {
124
+ if (visible && OnRampController.state.selectedPaymentMethod) {
125
+ const methods = [
126
+ OnRampController.state.selectedPaymentMethod,
127
+ ...OnRampController.state.paymentMethods.filter(
128
+ m => m.paymentMethod !== OnRampController.state.selectedPaymentMethod?.paymentMethod
129
+ )
130
+ ];
131
+ //Update payment methods order
132
+ setPaymentMethods(methods);
133
+ setActivePaymentMethod(OnRampController.state.selectedPaymentMethod);
134
+ }
135
+ }, [visible]);
136
+
152
137
  return (
153
138
  <Modal
154
139
  isVisible={visible}
@@ -176,7 +161,7 @@ export function SelectPaymentModal({ title, visible, onClose }: SelectPaymentMod
176
161
  </Text>
177
162
  <FlexView>
178
163
  <FlatList
179
- data={paymentMethods}
164
+ data={availablePaymentMethods}
180
165
  renderItem={renderPaymentMethod}
181
166
  ref={paymentMethodsRef}
182
167
  style={styles.paymentMethodsContainer}
@@ -195,10 +180,10 @@ export function SelectPaymentModal({ title, visible, onClose }: SelectPaymentMod
195
180
  data={sortedQuotes}
196
181
  bounces={false}
197
182
  renderItem={renderQuote}
183
+ extraData={selectedPaymentMethod}
198
184
  contentContainerStyle={styles.listContent}
199
185
  ItemSeparatorComponent={renderSeparator}
200
186
  fadingEdgeLength={20}
201
- ListEmptyComponent={renderEmpty}
202
187
  keyExtractor={item => `${item.serviceProvider}-${item.paymentMethodType}`}
203
188
  getItemLayout={(_, index) => ({
204
189
  length: QUOTE_ITEM_HEIGHT + SEPARATOR_HEIGHT,
@@ -16,21 +16,19 @@ import {
16
16
  Button,
17
17
  FlexView,
18
18
  Image,
19
- ListItem,
20
19
  Text,
21
20
  TokenButton,
22
21
  useTheme
23
22
  } from '@reown/appkit-ui-react-native';
24
23
  import { NumberUtil, StringUtil } from '@reown/appkit-common-react-native';
25
24
  import { SelectorModal } from '../../partials/w3m-selector-modal';
26
- import { Currency } from './components/Currency';
27
- import { getPurchaseCurrencies, getCurrencySuggestedValues } from './utils';
25
+ import { Currency, ITEM_HEIGHT as CURRENCY_ITEM_HEIGHT } from './components/Currency';
26
+ import { getPurchaseCurrencies, getQuotesDebounced } from './utils';
28
27
  import { CurrencyInput } from './components/CurrencyInput';
29
28
  import { SelectPaymentModal } from './components/SelectPaymentModal';
30
- import { ITEM_HEIGHT as CURRENCY_ITEM_HEIGHT } from './components/Currency';
31
29
  import { Header } from './components/Header';
32
- import { UiUtil } from '../../utils/UiUtil';
33
30
  import { LoadingView } from './components/LoadingView';
31
+ import PaymentButton from './components/PaymentButton';
34
32
  import styles from './styles';
35
33
 
36
34
  const MemoizedCurrency = memo(Currency);
@@ -42,10 +40,10 @@ export function OnRampView() {
42
40
  const {
43
41
  purchaseCurrency,
44
42
  paymentCurrency,
45
- paymentMethods,
46
43
  selectedPaymentMethod,
47
44
  paymentAmount,
48
45
  quotesLoading,
46
+ quotes,
49
47
  selectedQuote,
50
48
  error,
51
49
  loading,
@@ -56,8 +54,6 @@ export function OnRampView() {
56
54
  const [searchValue, setSearchValue] = useState('');
57
55
  const [isCurrencyModalVisible, setIsCurrencyModalVisible] = useState(false);
58
56
  const [isPaymentMethodModalVisible, setIsPaymentMethodModalVisible] = useState(false);
59
- const providerImage = OnRampController.getServiceProviderImage(selectedQuote?.serviceProvider);
60
- const suggestedValues = getCurrencySuggestedValues(paymentCurrency);
61
57
  const purchaseCurrencyCode =
62
58
  purchaseCurrency?.currencyCode?.split('_')[0] ?? purchaseCurrency?.currencyCode;
63
59
  const networkImage = activeNetwork ? networkImages[activeNetwork.id] : undefined;
@@ -68,24 +64,41 @@ export function OnRampView() {
68
64
  }
69
65
  }, []);
70
66
 
71
- const getProviderButtonText = () => {
72
- if (selectedQuote) {
73
- return 'via ';
67
+ const getPaymentButtonTitle = () => {
68
+ if (selectedPaymentMethod) {
69
+ return selectedPaymentMethod.name;
70
+ }
71
+
72
+ if (quotesLoading) {
73
+ return 'Loading quotes';
74
74
  }
75
75
 
76
- if (!paymentAmount) {
77
- return 'Enter an amount';
76
+ if (!paymentAmount || quotes?.length === 0) {
77
+ return 'Enter a valid amount';
78
78
  }
79
79
 
80
- if (!paymentMethods?.length) {
81
- return 'No payment methods available';
80
+ return '';
81
+ };
82
+
83
+ const getPaymentButtonSubtitle = () => {
84
+ if (selectedQuote) {
85
+ return StringUtil.capitalize(selectedQuote?.serviceProvider);
86
+ }
87
+
88
+ if (selectedPaymentMethod) {
89
+ if (quotesLoading) {
90
+ return 'Loading quotes';
91
+ }
92
+
93
+ if (!paymentAmount || quotes?.length === 0) {
94
+ return 'Enter a valid amount';
95
+ }
82
96
  }
83
97
 
84
- return 'Select a provider';
98
+ return undefined;
85
99
  };
86
100
 
87
101
  const onValueChange = (value: number) => {
88
- UiUtil.animateChange();
89
102
  if (!value) {
90
103
  OnRampController.abortGetQuotes();
91
104
  OnRampController.setPaymentAmount(0);
@@ -96,13 +109,7 @@ export function OnRampView() {
96
109
  }
97
110
 
98
111
  OnRampController.setPaymentAmount(value);
99
- OnRampController.getQuotesDebounced();
100
- };
101
-
102
- const onSuggestedValuePress = (value: number) => {
103
- UiUtil.animateChange();
104
- OnRampController.setPaymentAmount(value);
105
- getQuotes();
112
+ getQuotesDebounced();
106
113
  };
107
114
 
108
115
  const handleSearch = (value: string) => {
@@ -142,10 +149,6 @@ export function OnRampView() {
142
149
  setIsPaymentMethodModalVisible(false);
143
150
  };
144
151
 
145
- useEffect(() => {
146
- getQuotes();
147
- }, [selectedPaymentMethod, getQuotes]);
148
-
149
152
  useEffect(() => {
150
153
  if (error?.type === ConstantsUtil.ONRAMP_ERROR_TYPES.FAILED_TO_LOAD) {
151
154
  SnackController.showInternalError({
@@ -196,8 +199,6 @@ export function OnRampView() {
196
199
  value={paymentAmount?.toString()}
197
200
  symbol={paymentCurrency?.currencyCode}
198
201
  error={error?.message}
199
- suggestedValues={suggestedValues}
200
- onSuggestedValuePress={onSuggestedValuePress}
201
202
  isAmountError={
202
203
  error?.type === ConstantsUtil.ONRAMP_ERROR_TYPES.AMOUNT_TOO_LOW ||
203
204
  error?.type === ConstantsUtil.ONRAMP_ERROR_TYPES.AMOUNT_TOO_HIGH ||
@@ -212,46 +213,16 @@ export function OnRampView() {
212
213
  onValueChange={onValueChange}
213
214
  style={styles.currencyInput}
214
215
  />
215
- <ListItem
216
- chevron
217
- backgroundColor="gray-glass-005"
216
+ <PaymentButton
217
+ title={getPaymentButtonTitle()}
218
+ subtitle={getPaymentButtonSubtitle()}
219
+ paymentLogo={selectedPaymentMethod?.logos[themeMode ?? 'light']}
220
+ providerLogo={OnRampController.getServiceProviderImage(selectedQuote?.serviceProvider)}
221
+ disabled={!paymentAmount || quotes?.length === 0}
218
222
  loading={quotesLoading || loading}
219
223
  onPress={() => setIsPaymentMethodModalVisible(true)}
220
- style={styles.paymentMethodButton}
221
- imageSrc={selectedPaymentMethod?.logos[themeMode ?? 'light']}
222
- imageStyle={styles.paymentMethodImage}
223
- imageContainerStyle={[
224
- styles.paymentMethodImageContainer,
225
- { backgroundColor: Theme['gray-glass-010'] }
226
- ]}
227
- disabled={!selectedPaymentMethod || !paymentAmount}
228
224
  testID="payment-method-button"
229
- >
230
- <FlexView>
231
- {selectedPaymentMethod?.name && (
232
- <Text variant="paragraph-400" color="fg-100">
233
- {selectedPaymentMethod.name}
234
- </Text>
235
- )}
236
- {getProviderButtonText() && (
237
- <FlexView flexDirection="row" alignItems="center" margin={['3xs', '0', '0', '0']}>
238
- <Text variant="small-400" color="fg-150">
239
- {getProviderButtonText()}
240
- </Text>
241
- {selectedQuote && (
242
- <>
243
- {providerImage && (
244
- <Image source={providerImage} style={styles.providerImage} />
245
- )}
246
- <Text variant="small-400" color="fg-150">
247
- {StringUtil.capitalize(selectedQuote?.serviceProvider)}
248
- </Text>
249
- </>
250
- )}
251
- </FlexView>
252
- )}
253
- </FlexView>
254
- </ListItem>
225
+ />
255
226
  <FlexView
256
227
  flexDirection="row"
257
228
  alignItems="center"
@@ -37,5 +37,9 @@ export default StyleSheet.create({
37
37
  width: 14,
38
38
  borderRadius: BorderRadius.full,
39
39
  borderWidth: 1
40
+ },
41
+ paymentButtonMock: {
42
+ borderRadius: BorderRadius.s,
43
+ height: 64
40
44
  }
41
45
  });