mango-v4-ui/components/shared/TokenVaultWarnings.tsx

39 lines
1.1 KiB
TypeScript

import { Bank } from '@blockworks-foundation/mango-v4'
import useMangoAccount from 'hooks/useMangoAccount'
import useMangoGroup from 'hooks/useMangoGroup'
import { useMemo } from 'react'
import { floorToDecimal } from 'utils/numbers'
import InlineNotification from './InlineNotification'
const TokenVaultWarnings = ({ bank }: { bank: Bank }) => {
const { mangoAccount } = useMangoAccount()
const { group } = useMangoGroup()
const balance = useMemo(() => {
if (!mangoAccount) return
return mangoAccount.getTokenBalanceUi(bank)
}, [bank, mangoAccount])
const vaultBalance = useMemo(() => {
if (!group) return
return floorToDecimal(
group.getTokenVaultBalanceByMintUi(bank.mint),
bank.mintDecimals
).toNumber()
}, [bank, group])
return !vaultBalance ? (
<InlineNotification
type="warning"
desc={`${bank.name} vault is too low or fully utilized`}
/>
) : mangoAccount && balance! > vaultBalance ? (
<InlineNotification
type="warning"
desc={`Available ${bank.name} vault balance is lower than your balance`}
/>
) : null
}
export default TokenVaultWarnings