[SOLVED] Web3Api.account.getTokenBalances with options still default to 'Eth'

Hello Moralis Team,

Just tried getting balances for BSC with Web3Api.account.getTokenBalances

What am I doing wrong?

export function useMoralisFetchBalances() {
  const [data, setData] = useState(null)
  const [isLoading, setIsLoading] = useState(true)
  const [fetchError, setFetchError] = useState(false)
  const { enableWeb3, isWeb3Enabled, chainId } = useMoralis()
  const { account } = useActiveWeb3React()
  const Web3Api = useMoralisWeb3Api()
  console.log(chainId, 'chainId')
  useEffect( () => {
    const fetchBalances = async () => {
      try {
        if (chainId && account ) {
          const options = {
            chainId,
            address: account
          }
          setIsLoading(true)
          const balances = await Web3Api.account.getTokenBalances(options)
          setData(balances)
          setIsLoading(false)
        }
      } catch (error) {
        console.error('Unable to fetch data:', error)
        setFetchError(true)
        setIsLoading(false)
      }
    }

    if (!isWeb3Enabled) {
      enableWeb3()
    } else {
      fetchBalances()
    }
  }, [Web3Api.account, account, chainId, enableWeb3, isWeb3Enabled])

  return { data , isLoading, fetchError}
}

ChainId equals to 0x38 (ChainId 56, BSC)
Result equals to balances of the account on Eth.

Documentation https://docs.moralis.io/moralis-dapp/web3-api/account#gettokenbalances states that Eth should be a default chain if no options have been specified. So for some reason it is not reading my options object :thinking:

Thanks for help!

https://docs.moralis.io/moralis-dapp/web3-api/account#gettokenbalances

const options = {
  chain: "bsc",
  address: "0x3d6c0e79a1239df0039ec16Cc80f7A343b6C530e",
  to_block: "10253391",
};
const balances = await Moralis.Web3API.account.getTokenBalances(options);

it looks like it uses chain as a key. I don’t see chain key in that code in options.

True! My bad.

Thanks @cryptokid!

You are the best!

1 Like