import { toUiDecimalsForQuote } from '@blockworks-foundation/mango-v4' import useMangoAccount from 'hooks/useMangoAccount' import useMangoGroup from 'hooks/useMangoGroup' import { useTranslation } from 'next-i18next' import { useMemo } from 'react' import { Cell, Pie, PieChart } from 'recharts' import { COLORS } from 'styles/colors' import { formatCurrencyValue } from 'utils/numbers' import FlipNumbers from 'react-flip-numbers' import useLocalStorageState from 'hooks/useLocalStorageState' import { ANIMATION_SETTINGS_KEY } from 'utils/constants' import { INITIAL_ANIMATION_SETTINGS } from '@components/settings/AnimationSettings' import useThemeWrapper from 'hooks/useThemeWrapper' const AssetsLiabilities = ({ isMobile }: { isMobile: boolean }) => { const { t } = useTranslation('account') const { group } = useMangoGroup() const { mangoAccount } = useMangoAccount() const { theme } = useThemeWrapper() const [animationSettings] = useLocalStorageState( ANIMATION_SETTINGS_KEY, INITIAL_ANIMATION_SETTINGS, ) const [assetsValue, assetsRatio, liabsValue, liabsRatio] = useMemo(() => { if (!group || !mangoAccount) return [0, 0, 0, 0] const assets = toUiDecimalsForQuote(mangoAccount.getAssetsValue(group)) const liabs = toUiDecimalsForQuote(mangoAccount.getLiabsValue(group)) let assetsRatio = 0 let liabsRatio = 0 if (assets && liabs) { assetsRatio = (assets / (assets + liabs)) * 100 liabsRatio = 100 - assetsRatio } return [assets, assetsRatio, liabs, liabsRatio] }, [group, mangoAccount]) const chartData = useMemo(() => { if (!assetsValue && !liabsValue) return [] return [ { name: 'assets', value: assetsValue }, { name: 'liabilities', value: liabsValue }, ] }, [assetsValue, liabsValue]) const pieSizes = isMobile ? { size: 160, outerRadius: 80, innerRadius: 64 } : { size: 80, outerRadius: 40, innerRadius: 30 } const { size, outerRadius, innerRadius } = pieSizes return (
{mangoAccount && chartData.length ? ( {chartData.map((entry, index) => { const fillColor = entry.name === 'assets' ? COLORS.UP[theme] : COLORS.DOWN[theme] return ( ) })} ) : (
)}

{t('assets')} {assetsRatio.toFixed()}%

{animationSettings['number-scroll'] ? (
) : (

{formatCurrencyValue(assetsValue, 2)}

)}

{t('liabilities')} {liabsRatio.toFixed()}%

{animationSettings['number-scroll'] ? (
) : (

{formatCurrencyValue(liabsValue, 2)}

)}
) } export default AssetsLiabilities