import TabButtons from '@components/shared/TabButtons' import TokenPage from '@components/token/TokenPage' import mangoStore from '@store/mangoStore' import useMangoGroup from 'hooks/useMangoGroup' import { useViewport } from 'hooks/useViewport' import { useRouter } from 'next/router' import { useEffect, useMemo, useState } from 'react' import { breakpoints } from 'utils/theme' import MangoStats from './mango/MangoStats' import PerpStats from './perps/PerpStats' import PerpStatsPage from './perps/PerpStatsPage' import SpotMarketsTable from './spot/SpotMarketsTable' import TokenStats from './tokens/TokenStats' const TABS = ['tokens', 'perp-markets', 'spot-markets', 'mango-stats'] const actions = mangoStore.getState().actions const StatsPage = () => { const [activeTab, setActiveTab] = useState('tokens') const perpStats = mangoStore((s) => s.perpStats.data) const initialStatsLoad = mangoStore((s) => s.tokenStats.initialLoad) const perpPositionsStatsNotLoaded = mangoStore( (s) => s.perpStats.positions.initialLoad, ) const { group } = useMangoGroup() const { width } = useViewport() const fullWidthTabs = width ? width < breakpoints.lg : false const router = useRouter() const { market } = router.query const { token } = router.query useEffect(() => { if (group && (!perpStats || !perpStats.length)) { actions.fetchPerpStats() } }, [group, perpStats]) useEffect(() => { if (group && perpPositionsStatsNotLoaded) { actions.fetchPositionsStats() } }, [group, perpPositionsStatsNotLoaded]) useEffect(() => { if (group && !initialStatsLoad) { const actions = mangoStore.getState().actions actions.fetchTokenStats() } }, [group, initialStatsLoad]) const tabsWithCount: [string, number][] = useMemo(() => { return TABS.map((t) => [t, 0]) }, []) return (
{market ? ( ) : token ? ( ) : ( <>
setActiveTab(v)} showBorders values={tabsWithCount} />
)}
) } export default StatsPage const TabContent = ({ activeTab }: { activeTab: string }) => { switch (activeTab) { case 'tokens': return case 'perp-markets': return case 'spot-markets': return case 'mango-stats': return default: return } }