From 04058c67ddbe79574988f86c82cd1b4d2106ea0c Mon Sep 17 00:00:00 2001 From: Jaco Date: Mon, 14 Feb 2022 13:59:54 +0100 Subject: [PATCH] Support PalletSchedulerScheduledV3 (#6985) * Support PalletSchedulerScheduledV3 * Adjust --- .../page-democracy/src/Execute/Scheduled.tsx | 4 ++- .../page-democracy/src/Execute/Scheduler.tsx | 27 +++++++++++++------ packages/page-democracy/src/Execute/types.ts | 2 +- .../react-components/src/CallExpander.tsx | 2 +- 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/packages/page-democracy/src/Execute/Scheduled.tsx b/packages/page-democracy/src/Execute/Scheduled.tsx index 9e3b82ee06..2b2b0ad5ae 100644 --- a/packages/page-democracy/src/Execute/Scheduled.tsx +++ b/packages/page-democracy/src/Execute/Scheduled.tsx @@ -22,7 +22,9 @@ function Scheduled ({ bestNumber, className = '', value: { blockNumber, call, ma return ( - + + + {name && ( name.isAscii diff --git a/packages/page-democracy/src/Execute/Scheduler.tsx b/packages/page-democracy/src/Execute/Scheduler.tsx index 0445242f3b..f71786e375 100644 --- a/packages/page-democracy/src/Execute/Scheduler.tsx +++ b/packages/page-democracy/src/Execute/Scheduler.tsx @@ -2,7 +2,8 @@ // SPDX-License-Identifier: Apache-2.0 import type { Option } from '@polkadot/types'; -import type { BlockNumber, Scheduled } from '@polkadot/types/interfaces'; +import type { BlockNumber, Call, Scheduled } from '@polkadot/types/interfaces'; +import type { FrameSupportScheduleMaybeHashed, PalletSchedulerScheduledV3 } from '@polkadot/types/lookup'; import type { ScheduledExt } from './types'; import React, { useMemo, useRef } from 'react'; @@ -18,16 +19,26 @@ interface Props { } const transformEntries = { - transform: (entries: [{ args: [BlockNumber] }, Option[]][]): ScheduledExt[] => { + transform: (entries: [{ args: [BlockNumber] }, Option[]][]): ScheduledExt[] => { return entries - .filter(([, vecSchedOpt]) => vecSchedOpt.some((schedOpt) => schedOpt.isSome)) - .reduce((items: ScheduledExt[], [key, vecSchedOpt]): ScheduledExt[] => { + .filter(([, all]) => all.some((o) => o.isSome)) + .reduce((items: ScheduledExt[], [key, all]): ScheduledExt[] => { const blockNumber = key.args[0]; - return vecSchedOpt - .filter((schedOpt) => schedOpt.isSome) - .map((schedOpt) => schedOpt.unwrap()) - .reduce((items: ScheduledExt[], { call, maybeId, maybePeriodic, priority }, index) => { + return all + .filter((o) => o.isSome) + .map((o) => o.unwrap()) + .reduce((items: ScheduledExt[], { call: callOrEnum, maybeId, maybePeriodic, priority }, index) => { + let call: Call | null = null; + + if ((callOrEnum as unknown as FrameSupportScheduleMaybeHashed).inner) { + if ((callOrEnum as unknown as FrameSupportScheduleMaybeHashed).isValue) { + call = (callOrEnum as unknown as FrameSupportScheduleMaybeHashed).asValue; + } + } else { + call = callOrEnum as Call; + } + items.push({ blockNumber, call, key: `${blockNumber.toString()}-${index}`, maybeId, maybePeriodic, priority }); return items; diff --git a/packages/page-democracy/src/Execute/types.ts b/packages/page-democracy/src/Execute/types.ts index 5b22dff8f0..27fd7f7152 100644 --- a/packages/page-democracy/src/Execute/types.ts +++ b/packages/page-democracy/src/Execute/types.ts @@ -6,7 +6,7 @@ import type { BlockNumber, Call, SchedulePeriod, SchedulePriority } from '@polka export interface ScheduledExt { blockNumber: BlockNumber; - call: Call; + call: Call | null; key: string; maybeId: Option; maybePeriodic: Option; diff --git a/packages/react-components/src/CallExpander.tsx b/packages/react-components/src/CallExpander.tsx index ed2d3e6732..6b8c9b2bc5 100644 --- a/packages/react-components/src/CallExpander.tsx +++ b/packages/react-components/src/CallExpander.tsx @@ -12,7 +12,7 @@ interface Props { children?: React.ReactNode; className?: string; labelHash?: React.ReactNode; - value: Call; + value?: Call | null; withHash?: boolean; }