import { ENV } from '../../../config'; import { Callout, Intent, Splash } from '@vegaprotocol/ui-toolkit'; import { useVegaWallet } from '@vegaprotocol/wallet'; import { useTranslation } from 'react-i18next'; import { useRefreshValidators } from '../../../hooks/use-refresh-validators'; import { SplashLoader } from '../../../components/splash-loader'; import { useStakingQuery } from './__generated__/Staking'; import { usePreviousEpochQuery } from '../__generated___/PreviousEpoch'; import type { ReactElement } from 'react'; import type { StakingQuery } from './__generated__/Staking'; import type { PreviousEpochQuery } from '../__generated___/PreviousEpoch'; // TODO should only request a single node. When migrating from deprecated APIs we should address this. const RPC_ERROR = 'rpc error: code = NotFound desc = NotFound error'; export const NodeContainer = ({ children, }: { children: ({ data, previousEpochData, }: { data?: StakingQuery; previousEpochData?: PreviousEpochQuery; }) => ReactElement; }) => { const { t } = useTranslation(); const { pubKey } = useVegaWallet(); const { delegationsPagination } = ENV; const { data, loading, error, refetch } = useStakingQuery({ variables: { partyId: pubKey || '', delegationsPagination: delegationsPagination ? { first: Number(delegationsPagination), } : undefined, }, }); const { data: previousEpochData } = usePreviousEpochQuery({ variables: { epochId: (Number(data?.epoch.id) - 1).toString(), }, skip: !data?.epoch.id, }); useRefreshValidators(data?.epoch.timestamps.expiry, refetch); if (error) { return ( {error.message.includes(RPC_ERROR) ? t('resourceNotFound') : error.message} ); } if (loading) { return ( ); } return children({ data, previousEpochData }); }; export default NodeContainer;
{error.message.includes(RPC_ERROR) ? t('resourceNotFound') : error.message}