diff --git a/packages/wallet-widget/src/views/Search/SearchTokens.tsx b/packages/wallet-widget/src/views/Search/SearchTokens.tsx
index 576aaf1d2..ec732203a 100644
--- a/packages/wallet-widget/src/views/Search/SearchTokens.tsx
+++ b/packages/wallet-widget/src/views/Search/SearchTokens.tsx
@@ -1,9 +1,8 @@
-import { useGetTokenBalancesSummary } from '@0xsequence/hooks'
-import { ContractVerificationStatus } from '@0xsequence/indexer'
import { useObservable } from 'micro-observables'
import { TokenList } from '../../components/SearchLists'
import { useNavigation, useSettings } from '../../hooks'
+import { useGetAllTokensDetails } from '../../hooks'
import { TokenBalanceWithPrice } from '../../utils'
export const SearchTokens = () => {
@@ -13,13 +12,10 @@ export const SearchTokens = () => {
const selectedWallets = useObservable(selectedWalletsObservable)
const selectedNetworks = useObservable(selectedNetworksObservable)
- const { data: tokenBalancesData = [], isPending: isPendingTokenBalances } = useGetTokenBalancesSummary({
+ const { data: tokenBalancesData, isLoading } = useGetAllTokensDetails({
+ accountAddresses: selectedWallets.map(wallet => wallet.address),
chainIds: selectedNetworks,
- filter: {
- accountAddresses: selectedWallets.map(wallet => wallet.address),
- contractStatus: hideUnlistedTokens ? ContractVerificationStatus.VERIFIED : ContractVerificationStatus.ALL,
- omitNativeBalances: false
- }
+ hideUnlistedTokens
})
const handleTokenClick = (balance: TokenBalanceWithPrice) => {
@@ -37,7 +33,7 @@ export const SearchTokens = () => {
diff --git a/packages/wallet-widget/src/views/Send/SendCoin.tsx b/packages/wallet-widget/src/views/Send/SendCoin.tsx
index 7745511ca..03c762cf7 100644
--- a/packages/wallet-widget/src/views/Send/SendCoin.tsx
+++ b/packages/wallet-widget/src/views/Send/SendCoin.tsx
@@ -25,12 +25,12 @@ import {
} from '@0xsequence/design-system'
import {
useClearCachedBalances,
- useGetTokenBalancesSummary,
useGetCoinPrices,
useGetExchangeRate,
- useIndexerClient
+ useIndexerClient,
+ useGetSingleTokenBalance
} from '@0xsequence/hooks'
-import { ContractVerificationStatus, TokenBalance } from '@0xsequence/indexer'
+import { TokenBalance } from '@0xsequence/indexer'
import { useState, ChangeEvent, useRef, useEffect } from 'react'
import { encodeFunctionData, formatUnits, parseUnits, toHex, zeroAddress, Hex } from 'viem'
import { useAccount, useChainId, useSwitchChain, useConfig, usePublicClient, useWalletClient } from 'wagmi'
@@ -83,27 +83,23 @@ export const SendCoin = ({ chainId, contractAddress }: SendCoinProps) => {
const checkFeeOptions = useCheckWaasFeeOptions()
const [pendingFeeOption, confirmFeeOption, _rejectFeeOption] = useWaasFeeOptions()
- const { data: balances = [], isPending: isPendingBalances } = useGetTokenBalancesSummary({
- chainIds: [chainId],
- filter: {
- accountAddresses: [accountAddress],
- contractStatus: ContractVerificationStatus.ALL,
- contractWhitelist: [contractAddress],
- omitNativeBalances: false
- }
+ const { data: tokenBalance, isLoading: isLoadingBalances } = useGetSingleTokenBalance({
+ chainId,
+ contractAddress,
+ accountAddress
})
+
const nativeTokenInfo = getNativeTokenInfoByChainId(chainId, chains)
- const tokenBalance = (balances as TokenBalance[]).find(b => b.contractAddress === contractAddress)
- const { data: coinPrices = [], isPending: isPendingCoinPrices } = useGetCoinPrices([
+ const { data: coinPrices = [], isLoading: isLoadingCoinPrices } = useGetCoinPrices([
{
chainId,
contractAddress
}
])
- const { data: conversionRate = 1, isPending: isPendingConversionRate } = useGetExchangeRate(fiatCurrency.symbol)
+ const { data: conversionRate = 1, isLoading: isLoadingConversionRate } = useGetExchangeRate(fiatCurrency.symbol)
- const isPending = isPendingBalances || isPendingCoinPrices || isPendingConversionRate
+ const isLoading = isLoadingBalances || isLoadingCoinPrices || isLoadingConversionRate
// Handle fee option confirmation when pendingFeeOption is available
useEffect(() => {
@@ -117,7 +113,7 @@ export const SendCoin = ({ chainId, contractAddress }: SendCoinProps) => {
setIsBackButtonEnabled(!showConfirmation)
}, [showConfirmation, setIsBackButtonEnabled])
- if (isPending) {
+ if (isLoading) {
return null
}
diff --git a/packages/wallet-widget/src/views/Send/SendCollectible.tsx b/packages/wallet-widget/src/views/Send/SendCollectible.tsx
index 84895f989..8b7cebffc 100644
--- a/packages/wallet-widget/src/views/Send/SendCollectible.tsx
+++ b/packages/wallet-widget/src/views/Send/SendCollectible.tsx
@@ -24,8 +24,8 @@ import {
Card,
useToast
} from '@0xsequence/design-system'
-import { useGetTokenBalancesDetails, useClearCachedBalances, useIndexerClient } from '@0xsequence/hooks'
-import { ContractType, ContractVerificationStatus, TokenBalance } from '@0xsequence/indexer'
+import { useClearCachedBalances, useIndexerClient, useGetSingleTokenBalance } from '@0xsequence/hooks'
+import { ContractType, TokenBalance } from '@0xsequence/indexer'
import { useRef, useState, ChangeEvent, useEffect } from 'react'
import { encodeFunctionData, formatUnits, parseUnits, toHex, Hex } from 'viem'
import { useAccount, useChainId, useSwitchChain, useConfig, usePublicClient, useWalletClient } from 'wagmi'
@@ -79,18 +79,13 @@ export const SendCollectible = ({ chainId, contractAddress, tokenId }: SendColle
const checkFeeOptions = useCheckWaasFeeOptions()
const [pendingFeeOption, confirmFeeOption, _rejectFeeOption] = useWaasFeeOptions()
- const { data: dataTokens, isPending: isPendingBalances } = useGetTokenBalancesDetails({
- filter: {
- accountAddresses: [accountAddress],
- contractStatus: ContractVerificationStatus.ALL,
- contractWhitelist: [contractAddress],
- omitNativeBalances: false
- },
- chainIds: [chainId]
+ const { data: tokenBalance, isLoading: isLoadingBalances } = useGetSingleTokenBalance({
+ chainId,
+ contractAddress,
+ accountAddress,
+ tokenId
})
- const tokenBalance = dataTokens && dataTokens.length > 0 ? dataTokens.find(balance => balance.tokenID === tokenId) : undefined
-
let contractType: ContractType | undefined
if (tokenBalance) {
contractType = tokenBalance.contractType
@@ -122,9 +117,9 @@ export const SendCollectible = ({ chainId, contractAddress, tokenId }: SendColle
const nativeTokenInfo = getNativeTokenInfoByChainId(chainId, chains)
- const isPending = isPendingBalances
+ const isLoading = isLoadingBalances
- if (isPending) {
+ if (isLoading) {
return null
}
diff --git a/packages/wallet-widget/src/views/Send/SendGeneral.tsx b/packages/wallet-widget/src/views/Send/SendGeneral.tsx
index d0afa9b36..35b26d9d4 100644
--- a/packages/wallet-widget/src/views/Send/SendGeneral.tsx
+++ b/packages/wallet-widget/src/views/Send/SendGeneral.tsx
@@ -1,11 +1,9 @@
import { useWallets } from '@0xsequence/connect'
import { TabsHeader, TabsContent, TabsRoot } from '@0xsequence/design-system'
-import { useGetTokenBalancesDetails, useGetTokenBalancesSummary } from '@0xsequence/hooks'
-import { ContractVerificationStatus } from '@0xsequence/indexer'
import { useState } from 'react'
import { CollectiblesList, TokenList } from '../../components/SearchLists'
-import { useSettings, useNavigation } from '../../hooks'
+import { useSettings, useNavigation, useGetAllTokensDetails } from '../../hooks'
import { TokenBalanceWithPrice } from '../../utils/tokens'
export const SendGeneral = () => {
@@ -16,22 +14,11 @@ export const SendGeneral = () => {
const activeWallet = wallets.find(wallet => wallet.isActive)
- const { data: tokenBalancesData = [], isPending: isPendingTokenBalances } = useGetTokenBalancesSummary({
+ const { data: tokenBalancesData = [], isLoading: isLoadingTokenBalances } = useGetAllTokensDetails({
+ accountAddresses: [activeWallet?.address || ''],
chainIds: allNetworks,
- filter: {
- accountAddresses: [activeWallet?.address || ''],
- contractStatus: hideUnlistedTokens ? ContractVerificationStatus.VERIFIED : ContractVerificationStatus.ALL,
- omitNativeBalances: false
- }
- })
-
- const { data: collectibleBalancesData = [], isPending: isPendingCollectibleBalances } = useGetTokenBalancesDetails({
- chainIds: allNetworks,
- filter: {
- accountAddresses: [activeWallet?.address || ''],
- contractStatus: hideUnlistedTokens ? ContractVerificationStatus.VERIFIED : ContractVerificationStatus.ALL,
- omitNativeBalances: false
- }
+ contractWhitelist: [],
+ hideUnlistedTokens
})
const handleTokenClick = (token: TokenBalanceWithPrice) => {
@@ -72,15 +59,15 @@ export const SendGeneral = () => {
{
const { setNavigation } = useNavigation()
diff --git a/packages/wallet-widget/src/views/Swap/CoinInput.tsx b/packages/wallet-widget/src/views/Swap/CoinInput.tsx
index 0156940ab..8f7fee68d 100644
--- a/packages/wallet-widget/src/views/Swap/CoinInput.tsx
+++ b/packages/wallet-widget/src/views/Swap/CoinInput.tsx
@@ -2,8 +2,7 @@ import { Button, NumericInput, Text } from '@0xsequence/design-system'
import { ChangeEvent, useEffect, useState } from 'react'
import { formatUnits } from 'viem'
-import { useSettings } from '../../hooks'
-import { useSwap } from '../../hooks/useSwap'
+import { useSettings, useSwap } from '../../hooks'
import { formatFiatBalance, decimalsToWei } from '../../utils/formatBalance'
export const CoinInput = ({ type, disabled }: { type: 'from' | 'to'; disabled?: boolean }) => {
diff --git a/packages/wallet-widget/src/views/Swap/CoinSelect.tsx b/packages/wallet-widget/src/views/Swap/CoinSelect.tsx
index 6f41a9e24..eb8efc313 100644
--- a/packages/wallet-widget/src/views/Swap/CoinSelect.tsx
+++ b/packages/wallet-widget/src/views/Swap/CoinSelect.tsx
@@ -5,8 +5,7 @@ import { useChains } from 'wagmi'
import { CoinRow } from '../../components/SearchLists/TokenList/CoinRow'
import { SlideupDrawer } from '../../components/Select/SlideupDrawer'
-import { useSettings } from '../../hooks'
-import { useSwap } from '../../hooks/useSwap'
+import { useSettings, useSwap } from '../../hooks'
import { TokenBalanceWithPrice } from '../../utils'
import { formatTokenInfo } from '../../utils/formatBalance'
diff --git a/packages/wallet-widget/src/views/Swap/Swap.tsx b/packages/wallet-widget/src/views/Swap/Swap.tsx
index b8c1c99a5..aa12b905a 100644
--- a/packages/wallet-widget/src/views/Swap/Swap.tsx
+++ b/packages/wallet-widget/src/views/Swap/Swap.tsx
@@ -5,8 +5,7 @@ import { useAccount, useChainId } from 'wagmi'
import { NetworkSelect } from '../../components/Select/NetworkSelect'
import { HEADER_HEIGHT_WITH_LABEL } from '../../constants'
-import { useSettings } from '../../hooks'
-import { useSwap } from '../../hooks/useSwap'
+import { useSettings, useSwap } from '../../hooks'
import { CoinInput } from './CoinInput'
import { CoinSelect } from './CoinSelect'
@@ -40,7 +39,12 @@ export const Swap = () => {
}
})
- const coinBalances = tokenBalances?.filter(c => c.contractType !== 'ERC1155' && c.contractType !== 'ERC721') || []
+ // TODO: add new Lifi endpoints to get buy token as well as supported networks GetLifiChains and GetLifiTokens
+
+ const coinBalances =
+ tokenBalances?.pages
+ .flatMap(page => page.balances)
+ .filter(c => c.contractType !== 'ERC1155' && c.contractType !== 'ERC721') || []
const { data: coinPrices = [] } = useGetCoinPrices(
coinBalances.map(token => ({
diff --git a/packages/wallet-widget/src/views/SwapCoin/SwapList.tsx b/packages/wallet-widget/src/views/SwapCoin/SwapList.tsx
index 235e467f0..880752e5b 100644
--- a/packages/wallet-widget/src/views/SwapCoin/SwapList.tsx
+++ b/packages/wallet-widget/src/views/SwapCoin/SwapList.tsx
@@ -95,7 +95,7 @@ export const SwapList = ({ chainId, contractAddress, amount }: SwapListProps) =>
const quoteFetchInProgress = isLoadingSwapQuote
- const isLoading = swapPricesIsLoading || isLoadingCurrencyInfo
+ const isLoading = swapPricesIsLoading || isLoadingCurrencyInfo || isLoadingSwapQuote
const onClickProceed = async () => {
if (!userAddress || !publicClient || !walletClient || !connector) {
diff --git a/packages/wallet-widget/src/views/SwapCoin/index.tsx b/packages/wallet-widget/src/views/SwapCoin/index.tsx
index 1bd89da4d..3bbc0b70f 100644
--- a/packages/wallet-widget/src/views/SwapCoin/index.tsx
+++ b/packages/wallet-widget/src/views/SwapCoin/index.tsx
@@ -1,7 +1,7 @@
import { compareAddress, getNativeTokenInfoByChainId } from '@0xsequence/connect'
import { Button, ChevronRightIcon, Text, NumericInput } from '@0xsequence/design-system'
-import { useGetTokenBalancesSummary, useGetCoinPrices, useGetExchangeRate } from '@0xsequence/hooks'
-import { ContractVerificationStatus, TokenBalance } from '@0xsequence/indexer'
+import { useGetCoinPrices, useGetExchangeRate, useGetSingleTokenBalance } from '@0xsequence/hooks'
+import { TokenBalance } from '@0xsequence/indexer'
import { useRef, useState, ChangeEvent } from 'react'
import { parseUnits, zeroAddress } from 'viem'
import { useAccount, useConfig } from 'wagmi'
@@ -25,28 +25,23 @@ export const SwapCoin = ({ contractAddress, chainId }: SwapCoinProps) => {
const { fiatCurrency } = useSettings()
const [amount, setAmount] = useState('0')
- const { data: balances = [], isPending: isPendingBalances } = useGetTokenBalancesSummary({
- chainIds: [chainId],
- filter: {
- accountAddresses: [accountAddress],
- contractStatus: ContractVerificationStatus.ALL,
- contractWhitelist: [contractAddress],
- omitNativeBalances: false
- }
+ const { data: tokenBalance, isLoading: isLoadingBalances } = useGetSingleTokenBalance({
+ chainId,
+ contractAddress,
+ accountAddress: accountAddress || ''
})
const nativeTokenInfo = getNativeTokenInfoByChainId(chainId, chains)
- const tokenBalance = (balances as TokenBalance[]).find(b => b.contractAddress === contractAddress)
- const { data: coinPrices = [], isPending: isPendingCoinPrices } = useGetCoinPrices([
+ const { data: coinPrices = [], isLoading: isLoadingCoinPrices } = useGetCoinPrices([
{
chainId,
contractAddress
}
])
- const { data: conversionRate = 1, isPending: isPendingConversionRate } = useGetExchangeRate(fiatCurrency.symbol)
+ const { data: conversionRate = 1, isLoading: isLoadingConversionRate } = useGetExchangeRate(fiatCurrency.symbol)
- const isPending = isPendingBalances || isPendingCoinPrices || isPendingConversionRate
+ const isLoading = isLoadingBalances || isLoadingCoinPrices || isLoadingConversionRate
const handleChangeAmount = (ev: ChangeEvent) => {
const { value } = ev.target
@@ -69,7 +64,7 @@ export const SwapCoin = ({ contractAddress, chainId }: SwapCoinProps) => {
})
}
- if (isPending) {
+ if (isLoading) {
return null
}
diff --git a/packages/wallet-widget/src/views/TransactionDetails/index.tsx b/packages/wallet-widget/src/views/TransactionDetails/index.tsx
index d36c0eafa..5e0498b41 100644
--- a/packages/wallet-widget/src/views/TransactionDetails/index.tsx
+++ b/packages/wallet-widget/src/views/TransactionDetails/index.tsx
@@ -62,16 +62,16 @@ export const TransactionDetails = ({ transaction }: TransactionDetailProps) => {
}
})
- const { data: coinPricesData, isPending: isPendingCoinPrices } = useGetCoinPrices(coins)
+ const { data: coinPricesData, isLoading: isLoadingCoinPrices } = useGetCoinPrices(coins)
- const { data: collectiblePricesData, isPending: isPendingCollectiblePrices } = useGetCollectiblePrices(collectibles)
+ const { data: collectiblePricesData, isLoading: isLoadingCollectiblePrices } = useGetCollectiblePrices(collectibles)
- const { data: conversionRate = 1, isPending: isPendingConversionRate } = useGetExchangeRate(fiatCurrency.symbol)
+ const { data: conversionRate = 1, isLoading: isLoadingConversionRate } = useGetExchangeRate(fiatCurrency.symbol)
const arePricesLoading =
- (coins.length > 0 && isPendingCoinPrices) ||
- (collectibles.length > 0 && isPendingCollectiblePrices) ||
- isPendingConversionRate
+ (coins.length > 0 && isLoadingCoinPrices) ||
+ (collectibles.length > 0 && isLoadingCollectiblePrices) ||
+ isLoadingConversionRate
const nativeTokenInfo = getNativeTokenInfoByChainId(transaction.chainId, chains)