fix(trading): market data and auction time not updating (#2813)

This commit is contained in:
m.ray 2023-02-01 09:08:49 -05:00 committed by GitHub
parent 382a7ea411
commit b2489537ef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,11 +1,25 @@
import type { RefObject } from 'react';
import { t } from '@vegaprotocol/react-helpers';
import { useMemo } from 'react';
import { t, useDataProvider } from '@vegaprotocol/react-helpers';
import { TradingModeTooltip } from '@vegaprotocol/deal-ticket';
import { useInView } from 'react-intersection-observer';
import * as Schema from '@vegaprotocol/types';
import { useStaticMarketData } from '@vegaprotocol/market-list';
import { HeaderStat } from '../header';
import { Tooltip } from '@vegaprotocol/ui-toolkit';
import { marketDataProvider } from '@vegaprotocol/market-list';
// This will cause often re-rendering
// Here it may not be a problem because the component is not very complex
// In general, we should avoid using this marketData hook without any throttling
const useMarketData = (marketId?: string, skip?: boolean) => {
const variables = useMemo(() => ({ marketId }), [marketId]);
const { data } = useDataProvider({
dataProvider: marketDataProvider,
variables,
skip: skip || !marketId,
});
return data;
};
const getTradingModeLabel = (
tradingMode?: Schema.MarketTradingMode,
@ -35,7 +49,7 @@ export const HeaderStatMarketTradingMode = ({
initialTradingMode,
initialTrigger,
}: HeaderStatMarketTradingModeProps) => {
const data = useStaticMarketData(marketId);
const data = useMarketData(marketId);
const tradingMode = data?.marketTradingMode ?? initialTradingMode;
const trigger = data?.trigger ?? initialTrigger;
@ -61,7 +75,7 @@ export const MarketTradingMode = ({
inViewRoot?: RefObject<Element>;
}) => {
const [ref, inView] = useInView({ root: inViewRoot?.current });
const data = useStaticMarketData(marketId, !inView);
const data = useMarketData(marketId, !inView);
return (
<Tooltip