diff --git a/packages/page-democracy/src/Execute/DispatchQueue.tsx b/packages/page-democracy/src/Execute/DispatchQueue.tsx index c63c575115..1631327a56 100644 --- a/packages/page-democracy/src/Execute/DispatchQueue.tsx +++ b/packages/page-democracy/src/Execute/DispatchQueue.tsx @@ -3,7 +3,7 @@ import type { DeriveDispatch } from '@polkadot/api-derive/types'; -import React, { useRef } from 'react'; +import React, { useMemo, useRef } from 'react'; import { Table } from '@polkadot/react-components'; import { useApi, useBestNumber, useCall } from '@polkadot/react-hooks'; @@ -21,6 +21,11 @@ function DispatchQueue ({ className }: Props): React.ReactElement | null const bestNumber = useBestNumber(); const queued = useCall(api.derive.democracy.dispatchQueue); + const filtered = useMemo( + () => bestNumber && queued && queued.filter(({ at }) => at.gte(bestNumber)), + [bestNumber, queued] + ); + const headerRef = useRef([ [t('dispatch queue'), 'start', 2], [t('enact')], @@ -31,10 +36,10 @@ function DispatchQueue ({ className }: Props): React.ReactElement | null return ( ('Nothing queued for execution')} + empty={filtered && t('Nothing queued for execution')} header={headerRef.current} > - {bestNumber && queued?.filter(({ at }) => bestNumber.lte(at)).map((entry): React.ReactNode => ( + {filtered?.map((entry): React.ReactNode => ( { - const bestNumber = useBestNumber(); +function Scheduled ({ bestNumber, className = '', value: { blockNumber, call, maybeId, maybePeriodic } }: Props): React.ReactElement { const period = maybePeriodic.unwrapOr(null); const name = maybeId.unwrapOr(null); diff --git a/packages/page-democracy/src/Execute/Scheduler.tsx b/packages/page-democracy/src/Execute/Scheduler.tsx index ab84269d6e..19e7ba964e 100644 --- a/packages/page-democracy/src/Execute/Scheduler.tsx +++ b/packages/page-democracy/src/Execute/Scheduler.tsx @@ -5,10 +5,10 @@ import type { Option } from '@polkadot/types'; import type { BlockNumber, Scheduled } from '@polkadot/types/interfaces'; import type { ScheduledExt } from './types'; -import React, { useRef } from 'react'; +import React, { useMemo, useRef } from 'react'; import { Table } from '@polkadot/react-components'; -import { useApi, useCall } from '@polkadot/react-hooks'; +import { useApi, useBestNumber, useCall } from '@polkadot/react-hooks'; import { useTranslation } from '../translate'; import ScheduledView from './Scheduled'; @@ -39,8 +39,14 @@ const transformEntries = { function Schedule ({ className = '' }: Props): React.ReactElement { const { t } = useTranslation(); const { api } = useApi(); + const bestNumber = useBestNumber(); const items = useCall(api.query.scheduler.agenda.entries, undefined, transformEntries); + const filtered = useMemo( + () => bestNumber && items && items.filter(({ blockNumber }) => blockNumber.gte(bestNumber)), + [bestNumber, items] + ); + const headerRef = useRef([ [t('scheduled'), 'start'], [t('id'), 'start'], @@ -52,13 +58,14 @@ function Schedule ({ className = '' }: Props): React.ReactElement { return (
('No active schedules')} + empty={filtered && t('No active schedules')} header={headerRef.current} > - {items?.map((scheduled): React.ReactNode => ( + {filtered?.map((value): React.ReactNode => ( ))}