chore(deal-ticket,markets): dont show margin estimate for perps (#5305)

This commit is contained in:
Matthew Russell 2023-11-17 10:33:24 -08:00 committed by GitHub
parent 2983c6c6ba
commit 4b7338ed94
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 119 additions and 87 deletions

View File

@ -1,6 +1,6 @@
import { useCallback, useState } from 'react'; import { useCallback, useState } from 'react';
import { t } from '@vegaprotocol/i18n'; import { t } from '@vegaprotocol/i18n';
import { getAsset, getQuoteName } from '@vegaprotocol/markets'; import { getAsset, getProductType, getQuoteName } from '@vegaprotocol/markets';
import type { OrderSubmissionBody } from '@vegaprotocol/wallet'; import type { OrderSubmissionBody } from '@vegaprotocol/wallet';
import { useVegaWallet } from '@vegaprotocol/wallet'; import { useVegaWallet } from '@vegaprotocol/wallet';
@ -286,9 +286,19 @@ export const DealTicketMarginDetails = ({
); );
const quoteName = getQuoteName(market); const quoteName = getQuoteName(market);
const productType = getProductType(market);
return ( return (
<div className="flex flex-col w-full gap-2"> <div className="flex flex-col w-full gap-2 pt-2">
{/*
TODO: remove this conditional check once the following PRs are deployed
and the estimatePosition query is working for perps
- https://github.com/vegaprotocol/vega/pull/10119
- https://github.com/vegaprotocol/vega/pull/10122
*/}
{productType === 'Future' && (
<>
<Accordion> <Accordion>
<AccordionPanel <AccordionPanel
itemId="margin" itemId="margin"
@ -296,7 +306,7 @@ export const DealTicketMarginDetails = ({
<AccordionPrimitive.Trigger <AccordionPrimitive.Trigger
data-testid="accordion-toggle" data-testid="accordion-toggle"
className={classNames( className={classNames(
'w-full pt-2', 'w-full',
'flex items-center gap-2 text-xs', 'flex items-center gap-2 text-xs',
'group' 'group'
)} )}
@ -307,8 +317,12 @@ export const DealTicketMarginDetails = ({
className="flex items-center justify-between w-full gap-2" className="flex items-center justify-between w-full gap-2"
> >
<div className="flex items-center text-left gap-1"> <div className="flex items-center text-left gap-1">
<Tooltip description={MARGIN_DIFF_TOOLTIP_TEXT(assetSymbol)}> <Tooltip
<span className="text-muted">{t('Margin required')}</span> description={MARGIN_DIFF_TOOLTIP_TEXT(assetSymbol)}
>
<span className="text-muted">
{t('Margin required')}
</span>
</Tooltip> </Tooltip>
<AccordionChevron size={10} /> <AccordionChevron size={10} />
@ -379,6 +393,8 @@ export const DealTicketMarginDetails = ({
</AccordionPanel> </AccordionPanel>
</Accordion> </Accordion>
{projectedMargin} {projectedMargin}
</>
)}
<KeyValue <KeyValue
label={t('Liquidation')} label={t('Liquidation')}
value={liquidationPriceEstimateRange} value={liquidationPriceEstimateRange}

View File

@ -28,6 +28,22 @@ export const getAsset = (market: Partial<Market>) => {
throw new Error('Failed to retrieve asset. Invalid product type'); throw new Error('Failed to retrieve asset. Invalid product type');
}; };
export const getProductType = (market: Partial<Market>) => {
if (!market.tradableInstrument?.instrument.product) {
throw new Error(
'Failed to retrieve product type. Invalid tradable instrument'
);
}
const type = market.tradableInstrument.instrument.product.__typename;
if (!type) {
throw new Error('Failed to retrieve asset. Invalid product type');
}
return type;
};
export const getQuoteName = (market: Partial<Market>) => { export const getQuoteName = (market: Partial<Market>) => {
if (!market.tradableInstrument?.instrument.product) { if (!market.tradableInstrument?.instrument.product) {
throw new Error( throw new Error(