import ChartRangeButtons from '@components/shared/ChartRangeButtons' import FavoriteMarketButton from '@components/shared/FavoriteMarketButton' import TabUnderline from '@components/shared/TabUnderline' import { Popover } from '@headlessui/react' import { ChevronDownIcon } from '@heroicons/react/20/solid' import mangoStore from '@store/mangoStore' import useSelectedMarket from 'hooks/useSelectedMarket' import Link from 'next/link' import { useMemo, useState } from 'react' import { DEFAULT_MARKET_NAME } from 'utils/constants' import MarketLogos from './MarketLogos' const TAB_VALUES = ['spot', 'perp'] const MarketSelectDropdown = () => { const { selectedMarket } = useSelectedMarket() const serumMarkets = mangoStore((s) => s.serumMarkets) const allPerpMarkets = mangoStore((s) => s.perpMarkets) const [activeTab, setActiveTab] = useState('spot') const [spotBaseFilter, setSpotBaseFilter] = useState('All') const perpMarkets = useMemo(() => { return allPerpMarkets .filter( (p) => p.publicKey.toString() !== '9Y8paZ5wUpzLFfQuHz8j2RtPrKsDtHx9sbgFmWb5abCw' ) .sort((a, b) => a.name.localeCompare(b.name)) }, [allPerpMarkets]) const spotBaseTokens: string[] = useMemo(() => { if (serumMarkets.length) { const baseTokens: string[] = [] serumMarkets.map((m) => { const base = m.name.split('/')[1] if (!baseTokens.includes(base)) { baseTokens.push(base) } }) return baseTokens } return [] }, [serumMarkets]) return ( {({ open }) => (
{selectedMarket ? : null}
{selectedMarket?.name || DEFAULT_MARKET_NAME}
setActiveTab(v)} small values={TAB_VALUES} /> {activeTab === 'spot' ? ( serumMarkets?.length ? ( <>
setSpotBaseFilter(v)} />
{serumMarkets .filter((mkt) => { if (spotBaseFilter === 'All') { return mkt } else { return mkt.name.split('/')[1] === spotBaseFilter } }) .sort((a, b) => a.name.localeCompare(b.name)) .map((m) => { return (
{m.name}
) })} ) : null ) : null} {activeTab === 'perp' ? perpMarkets?.length ? perpMarkets.map((m) => { return (
{m.name}
) }) : null : null}
)}
) } export default MarketSelectDropdown