feat: split perps into active and non active positions (#780)
This commit is contained in:
parent
dc0cb77ca8
commit
9762aa7cd0
@ -8,6 +8,7 @@ import Text from 'components/common/Text'
|
|||||||
import AssetList from 'components/trade/TradeModule/AssetSelector/AssetList'
|
import AssetList from 'components/trade/TradeModule/AssetSelector/AssetList'
|
||||||
import StablesFilter from 'components/trade/TradeModule/AssetSelector/AssetOverlay/StablesFilter'
|
import StablesFilter from 'components/trade/TradeModule/AssetSelector/AssetOverlay/StablesFilter'
|
||||||
import PairsList from 'components/trade/TradeModule/AssetSelector/PairsList'
|
import PairsList from 'components/trade/TradeModule/AssetSelector/PairsList'
|
||||||
|
import useCurrentAccount from 'hooks/accounts/useCurrentAccount'
|
||||||
import useAllAssets from 'hooks/assets/useAllAssets'
|
import useAllAssets from 'hooks/assets/useAllAssets'
|
||||||
import useFilteredAssets from 'hooks/useFilteredAssets'
|
import useFilteredAssets from 'hooks/useFilteredAssets'
|
||||||
|
|
||||||
@ -23,8 +24,17 @@ interface Props {
|
|||||||
type: 'pair' | 'single' | 'perps'
|
type: 'pair' | 'single' | 'perps'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function MarketSubheadLine(props: { title: string }) {
|
||||||
|
return (
|
||||||
|
<Text size='sm' className='px-4 py-2 border-b border-white/5 text-white/60 bg-white/5'>
|
||||||
|
{props.title}
|
||||||
|
</Text>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
export default function AssetOverlay(props: Props) {
|
export default function AssetOverlay(props: Props) {
|
||||||
const { assets, searchString, onChangeSearch } = useFilteredAssets(props.buyAssets)
|
const { assets, searchString, onChangeSearch } = useFilteredAssets(props.buyAssets)
|
||||||
|
const account = useCurrentAccount()
|
||||||
const allAssets = useAllAssets()
|
const allAssets = useAllAssets()
|
||||||
const stableAssets = useMemo(() => allAssets.filter((asset) => asset.isStable), [allAssets])
|
const stableAssets = useMemo(() => allAssets.filter((asset) => asset.isStable), [allAssets])
|
||||||
const handleClose = useCallback(() => props.onChangeState('closed'), [props])
|
const handleClose = useCallback(() => props.onChangeState('closed'), [props])
|
||||||
@ -76,6 +86,20 @@ export default function AssetOverlay(props: Props) {
|
|||||||
[onChangeSearch, props],
|
[onChangeSearch, props],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const [activePerpsPositions, availablePerpsMarkets] = useMemo(() => {
|
||||||
|
const activePerpsPositions =
|
||||||
|
account?.perps.length === 0
|
||||||
|
? []
|
||||||
|
: props.buyAssets.filter((assets) =>
|
||||||
|
account?.perps.find((perp) => perp.denom === assets.denom),
|
||||||
|
)
|
||||||
|
const availablePerpsMarkets = props.buyAssets.filter(
|
||||||
|
(assets) => !activePerpsPositions.find((perp) => perp.denom === assets.denom),
|
||||||
|
)
|
||||||
|
|
||||||
|
return [activePerpsPositions, availablePerpsMarkets]
|
||||||
|
}, [props.buyAssets, account])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Overlay
|
<Overlay
|
||||||
className='inset-0 w-full overflow-y-scroll scrollbar-hide'
|
className='inset-0 w-full overflow-y-scroll scrollbar-hide'
|
||||||
@ -104,14 +128,29 @@ export default function AssetOverlay(props: Props) {
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<Divider />
|
<Divider />
|
||||||
{props.type === 'perps' && (
|
{props.type === 'perps' && activePerpsPositions.length > 0 && (
|
||||||
|
<>
|
||||||
|
<MarketSubheadLine title='Active Positions' />
|
||||||
<AssetList
|
<AssetList
|
||||||
assets={props.buyAssets}
|
assets={activePerpsPositions}
|
||||||
type='perps'
|
type='perps'
|
||||||
onChangeAsset={onChangeBuyAsset}
|
onChangeAsset={onChangeBuyAsset}
|
||||||
isOpen
|
isOpen
|
||||||
toggleOpen={() => {}}
|
toggleOpen={() => {}}
|
||||||
/>
|
/>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
{props.type === 'perps' && availablePerpsMarkets.length > 0 && (
|
||||||
|
<>
|
||||||
|
<MarketSubheadLine title='Available Markets' />
|
||||||
|
<AssetList
|
||||||
|
assets={availablePerpsMarkets}
|
||||||
|
type='perps'
|
||||||
|
onChangeAsset={onChangeBuyAsset}
|
||||||
|
isOpen
|
||||||
|
toggleOpen={() => {}}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{props.type === 'pair' && (
|
{props.type === 'pair' && (
|
||||||
|
Loading…
Reference in New Issue
Block a user