diff --git a/packages/page-parachains/src/Overview/Parachain.tsx b/packages/page-parachains/src/Overview/Parachain.tsx index 0159c920ef..06020c3f1f 100644 --- a/packages/page-parachains/src/Overview/Parachain.tsx +++ b/packages/page-parachains/src/Overview/Parachain.tsx @@ -4,14 +4,17 @@ import type { Option } from '@polkadot/types'; import type { BlockNumber, HeadData, ParaId } from '@polkadot/types/interfaces'; -import React from 'react'; +import BN from 'bn.js'; +import React, { useMemo } from 'react'; import { useApi, useCall } from '@polkadot/react-hooks'; +import { BlockToTime } from '@polkadot/react-query'; import { formatNumber } from '@polkadot/util'; import { sliceHex } from './util'; interface Props { + bestNumber?: BN; className?: string; id: ParaId; } @@ -24,23 +27,29 @@ const transformHead = { }; const transformMark = { - transform: (watermark: Option): string | null => + transform: (watermark: Option): BlockNumber | null => watermark.isSome - ? watermark.unwrap().toHuman() + ? watermark.unwrap() : null }; -function Parachain ({ className = '', id }: Props): React.ReactElement { +function Parachain ({ bestNumber, className = '', id }: Props): React.ReactElement { const { api } = useApi(); const headHex = useCall(api.query.paras.heads, [id], transformHead); - const watermark = useCall(api.query.hrmp?.hrmpWatermarks, [id], transformMark); + const watermark = useCall(api.query.hrmp?.hrmpWatermarks, [id], transformMark); + + const blockDelay = useMemo( + () => watermark && bestNumber && bestNumber.sub(watermark), + [bestNumber, watermark] + ); return (

{formatNumber(id)}

{headHex} - {watermark} + {formatNumber(watermark)} + {blockDelay && } ); } diff --git a/packages/page-parachains/src/Overview/ParachainList.tsx b/packages/page-parachains/src/Overview/ParachainList.tsx index 567b0a4850..6c7a9feaa2 100644 --- a/packages/page-parachains/src/Overview/ParachainList.tsx +++ b/packages/page-parachains/src/Overview/ParachainList.tsx @@ -3,9 +3,11 @@ import type { ParaId } from '@polkadot/types/interfaces'; +import BN from 'bn.js'; import React, { useRef } from 'react'; import { Table } from '@polkadot/react-components'; +import { useApi, useCall } from '@polkadot/react-hooks'; import { useTranslation } from '../translate'; import Parachain from './Parachain'; @@ -16,11 +18,13 @@ interface Props { function ParachainList ({ ids }: Props): React.ReactElement { const { t } = useTranslation(); + const { api } = useApi(); + const bestNumber = useCall(api.derive.chain.bestNumber); const headerRef = useRef([ [t('parachains'), 'start', 2], [t('heads'), 'start'], - [t('watermark')] + [t('watermark'), 2] ]); return ( @@ -30,6 +34,7 @@ function ParachainList ({ ids }: Props): React.ReactElement { > {ids?.map((id): React.ReactNode => ( diff --git a/packages/page-parachains/src/Overview/Proposal.tsx b/packages/page-parachains/src/Overview/Proposal.tsx index 162cb1fd7e..930628f987 100644 --- a/packages/page-parachains/src/Overview/Proposal.tsx +++ b/packages/page-parachains/src/Overview/Proposal.tsx @@ -96,7 +96,7 @@ function Proposal ({ approvedIds, id, scheduled }: Props): React.ReactElement ) } - {proposal.proposal && } + {proposal.proposal && } {initialHex} {validationHex} {proposal.proposal?.validators.map((validatorId) => (