From 25324be46d69e1e39a76ea87358d8bb17d15b2d6 Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Sat, 16 Jan 2021 12:37:02 +0100 Subject: [PATCH] Refresh scheduled/rpoposals on session change (#4432) --- .../src/Proposals/useProposals.ts | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/packages/page-parachains/src/Proposals/useProposals.ts b/packages/page-parachains/src/Proposals/useProposals.ts index 6862e15bbf..b9fcb85981 100644 --- a/packages/page-parachains/src/Proposals/useProposals.ts +++ b/packages/page-parachains/src/Proposals/useProposals.ts @@ -9,14 +9,16 @@ import { useEffect, useMemo, useState } from 'react'; import { useApi, useCall, useIsMountedRef } from '@polkadot/react-hooks'; -function createResult (approvedIds: ParaId[], proposalKeys: { args: [ParaId] }[], scheduledProposals: [{ args: [SessionIndex] }, ParaId[]][]): Proposals { +function createResult (sessionIndex: SessionIndex, approvedIds: ParaId[], proposalKeys: { args: [ParaId] }[], scheduledProposals: [{ args: [SessionIndex] }, ParaId[]][]): Proposals { return { approvedIds, proposalIds: proposalKeys.map(({ args: [id] }) => id), - scheduled: scheduledProposals.map(([{ args: [sessionIndex] }, scheduledIds]) => ({ - scheduledIds, - sessionIndex - })) + scheduled: scheduledProposals + .map(([{ args: [sessionIndex] }, scheduledIds]) => ({ + scheduledIds, + sessionIndex + })) + .filter((s) => s.sessionIndex.gt(sessionIndex)) }; } @@ -25,6 +27,7 @@ export default function useProposals (): Proposals | undefined { const mountedRef = useIsMountedRef(); const [state, setState] = useState(); const [trigger, setTrigger] = useState(Date.now()); + const sessionIndex = useCall(api.query.session.currentIndex); const approvedIds = useCall(api.query.proposeParachain?.approvedProposals); const events = useCall(api.query.system.events); @@ -39,7 +42,7 @@ export default function useProposals (): Proposals | undefined { // re-get all our entries in the list useEffect((): void => { - approvedIds && trigger && + approvedIds && sessionIndex && trigger && Promise .all([ api.query.proposeParachain.proposals.keys(), @@ -47,10 +50,10 @@ export default function useProposals (): Proposals | undefined { ]) .then(([proposals, scheduledProposals]) => mountedRef.current && - setState(createResult(approvedIds, proposals as any, scheduledProposals as any)) + setState(createResult(sessionIndex, approvedIds, proposals as any, scheduledProposals as any)) ) .catch(console.error); - }, [api, approvedIds, mountedRef, trigger]); + }, [api, approvedIds, mountedRef, sessionIndex, trigger]); return state; }