// import ChartRangeButtons from '@components/shared/ChartRangeButtons' import Change from '@components/shared/Change' import FavoriteMarketButton from '@components/shared/FavoriteMarketButton' import SheenLoader from '@components/shared/SheenLoader' import { getOneDayPerpStats } from '@components/stats/PerpMarketsTable' import { Popover } from '@headlessui/react' import { ChevronDownIcon } from '@heroicons/react/20/solid' import mangoStore from '@store/mangoStore' import { useBirdeyeMarketPrices } from 'hooks/useBirdeyeMarketPrices' import useMangoGroup from 'hooks/useMangoGroup' import useSelectedMarket from 'hooks/useSelectedMarket' import { useTranslation } from 'next-i18next' import Link from 'next/link' import { useMemo } from 'react' import { DEFAULT_MARKET_NAME } from 'utils/constants' import MarketLogos from './MarketLogos' const MarketSelectDropdown = () => { const { t } = useTranslation('common') const { selectedMarket } = useSelectedMarket() const serumMarkets = mangoStore((s) => s.serumMarkets) const allPerpMarkets = mangoStore((s) => s.perpMarkets) const perpStats = mangoStore((s) => s.perpStats.data) const loadingPerpStats = mangoStore((s) => s.perpStats.loading) const { group } = useMangoGroup() const { data: birdeyePrices, isLoading: loadingPrices } = useBirdeyeMarketPrices() // 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, close }) => (
{selectedMarket ? : null}
{selectedMarket?.name || DEFAULT_MARKET_NAME}

{t('perp')}

{perpMarkets?.length ? perpMarkets.map((m) => { const changeData = getOneDayPerpStats(perpStats, m.name) const change = changeData.length ? ((m.uiPrice - changeData[0].price) / changeData[0].price) * 100 : 0 return (
{ close() }} > {m.name}
{!loadingPerpStats ? ( ) : (
)}
) }) : null}

{t('spot')}

{serumMarkets?.length ? ( <> {serumMarkets .map((x) => x) .sort((a, b) => a.name.localeCompare(b.name)) .map((m) => { const birdeyeData = birdeyePrices?.length ? birdeyePrices.find( (market) => market.mint === m.serumMarketExternal.toString() ) : null const bank = group?.getFirstBankByTokenIndex( m.baseTokenIndex ) const change = birdeyeData && bank ? ((bank.uiPrice - birdeyeData.data[0].value) / birdeyeData.data[0].value) * 100 : 0 return (
{ close() }} > {m.name}
{!loadingPrices ? ( ) : (
)}
) })} ) : null}
)} ) } export default MarketSelectDropdown