import { useCallback, useMemo, useState } from 'react' import Button from 'components/Button' import EscButton from 'components/Button/EscButton' import Divider from 'components/Divider' import Overlay from 'components/Overlay' import SearchBar from 'components/SearchBar' import Text from 'components/Text' import AssetList from 'components/Trade/TradeModule/AssetSelector/AssetList' import PairsList from 'components/Trade/TradeModule/AssetSelector/PairsList' import useFilteredAssets from 'hooks/useFilteredAssets' import { getAllAssets } from 'utils/assets' interface Props { state: OverlayState buyAsset: Asset sellAsset: Asset onChangeBuyAsset?: (asset: Asset) => void onChangeSellAsset?: (asset: Asset) => void onChangeTradingPair?: (tradingPair: TradingPair) => void onChangeState: (state: OverlayState) => void } interface StablesFilterProps { stables: Asset[] selectedStables: Asset[] onFilter: (stables: Asset[]) => void } function StablesFilter(props: StablesFilterProps) { const { stables, selectedStables, onFilter } = props const isAllSelected = selectedStables.length > 1 return ( <>
) } export default function AssetOverlay(props: Props) { const isPairSelector = !!props.onChangeTradingPair const { assets, searchString, onChangeSearch } = useFilteredAssets() const allAssets = getAllAssets() const stableAssets = useMemo(() => allAssets.filter((asset) => asset.isStable), [allAssets]) const handleClose = useCallback(() => props.onChangeState('closed'), [props]) const handleToggle = useCallback(() => props.onChangeState(props.state), [props]) const [selectedStables, setSelectedStables] = useState([stableAssets[0]]) const buyAssets = useMemo( () => isPairSelector ? assets : assets.filter((asset) => asset.denom !== props.sellAsset.denom), [assets, props.sellAsset, isPairSelector], ) const sellAssets = useMemo( () => assets.filter((asset) => asset.denom !== props.buyAsset.denom), [assets, props.buyAsset], ) function onChangeBuyAsset(asset: AssetPair | Asset) { const selectedAsset = asset as Asset if (!props.onChangeBuyAsset) return props.onChangeBuyAsset(selectedAsset) props.onChangeState('sell') onChangeSearch('') } function onChangeSellAsset(asset: AssetPair | Asset) { const selectedAsset = asset as Asset if (!props.onChangeSellAsset) return props.onChangeSellAsset(selectedAsset) onChangeSearch('') } function onChangeAssetPair(assetPair: AssetPair | Asset) { const selectedPair = assetPair as AssetPair if (!props.onChangeTradingPair) return props.onChangeTradingPair({ buy: selectedPair.buy.denom, sell: selectedPair.sell.denom }) props.onChangeState('closed') onChangeSearch('') } return (
{isPairSelector ? 'Select a market' : 'Select asset'}
{isPairSelector && ( )}
{isPairSelector ? ( ) : ( <> )}
) }