packages/widget/src/hooks/useCurrentTokenBalance.ts
import { useContext, useMemo } from 'react'
import { Web3Context } from 'providers/Web3Provider'
import { useBridgeState } from '@/state/slices/bridge/hooks'
import { TokenBalance } from '@/utils/actions/fetchTokenBalances'
import { useWalletState } from '@/state/slices/wallet/hooks'
export const useCurrentTokenBalance = () => {
const web3Context = useContext(Web3Context)
const { connectedAddress } = web3Context.web3Provider
const { originChainId, originToken } = useBridgeState()
const { balances } = useWalletState()
return useMemo(() => {
if (!Array.isArray(balances) || !originToken || !originChainId) {
return {
rawBalance: null,
parsedBalance: null,
decimals: null,
}
} else {
const matchedTokenBalance = balances?.find(
(token: TokenBalance) =>
token?.token?.addresses[originChainId] ===
originToken?.addresses[originChainId]
)
const decimals: number =
typeof matchedTokenBalance?.token?.decimals === 'number'
? matchedTokenBalance?.token?.decimals
: matchedTokenBalance?.token?.decimals[originChainId]
return {
rawBalance: matchedTokenBalance?.balance,
parsedBalance: matchedTokenBalance?.parsedBalance,
decimals,
}
}
}, [balances, originToken, originChainId, connectedAddress])
}