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

63 lines
1.8 KiB
TypeScript
Raw Normal View History

2022-11-27 04:36:12 -08:00
import { Bank } from '@blockworks-foundation/mango-v4'
import useMangoAccount from 'hooks/useMangoAccount'
import useMangoGroup from 'hooks/useMangoGroup'
2022-12-19 16:08:46 -08:00
import Link from 'next/link'
2022-11-27 04:36:12 -08:00
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(() => {
2022-12-19 16:08:46 -08:00
if (!mangoAccount || !group) return 0
const maxBorrow = mangoAccount.getMaxWithdrawWithBorrowForTokenUi(
group,
bank.mint
)
console.log('xyx', maxBorrow / bank.minVaultToDepositsRatio)
return maxBorrow
}, [bank, mangoAccount, group])
2022-11-27 04:36:12 -08:00
const vaultBalance = useMemo(() => {
2022-12-19 16:08:46 -08:00
if (!group) return 0
2022-11-27 04:36:12 -08:00
return floorToDecimal(
group.getTokenVaultBalanceByMintUi(bank.mint),
bank.mintDecimals
).toNumber()
}, [bank, group])
2022-12-19 16:08:46 -08:00
// 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
return mangoAccount &&
balance / bank.minVaultToDepositsRatio > vaultBalance ? (
2022-11-27 04:36:12 -08:00
<InlineNotification
type="warning"
2022-12-19 16:08:46 -08:00
desc={
<div>
The Mango {bank.name} vault balance is low which is impacting the
maximum amount you may borrow. View the{' '}
<Link href="/stats" className="underline hover:no-underline">
Stats page
</Link>{' '}
to see vault balances.
</div>
}
2022-11-27 04:36:12 -08:00
/>
) : null
}
export default TokenVaultWarnings