import { PerpMarket } from '@blockworks-foundation/mango-v4' import { LinkButton } from '@components/shared/Button' import { Table, Td, Th, TrBody, TrHead } from '@components/shared/TableElements' import mangoStore from '@store/mangoStore' import Decimal from 'decimal.js' import { useTranslation } from 'next-i18next' import { calculateMarketPrice } from 'utils/tradeForm' import MarketLogos from './MarketLogos' import PerpSideBadge from './PerpSideBadge' const PerpPositions = () => { const { t } = useTranslation(['common', 'trade']) const group = mangoStore((s) => s.group) const perpPositions = mangoStore((s) => s.mangoAccount.perpPositions) const selectedMarket = mangoStore((s) => s.selectedMarket.current) const handlePositionClick = (positionSize: number) => { const tradeForm = mangoStore.getState().tradeForm const set = mangoStore.getState().set let price = new Decimal(tradeForm.price).toNumber() if (tradeForm.tradeType === 'Market') { const orderbook = mangoStore.getState().selectedMarket.orderbook price = calculateMarketPrice(orderbook, positionSize, tradeForm.side) } set((s) => { s.tradeForm.baseSize = positionSize.toFixed() s.tradeForm.quoteSize = (positionSize / price).toFixed() }) } if (!group) return null return Object.entries(perpPositions).length ? (
{Object.entries(perpPositions).map(([_mkt, position]) => { const market = group.getPerpMarketByMarketIndex( position.marketIndex ) const basePosition = position.getBasePositionUi(market) const isSelectedMarket = selectedMarket instanceof PerpMarket && selectedMarket.perpMarketIndex === position.marketIndex return ( ) })}
{t('market')} {t('trade:side')} {t('trade:size')} {t('value')}
{market?.name}

{isSelectedMarket ? ( handlePositionClick(basePosition)} > {Math.abs(basePosition)} ) : ( Math.abs(basePosition) )}

${Math.abs(basePosition * market._uiPrice).toFixed(2)}
) : (

{t('trade:no-positions')}

) } export default PerpPositions