fix: incorrect price change values for less than 24h old markets

This commit is contained in:
Matthew Russell 2024-02-13 12:37:39 -08:00
parent feddc6d4e1
commit 224ecf30f5
3 changed files with 18 additions and 24 deletions

View File

@ -56,7 +56,6 @@ export const MarketHeaderStats = ({ market }: MarketHeaderStatsProps) => {
<Last24hPriceChange
marketId={market.id}
decimalPlaces={market.decimalPlaces}
fallback={<span>-</span>}
/>
</HeaderStat>
<HeaderStat heading={t('Volume (24h)')} testId="market-volume">

View File

@ -1,7 +1,6 @@
import {
addDecimalsFormatNumber,
formatNumberPercentage,
isNumeric,
priceChange,
priceChangePercentage,
} from '@vegaprotocol/utils';
@ -14,29 +13,24 @@ import { useT } from '../../use-t';
interface Props {
marketId?: string;
decimalPlaces?: number;
initialValue?: string[];
decimalPlaces: number;
isHeader?: boolean;
noUpdate?: boolean;
// render prop for no price change
fallback?: React.ReactNode;
}
export const Last24hPriceChange = ({
marketId,
decimalPlaces,
initialValue,
fallback,
}: Props) => {
export const Last24hPriceChange = ({ marketId, decimalPlaces }: Props) => {
const t = useT();
const { oneDayCandles, error, fiveDaysCandles } = useCandles({
marketId,
});
if (
fiveDaysCandles &&
fiveDaysCandles.length > 0 &&
(!oneDayCandles || oneDayCandles?.length === 0)
) {
const fallback = <span>{'-'}</span>;
if (error || !oneDayCandles || !fiveDaysCandles) {
return fallback;
}
if (oneDayCandles.length < 24) {
return (
<Tooltip
description={
@ -51,16 +45,12 @@ export const Last24hPriceChange = ({
</span>
}
>
<span>{fallback}</span>
{fallback}
</Tooltip>
);
}
if (error || !isNumeric(decimalPlaces)) {
return <span>{fallback}</span>;
}
const candles = oneDayCandles?.map((c) => c.close) || initialValue || [];
const candles = oneDayCandles?.map((c) => c.close) || [];
const change = priceChange(candles);
const changePercentage = priceChangePercentage(candles);

View File

@ -18,7 +18,12 @@ export const useCandles = ({ marketId }: { marketId?: string }) => {
skip: !marketId,
});
const fiveDaysCandles = data?.filter(Boolean);
const fiveDaysCandles = data?.filter((c) => {
if (c.open === '' || c.close === '' || c.high === '' || c.close === '') {
return false;
}
return true;
});
const oneDayCandles = fiveDaysCandles?.filter((candle) =>
isCandleLessThan24hOld(candle, yesterday)