import { useMemo, useState } from 'react' import TabButtons from '../shared/TabButtons' import TokenList from '../TokenList' import UnsettledTrades from '@components/trade/UnsettledTrades' import { useUnsettledSpotBalances } from 'hooks/useUnsettledSpotBalances' import { useViewport } from 'hooks/useViewport' import useUnsettledPerpPositions from 'hooks/useUnsettledPerpPositions' import mangoStore from '@store/mangoStore' import PerpPositions from '@components/trade/PerpPositions' import useOpenPerpPositions from 'hooks/useOpenPerpPositions' import HistoryTabs from './HistoryTabs' import ManualRefresh from '@components/shared/ManualRefresh' import useMangoAccount from 'hooks/useMangoAccount' import AccountOverview from './AccountOverview' import AccountOrders from './AccountOrders' const AccountTabs = () => { const [activeTab, setActiveTab] = useState('overview') const { mangoAccount } = useMangoAccount() const { isMobile, isTablet } = useViewport() const unsettledSpotBalances = useUnsettledSpotBalances() const unsettledPerpPositions = useUnsettledPerpPositions() const { openPerpPositions } = useOpenPerpPositions() const openOrders = mangoStore((s) => s.mangoAccount.openOrders) const tabsWithCount: [string, number][] = useMemo(() => { const unsettledTradeCount = Object.values(unsettledSpotBalances).flat().length + unsettledPerpPositions?.length const stopOrdersCount = mangoAccount?.tokenConditionalSwaps.filter((tcs) => tcs.isConfigured) ?.length || 0 const tabs: [string, number][] = [ ['overview', 0], ['balances', 0], ['trade:positions', openPerpPositions.length], [ 'trade:orders', Object.values(openOrders).flat().length + stopOrdersCount, ], ['trade:unsettled', unsettledTradeCount], ['history', 0], ] return tabs }, [ mangoAccount, openPerpPositions, unsettledPerpPositions, unsettledSpotBalances, openOrders, ]) return ( <>
setActiveTab(v)} values={tabsWithCount} showBorders fillWidth={isMobile || isTablet} />
) } const TabContent = ({ activeTab }: { activeTab: string }) => { const unsettledSpotBalances = useUnsettledSpotBalances() const unsettledPerpPositions = useUnsettledPerpPositions() switch (activeTab) { case 'overview': return case 'balances': return case 'trade:positions': return case 'trade:orders': return case 'trade:unsettled': return ( ) case 'history': return default: return } } export default AccountTabs