import { useMemo } from 'react' import AssetImage from 'components/common/assets/AssetImage' import AssetSymbol from 'components/common/assets/AssetSymbol' import DisplayCurrency from 'components/common/DisplayCurrency' import { FormattedNumber } from 'components/common/FormattedNumber' import { StarFilled, StarOutlined } from 'components/common/Icons' import Text from 'components/common/Text' import { BN_ONE, BN_ZERO, MAX_AMOUNT_DECIMALS, MIN_AMOUNT } from 'constants/math' import useFavoriteAssets from 'hooks/localStorage/useFavoriteAssets' import { BNCoin } from 'types/classes/BNCoin' import { byDenom } from 'utils/array' import { demagnify, formatAmountToPrecision } from 'utils/formatters' import { BN } from 'utils/helpers' interface Props { asset: Asset sellAsset?: Asset balances: BNCoin[] onSelect: (selected: Asset | AssetPair) => void depositCap?: DepositCap } export default function AssetSelectorItem(props: Props) { const { asset, sellAsset, balances, onSelect, depositCap } = props const amount = demagnify(props.balances.find(byDenom(asset.denom))?.amount ?? BN_ZERO, asset) const [favoriteAssetsDenoms, setFavoriteAssetsDenoms] = useFavoriteAssets() const isFavorite = useMemo( () => favoriteAssetsDenoms.includes(asset.denom), [favoriteAssetsDenoms, asset.denom], ) function handleToggleFavorite(event: React.MouseEvent) { event.stopPropagation() if (!favoriteAssetsDenoms.includes(asset.denom)) { setFavoriteAssetsDenoms([...favoriteAssetsDenoms, asset.denom]) return } setFavoriteAssetsDenoms(favoriteAssetsDenoms.filter((item: string) => item !== asset.denom)) } const formattedAmount = formatAmountToPrecision(amount, MAX_AMOUNT_DECIMALS) const lowAmount = formattedAmount === 0 ? 0 : Math.max(formattedAmount, MIN_AMOUNT) const capLeft = useMemo(() => { if (!props.depositCap) return 0 const percent = props.depositCap.used.dividedBy(props.depositCap.max).multipliedBy(100) const depositCapLeft = 100 - Math.min(percent.toNumber(), 100) return depositCapLeft }, [props.depositCap]) return (
  • ) }