thirdweb 5.88.3 → 5.88.5-nightly-52cbcd2d57abf4d69ee417fe98fca815e19f2f34-20250216000400

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 (196) hide show
  1. package/dist/cjs/contract/deployment/deploy-via-autofactory.js +33 -9
  2. package/dist/cjs/contract/deployment/deploy-via-autofactory.js.map +1 -1
  3. package/dist/cjs/exports/contract.js +3 -1
  4. package/dist/cjs/exports/contract.js.map +1 -1
  5. package/dist/cjs/exports/modules.js +3 -1
  6. package/dist/cjs/exports/modules.js.map +1 -1
  7. package/dist/cjs/extensions/modules/common/installPublishedModule.js +4 -1
  8. package/dist/cjs/extensions/modules/common/installPublishedModule.js.map +1 -1
  9. package/dist/cjs/extensions/prebuilts/deploy-published.js +14 -2
  10. package/dist/cjs/extensions/prebuilts/deploy-published.js.map +1 -1
  11. package/dist/cjs/extensions/thirdweb/__generated__/IContractFactory/events/ProxyDeployedV2.js +33 -0
  12. package/dist/cjs/extensions/thirdweb/__generated__/IContractFactory/events/ProxyDeployedV2.js.map +1 -0
  13. package/dist/cjs/extensions/thirdweb/__generated__/IContractFactory/write/deployProxyByImplementationV2.js +152 -0
  14. package/dist/cjs/extensions/thirdweb/__generated__/IContractFactory/write/deployProxyByImplementationV2.js.map +1 -0
  15. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +66 -56
  16. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  17. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/PayWIthCreditCard.js +3 -1
  18. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/PayWIthCreditCard.js.map +1 -1
  19. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js +2 -2
  20. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js.map +1 -1
  21. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatScreenContent.js +13 -13
  22. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatScreenContent.js.map +1 -1
  23. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/currencies.js +6 -0
  24. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/currencies.js.map +1 -1
  25. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js +3 -1
  26. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js.map +1 -1
  27. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/BuyTokenInput.js +2 -26
  28. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/BuyTokenInput.js.map +1 -1
  29. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/FiatValue.js +1 -1
  30. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/FiatValue.js.map +1 -1
  31. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js +6 -12
  32. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js.map +1 -1
  33. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/SwapScreenContent.js +2 -2
  34. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/SwapScreenContent.js.map +1 -1
  35. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/TokenSelectorScreen.js +198 -0
  36. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/TokenSelectorScreen.js.map +1 -0
  37. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js +3 -3
  38. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js.map +1 -1
  39. package/dist/cjs/react/web/ui/ConnectWallet/screens/SignatureScreen.js +1 -1
  40. package/dist/cjs/react/web/ui/ConnectWallet/screens/SignatureScreen.js.map +1 -1
  41. package/dist/cjs/react/web/ui/components/buttons.js +11 -0
  42. package/dist/cjs/react/web/ui/components/buttons.js.map +1 -1
  43. package/dist/cjs/react/web/ui/components/token/TokenRow.js +36 -0
  44. package/dist/cjs/react/web/ui/components/token/TokenRow.js.map +1 -0
  45. package/dist/cjs/utils/abi/normalizeFunctionParams.js +6 -2
  46. package/dist/cjs/utils/abi/normalizeFunctionParams.js.map +1 -1
  47. package/dist/cjs/utils/ens/namehash.js.map +1 -1
  48. package/dist/cjs/version.js +1 -1
  49. package/dist/cjs/version.js.map +1 -1
  50. package/dist/cjs/wallets/in-app/core/wallet/index.js +1 -1
  51. package/dist/cjs/wallets/in-app/core/wallet/index.js.map +1 -1
  52. package/dist/cjs/wallets/in-app/web/lib/auth/oauth.js +7 -4
  53. package/dist/cjs/wallets/in-app/web/lib/auth/oauth.js.map +1 -1
  54. package/dist/cjs/wallets/in-app/web/lib/web-connector.js +2 -2
  55. package/dist/cjs/wallets/in-app/web/lib/web-connector.js.map +1 -1
  56. package/dist/esm/contract/deployment/deploy-via-autofactory.js +33 -9
  57. package/dist/esm/contract/deployment/deploy-via-autofactory.js.map +1 -1
  58. package/dist/esm/exports/contract.js +1 -0
  59. package/dist/esm/exports/contract.js.map +1 -1
  60. package/dist/esm/exports/modules.js +1 -0
  61. package/dist/esm/exports/modules.js.map +1 -1
  62. package/dist/esm/extensions/modules/common/installPublishedModule.js +4 -1
  63. package/dist/esm/extensions/modules/common/installPublishedModule.js.map +1 -1
  64. package/dist/esm/extensions/prebuilts/deploy-published.js +14 -2
  65. package/dist/esm/extensions/prebuilts/deploy-published.js.map +1 -1
  66. package/dist/esm/extensions/thirdweb/__generated__/IContractFactory/events/ProxyDeployedV2.js +30 -0
  67. package/dist/esm/extensions/thirdweb/__generated__/IContractFactory/events/ProxyDeployedV2.js.map +1 -0
  68. package/dist/esm/extensions/thirdweb/__generated__/IContractFactory/write/deployProxyByImplementationV2.js +145 -0
  69. package/dist/esm/extensions/thirdweb/__generated__/IContractFactory/write/deployProxyByImplementationV2.js.map +1 -0
  70. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +68 -58
  71. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  72. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/PayWIthCreditCard.js +3 -1
  73. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/PayWIthCreditCard.js.map +1 -1
  74. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js +1 -1
  75. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js.map +1 -1
  76. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatScreenContent.js +13 -13
  77. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatScreenContent.js.map +1 -1
  78. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/currencies.js +6 -0
  79. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/currencies.js.map +1 -1
  80. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js +3 -1
  81. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js.map +1 -1
  82. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/BuyTokenInput.js +3 -27
  83. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/BuyTokenInput.js.map +1 -1
  84. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/FiatValue.js +1 -1
  85. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/FiatValue.js.map +1 -1
  86. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js +6 -12
  87. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js.map +1 -1
  88. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapScreenContent.js +2 -2
  89. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapScreenContent.js.map +1 -1
  90. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TokenSelectorScreen.js +194 -0
  91. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TokenSelectorScreen.js.map +1 -0
  92. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js +1 -1
  93. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.js.map +1 -1
  94. package/dist/esm/react/web/ui/ConnectWallet/screens/SignatureScreen.js +1 -1
  95. package/dist/esm/react/web/ui/ConnectWallet/screens/SignatureScreen.js.map +1 -1
  96. package/dist/esm/react/web/ui/components/buttons.js +11 -0
  97. package/dist/esm/react/web/ui/components/buttons.js.map +1 -1
  98. package/dist/esm/react/web/ui/components/token/TokenRow.js +33 -0
  99. package/dist/esm/react/web/ui/components/token/TokenRow.js.map +1 -0
  100. package/dist/esm/utils/abi/normalizeFunctionParams.js +6 -2
  101. package/dist/esm/utils/abi/normalizeFunctionParams.js.map +1 -1
  102. package/dist/esm/utils/ens/namehash.js.map +1 -1
  103. package/dist/esm/version.js +1 -1
  104. package/dist/esm/version.js.map +1 -1
  105. package/dist/esm/wallets/in-app/core/wallet/index.js +1 -1
  106. package/dist/esm/wallets/in-app/core/wallet/index.js.map +1 -1
  107. package/dist/esm/wallets/in-app/web/lib/auth/oauth.js +5 -2
  108. package/dist/esm/wallets/in-app/web/lib/auth/oauth.js.map +1 -1
  109. package/dist/esm/wallets/in-app/web/lib/web-connector.js +2 -2
  110. package/dist/esm/wallets/in-app/web/lib/web-connector.js.map +1 -1
  111. package/dist/types/contract/deployment/deploy-via-autofactory.d.ts +8 -2
  112. package/dist/types/contract/deployment/deploy-via-autofactory.d.ts.map +1 -1
  113. package/dist/types/exports/contract.d.ts +1 -0
  114. package/dist/types/exports/contract.d.ts.map +1 -1
  115. package/dist/types/exports/modules.d.ts +1 -0
  116. package/dist/types/exports/modules.d.ts.map +1 -1
  117. package/dist/types/extensions/modules/common/installPublishedModule.d.ts +1 -0
  118. package/dist/types/extensions/modules/common/installPublishedModule.d.ts.map +1 -1
  119. package/dist/types/extensions/prebuilts/deploy-published.d.ts +2 -0
  120. package/dist/types/extensions/prebuilts/deploy-published.d.ts.map +1 -1
  121. package/dist/types/extensions/thirdweb/__generated__/IContractFactory/events/ProxyDeployedV2.d.ts +70 -0
  122. package/dist/types/extensions/thirdweb/__generated__/IContractFactory/events/ProxyDeployedV2.d.ts.map +1 -0
  123. package/dist/types/extensions/thirdweb/__generated__/IContractFactory/write/deployProxyByImplementationV2.d.ts +100 -0
  124. package/dist/types/extensions/thirdweb/__generated__/IContractFactory/write/deployProxyByImplementationV2.d.ts.map +1 -0
  125. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.d.ts.map +1 -1
  126. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/PayWIthCreditCard.d.ts.map +1 -1
  127. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatScreenContent.d.ts.map +1 -1
  128. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/currencies.d.ts +1 -0
  129. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/currencies.d.ts.map +1 -1
  130. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.d.ts.map +1 -1
  131. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/BuyTokenInput.d.ts.map +1 -1
  132. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/FiatValue.d.ts.map +1 -1
  133. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.d.ts +1 -0
  134. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.d.ts.map +1 -1
  135. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/SwapScreenContent.d.ts.map +1 -1
  136. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/{PaymentSelectionScreen.d.ts → TokenSelectorScreen.d.ts} +19 -14
  137. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/TokenSelectorScreen.d.ts.map +1 -0
  138. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.d.ts.map +1 -1
  139. package/dist/types/react/web/ui/components/buttons.d.ts.map +1 -1
  140. package/dist/types/react/web/ui/components/token/TokenRow.d.ts +14 -0
  141. package/dist/types/react/web/ui/components/token/TokenRow.d.ts.map +1 -0
  142. package/dist/types/utils/abi/normalizeFunctionParams.d.ts.map +1 -1
  143. package/dist/types/utils/ens/namehash.d.ts.map +1 -1
  144. package/dist/types/version.d.ts +1 -1
  145. package/dist/types/version.d.ts.map +1 -1
  146. package/dist/types/wallets/in-app/core/interfaces/connector.d.ts +1 -1
  147. package/dist/types/wallets/in-app/core/interfaces/connector.d.ts.map +1 -1
  148. package/dist/types/wallets/in-app/web/lib/auth/oauth.d.ts +2 -2
  149. package/dist/types/wallets/in-app/web/lib/auth/oauth.d.ts.map +1 -1
  150. package/dist/types/wallets/in-app/web/lib/web-connector.d.ts +1 -1
  151. package/dist/types/wallets/in-app/web/lib/web-connector.d.ts.map +1 -1
  152. package/package.json +1 -1
  153. package/src/contract/deployment/deploy-via-autofactory.test.ts +166 -0
  154. package/src/contract/deployment/deploy-via-autofactory.ts +50 -10
  155. package/src/exports/contract.ts +1 -0
  156. package/src/exports/modules.ts +1 -0
  157. package/src/extensions/modules/common/installPublishedModule.ts +5 -0
  158. package/src/extensions/prebuilts/deploy-published.ts +18 -2
  159. package/src/extensions/thirdweb/__generated__/IContractFactory/events/ProxyDeployedV2.ts +55 -0
  160. package/src/extensions/thirdweb/__generated__/IContractFactory/write/deployProxyByImplementationV2.ts +184 -0
  161. package/src/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.tsx +132 -86
  162. package/src/react/web/ui/ConnectWallet/screens/Buy/PayWIthCreditCard.tsx +6 -1
  163. package/src/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.tsx +1 -1
  164. package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatScreenContent.tsx +67 -66
  165. package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/currencies.tsx +7 -0
  166. package/src/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.ts +3 -1
  167. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/BuyTokenInput.tsx +9 -75
  168. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/FiatValue.tsx +3 -1
  169. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.tsx +13 -41
  170. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/SwapScreenContent.tsx +59 -53
  171. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/TokenSelectorScreen.tsx +437 -0
  172. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/TransferConfirmationScreen.tsx +1 -1
  173. package/src/react/web/ui/ConnectWallet/screens/SignatureScreen.tsx +1 -1
  174. package/src/react/web/ui/components/buttons.tsx +12 -0
  175. package/src/react/web/ui/components/token/TokenRow.tsx +111 -0
  176. package/src/utils/abi/normalizeFunctionParams.test.ts +26 -1
  177. package/src/utils/abi/normalizeFunctionParams.ts +9 -4
  178. package/src/utils/ens/namehash.ts +4 -1
  179. package/src/version.ts +1 -1
  180. package/src/wallets/in-app/core/interfaces/connector.ts +1 -1
  181. package/src/wallets/in-app/core/wallet/index.ts +1 -1
  182. package/src/wallets/in-app/web/lib/auth/oauth.ts +6 -3
  183. package/src/wallets/in-app/web/lib/web-connector.ts +3 -3
  184. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.js +0 -85
  185. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.js.map +0 -1
  186. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/PaymentSelectionScreen.js +0 -142
  187. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/PaymentSelectionScreen.js.map +0 -1
  188. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.js +0 -81
  189. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.js.map +0 -1
  190. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/PaymentSelectionScreen.js +0 -139
  191. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/PaymentSelectionScreen.js.map +0 -1
  192. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.d.ts +0 -22
  193. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.d.ts.map +0 -1
  194. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/PaymentSelectionScreen.d.ts.map +0 -1
  195. package/src/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.tsx +0 -220
  196. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/PaymentSelectionScreen.tsx +0 -263
@@ -1,263 +0,0 @@
1
- import { IdCardIcon } from "@radix-ui/react-icons";
2
- import { useQuery } from "@tanstack/react-query";
3
- import type { Chain } from "../../../../../../../chains/types.js";
4
- import { getCachedChain } from "../../../../../../../chains/utils.js";
5
- import type { ThirdwebClient } from "../../../../../../../client/client.js";
6
- import { NATIVE_TOKEN_ADDRESS } from "../../../../../../../constants/addresses.js";
7
- import type { Wallet } from "../../../../../../../wallets/interfaces/wallet.js";
8
- import {
9
- type GetWalletBalanceResult,
10
- getWalletBalance,
11
- } from "../../../../../../../wallets/utils/getWalletBalance.js";
12
- import type { WalletId } from "../../../../../../../wallets/wallet-types.js";
13
- import { useCustomTheme } from "../../../../../../core/design-system/CustomThemeProvider.js";
14
- import {
15
- iconSize,
16
- radius,
17
- spacing,
18
- } from "../../../../../../core/design-system/index.js";
19
- import type { PayUIOptions } from "../../../../../../core/hooks/connection/ConnectButtonProps.js";
20
- import { useChainMetadata } from "../../../../../../core/hooks/others/useChainQuery.js";
21
- import { useActiveAccount } from "../../../../../../core/hooks/wallets/useActiveAccount.js";
22
- import { useConnectedWallets } from "../../../../../../core/hooks/wallets/useConnectedWallets.js";
23
- import type {
24
- SupportedTokens,
25
- TokenInfo,
26
- } from "../../../../../../core/utils/defaultTokens.js";
27
- import { LoadingScreen } from "../../../../../wallets/shared/LoadingScreen.js";
28
- import { Spacer } from "../../../../components/Spacer.js";
29
- import { Container } from "../../../../components/basic.js";
30
- import { Button } from "../../../../components/buttons.js";
31
- import { Text } from "../../../../components/text.js";
32
- import { OutlineWalletIcon } from "../../../icons/OutlineWalletIcon.js";
33
- import { type ERC20OrNativeToken, isNativeToken } from "../../nativeToken.js";
34
- import { WalletRowWithBalances } from "../WalletSelectorButton.js";
35
-
36
- export type TokenBalance = {
37
- balance: GetWalletBalanceResult;
38
- chain: Chain;
39
- token: TokenInfo;
40
- };
41
-
42
- export function PaymentSelectionScreen(props: {
43
- client: ThirdwebClient;
44
- mode: PayUIOptions["mode"];
45
- showAllWallets: boolean;
46
- sourceSupportedTokens: SupportedTokens | undefined;
47
- toChain: Chain;
48
- toToken: ERC20OrNativeToken;
49
- tokenAmount: string;
50
- wallets: Wallet[] | undefined;
51
- onSelect: (wallet: Wallet, token: TokenInfo, chain: Chain) => void;
52
- onSelectFiat: () => void;
53
- onBack: () => void;
54
- onConnect: () => void;
55
- hiddenWallets?: WalletId[];
56
- payWithFiatEnabled: boolean;
57
- }) {
58
- const theme = useCustomTheme();
59
- const connectedWallets = useConnectedWallets();
60
-
61
- // if all wallets are connected and showAll wallets is disabled, hide the connect button
62
- const hideConnectButton =
63
- !props.showAllWallets &&
64
- props.wallets?.every((w) => connectedWallets.includes(w));
65
-
66
- const chainInfo = useChainMetadata(props.toChain);
67
- const activeAccount = useActiveAccount();
68
-
69
- const walletsAndBalances = useQuery({
70
- queryKey: [
71
- "wallets-and-balances",
72
- connectedWallets.map((w) => w.getAccount()?.address),
73
- props.sourceSupportedTokens,
74
- props.toChain.id,
75
- props.toToken,
76
- props.tokenAmount,
77
- props.mode,
78
- activeAccount?.address,
79
- ],
80
- queryFn: async () => {
81
- // in parallel, get the balances of all the wallets on each of the sourceSupportedTokens
82
- const walletBalanceMap = new Map<Wallet, TokenBalance[]>();
83
-
84
- const balancePromises = connectedWallets.flatMap((wallet) => {
85
- const account = wallet.getAccount();
86
- if (!account) return [];
87
- walletBalanceMap.set(wallet, []);
88
-
89
- // inject the destination token too since it can be used as well to pay/transfer
90
- const toToken = isNativeToken(props.toToken)
91
- ? {
92
- address: NATIVE_TOKEN_ADDRESS,
93
- name: chainInfo.data?.nativeCurrency.name || "",
94
- symbol: chainInfo.data?.nativeCurrency.symbol || "",
95
- icon: chainInfo.data?.icon?.url,
96
- }
97
- : props.toToken;
98
-
99
- const tokens = {
100
- ...props.sourceSupportedTokens,
101
- [props.toChain.id]: [
102
- toToken,
103
- ...(props.sourceSupportedTokens?.[props.toChain.id] || []),
104
- ],
105
- };
106
-
107
- return Object.entries(tokens).flatMap(([chainId, tokens]) => {
108
- return tokens.map(async (token) => {
109
- try {
110
- const chain = getCachedChain(Number(chainId));
111
- const balance = await getWalletBalance({
112
- address: account.address,
113
- chain,
114
- tokenAddress: isNativeToken(token) ? undefined : token.address,
115
- client: props.client,
116
- });
117
-
118
- // show the token if:
119
- // - its not the destination token and balance is greater than 0
120
- // - its the destination token and balance is greater than the token amount AND we the account is not the default account in fund_wallet mode
121
- const shouldInclude =
122
- token.address === toToken.address &&
123
- chain.id === props.toChain.id
124
- ? props.mode === "fund_wallet" &&
125
- account.address === activeAccount?.address
126
- ? false
127
- : Number(balance.displayValue) > Number(props.tokenAmount)
128
- : balance.value > 0n;
129
-
130
- if (shouldInclude) {
131
- const existingBalances = walletBalanceMap.get(wallet) || [];
132
- existingBalances.push({ balance, chain, token });
133
- existingBalances.sort((a, b) => {
134
- if (
135
- a.chain.id === props.toChain.id &&
136
- a.token.address === toToken.address
137
- )
138
- return -1;
139
- if (
140
- b.chain.id === props.toChain.id &&
141
- b.token.address === toToken.address
142
- )
143
- return 1;
144
- if (a.chain.id === props.toChain.id) return -1;
145
- if (b.chain.id === props.toChain.id) return 1;
146
- return a.chain.id > b.chain.id ? 1 : -1;
147
- });
148
- }
149
- } catch (error) {
150
- console.error(
151
- `Failed to fetch balance for wallet ${wallet.id} on chain ${chainId} for token ${token.symbol}:`,
152
- error,
153
- );
154
- }
155
- });
156
- });
157
- });
158
-
159
- await Promise.all(balancePromises);
160
- return walletBalanceMap;
161
- },
162
- enabled: !!props.sourceSupportedTokens && !!chainInfo.data,
163
- });
164
-
165
- if (walletsAndBalances.isLoading || !walletsAndBalances.data) {
166
- return <LoadingScreen />;
167
- }
168
-
169
- const filteredWallets = Array.from(walletsAndBalances.data?.entries() || [])
170
- .filter(([w]) => !props.hiddenWallets?.includes(w.id))
171
- .filter(([, balances]) => {
172
- const hasEnoughBalance = balances.some((b) => b.balance.value > 0);
173
- return hasEnoughBalance;
174
- });
175
-
176
- return (
177
- <Container>
178
- <Container flex="column" gap="xs">
179
- {filteredWallets.length === 0 && (
180
- <Container flex="column" gap="xs" py="md">
181
- <Text size="xs" color="secondaryText" center>
182
- <i>Insufficient funds in connected wallets</i>
183
- </Text>
184
- </Container>
185
- )}
186
- {filteredWallets.map(([w, balances]) => {
187
- const address = w.getAccount()?.address;
188
- if (!address) return null;
189
- return (
190
- <WalletRowWithBalances
191
- key={w.id}
192
- wallet={w}
193
- balances={balances}
194
- client={props.client}
195
- address={address}
196
- onClick={props.onSelect}
197
- />
198
- );
199
- })}
200
- {!hideConnectButton && (
201
- <Button
202
- variant="secondary"
203
- fullWidth
204
- onClick={props.onConnect}
205
- gap="xs"
206
- bg="tertiaryBg"
207
- style={{
208
- borderRadius: radius.lg,
209
- border: `1px solid ${theme.colors.borderColor}`,
210
- padding: spacing.sm,
211
- }}
212
- >
213
- <Container
214
- flex="row"
215
- gap="sm"
216
- center="y"
217
- expand
218
- color="secondaryIconColor"
219
- >
220
- <OutlineWalletIcon size={iconSize.md} />
221
- <Text size="sm" color="primaryText">
222
- Pay with another wallet
223
- </Text>
224
- </Container>
225
- </Button>
226
- )}
227
- {props.payWithFiatEnabled && (
228
- <Button
229
- variant="secondary"
230
- fullWidth
231
- gap="xs"
232
- bg="tertiaryBg"
233
- onClick={props.onSelectFiat}
234
- style={{
235
- borderRadius: radius.lg,
236
- border: `1px solid ${theme.colors.borderColor}`,
237
- padding: spacing.sm,
238
- }}
239
- >
240
- <Container
241
- flex="row"
242
- gap="sm"
243
- center="y"
244
- expand
245
- color="secondaryIconColor"
246
- >
247
- <IdCardIcon
248
- style={{
249
- width: iconSize.md,
250
- height: iconSize.md,
251
- }}
252
- />
253
- <Text size="sm" color="primaryText">
254
- Pay with credit card
255
- </Text>
256
- </Container>
257
- </Button>
258
- )}
259
- </Container>
260
- <Spacer y="sm" />
261
- </Container>
262
- );
263
- }