fix(trading): flickering of market loading (#5006)

This commit is contained in:
Matthew Russell 2023-10-10 06:20:27 -07:00 committed by GitHub
parent 66ebb26b0f
commit b33cf04e16
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -3,7 +3,7 @@ import { addDecimalsFormatNumber, titlefy } from '@vegaprotocol/utils';
import { t } from '@vegaprotocol/i18n';
import { useScreenDimensions } from '@vegaprotocol/react-helpers';
import { useThrottledDataProvider } from '@vegaprotocol/data-provider';
import { AsyncRenderer, ExternalLink, Splash } from '@vegaprotocol/ui-toolkit';
import { ExternalLink, Loader, Splash } from '@vegaprotocol/ui-toolkit';
import { getAsset, marketDataProvider, useMarket } from '@vegaprotocol/markets';
import { useGlobalStore, usePageTitleStore } from '../../stores';
import { TradeGrid } from './trade-grid';
@ -68,7 +68,7 @@ export const MarketPage = ({ closed }: { closed?: boolean }) => {
const update = useGlobalStore((store) => store.update);
const lastMarketId = useGlobalStore((store) => store.marketId);
const { data, error, loading } = useMarket(marketId);
const { data, loading } = useMarket(marketId);
useEffect(() => {
if (
@ -110,7 +110,15 @@ export const MarketPage = ({ closed }: { closed?: boolean }) => {
}
}, [largeScreen, data, pinnedAsset]);
if (!data && marketId) {
if (loading) {
return (
<Splash>
<Loader />
</Splash>
);
}
if (!data) {
return (
<Splash>
<span className="flex flex-col items-center gap-2">
@ -120,7 +128,7 @@ export const MarketPage = ({ closed }: { closed?: boolean }) => {
<p className="justify-center text-sm">
{t(`Please choose another market from the`)}{' '}
<ExternalLink onClick={() => navigate(Links.MARKETS())}>
market list
{t('market list')}
</ExternalLink>
</p>
</span>
@ -129,18 +137,13 @@ export const MarketPage = ({ closed }: { closed?: boolean }) => {
}
return (
<AsyncRenderer
loading={loading}
error={error}
data={data || undefined}
noDataCondition={(data) => false}
>
<>
<TitleUpdater
marketId={data?.id}
marketName={data?.tradableInstrument.instrument.name}
decimalPlaces={data?.decimalPlaces}
/>
{tradeView}
</AsyncRenderer>
</>
);
};