mango-v4-ui/components/account/ActionTokenItem.tsx

82 lines
2.3 KiB
TypeScript
Raw Normal View History

2022-07-22 23:15:51 -07:00
import { Bank } from '@blockworks-foundation/mango-v4'
2022-10-28 14:46:38 -07:00
import Image from 'next/legacy/image'
2022-08-11 22:48:00 -07:00
import { useMemo } from 'react'
import {
formatDecimal,
formatFixedDecimals,
trimDecimals,
} from '../../utils/numbers'
2022-11-18 11:11:06 -08:00
import useJupiterMints from 'hooks/useJupiterMints'
2022-07-22 23:15:51 -07:00
const ActionTokenItem = ({
2022-07-22 23:15:51 -07:00
bank,
customValue,
2022-07-22 23:15:51 -07:00
onSelect,
showBorrowRates,
showDepositRates,
2022-07-22 23:15:51 -07:00
}: {
bank: Bank
customValue: number
onSelect: (x: string) => void
showBorrowRates?: boolean
showDepositRates?: boolean
2022-07-22 23:15:51 -07:00
}) => {
2022-08-11 22:48:00 -07:00
const { mint, name } = bank
2022-11-18 11:11:06 -08:00
const { mangoTokens } = useJupiterMints()
2022-08-11 22:48:00 -07:00
const logoUri = useMemo(() => {
let logoURI
2022-11-18 11:11:06 -08:00
if (mangoTokens?.length) {
2022-11-19 11:20:36 -08:00
logoURI = mangoTokens.find((t) => t.address === mint.toString())?.logoURI
2022-08-11 22:48:00 -07:00
}
return logoURI
2022-11-18 11:11:06 -08:00
}, [mint, mangoTokens])
2022-08-11 22:48:00 -07:00
2022-07-22 23:15:51 -07:00
return (
<button
className="default-transition flex w-full items-center rounded-md border border-th-bkg-4 bg-th-bkg-1 px-4 py-3 disabled:cursor-not-allowed disabled:opacity-30 md:hover:border-th-fgd-4 md:disabled:hover:border-th-bkg-4"
2022-07-22 23:15:51 -07:00
onClick={() => onSelect(name)}
disabled={customValue <= 0}
2022-07-22 23:15:51 -07:00
>
<div
className={`flex ${
!showBorrowRates && !showDepositRates ? 'w-1/2' : 'w-1/4'
} items-center`}
>
2022-07-22 23:15:51 -07:00
<div className="mr-2.5 flex flex-shrink-0 items-center">
<Image
alt=""
width="24"
height="24"
2022-08-11 22:48:00 -07:00
src={logoUri || `/icons/${name.toLowerCase()}.svg`}
2022-07-22 23:15:51 -07:00
/>
</div>
2022-07-23 22:45:11 -07:00
<p className="text-th-fgd-1">{name}</p>
2022-07-22 23:15:51 -07:00
</div>
{showDepositRates ? (
<div className="w-1/4 text-right font-mono">
2022-11-30 19:32:32 -08:00
<p className="text-th-up">
{formatDecimal(bank.getDepositRate().toNumber(), 2)}%
</p>
</div>
) : null}
{showBorrowRates ? (
<div className="w-1/4 text-right font-mono">
2022-11-30 19:32:32 -08:00
<p className="text-th-down">
{formatDecimal(bank.getBorrowRate().toNumber(), 2)}%
</p>
</div>
) : null}
<div className="w-1/2 pl-3 text-right">
<p className="truncate font-mono text-th-fgd-1">
{formatFixedDecimals(
trimDecimals(customValue, bank.mintDecimals + 1)
)}
</p>
2022-08-11 22:48:00 -07:00
</div>
2022-07-22 23:15:51 -07:00
</button>
)
}
export default ActionTokenItem