From 715a2fa2665cad43fc7bd2cd8fbd7156644d34ae Mon Sep 17 00:00:00 2001 From: Jaco Date: Tue, 20 Sep 2022 09:28:27 +0300 Subject: [PATCH] Default values for At/After referenda (#8147) --- .../page-referenda/src/Referenda/Submit.tsx | 33 ++++++++++++++----- packages/react-params/src/Param/Enum.tsx | 9 +++-- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/packages/page-referenda/src/Referenda/Submit.tsx b/packages/page-referenda/src/Referenda/Submit.tsx index c740db96e6..fe25c1fb28 100644 --- a/packages/page-referenda/src/Referenda/Submit.tsx +++ b/packages/page-referenda/src/Referenda/Submit.tsx @@ -7,7 +7,7 @@ import type { PalletReferendaTrackInfo } from '@polkadot/types/lookup'; import type { BN } from '@polkadot/util'; import type { PalletReferenda } from '../types'; -import React, { useCallback, useMemo, useState } from 'react'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; import styled from 'styled-components'; import { getGovernanceTracks } from '@polkadot/apps-config'; @@ -59,8 +59,18 @@ function Submit ({ className = '', members, onClose, palletReferenda, tracks }: const [trackId, setTrack] = useState(); const [origin, setOrigin] = useState(null); const [atAfter, setAtAfter] = useState(null); + const [defaultAtAfter, setDefaultAtAfter] = useState(null); const [{ hash, isHashValid }, setHash] = useState({ hash: '', isHashValid: false }); + useEffect((): void => { + bestNumber && setDefaultAtAfter((prev) => + prev || [{ + isValid: true, + value: { After: bestNumber.addn(1000) } + }] + ); + }, [api, bestNumber]); + const originParam = useMemo( () => trackId !== undefined && getOrigin(api, specName, palletReferenda, tracks, trackId), [api, palletReferenda, specName, trackId, tracks] @@ -78,9 +88,11 @@ function Submit ({ className = '', members, onClose, palletReferenda, tracks }: const [originType, atAfterType] = useMemo( () => [ [{ + name: 'origin', type: getTypeDef(api.tx[palletReferenda as 'referenda'].submit.meta.args[0].type.toString()) }], [{ + name: 'enact', type: getTypeDef(api.tx[palletReferenda as 'referenda'].submit.meta.args[2].type.toString()) }] ], @@ -161,14 +173,17 @@ function Submit ({ className = '', members, onClose, palletReferenda, tracks }: /> )} - ('The moment of enactment, either at a specific block, or after a specific block. Currently at #{{bestNumber}}, the selected block should be after the current best.', { replace: { bestNumber: formatNumber(bestNumber) } })}> - - + {bestNumber && defaultAtAfter && ( + ('The moment of enactment, either at a specific block, or after a specific block. Currently at #{{bestNumber}}, the selected block should be after the current best.', { replace: { bestNumber: formatNumber(bestNumber) } })}> + + + )} )[0] + : isObject(defaultValue.value) + ? Object.keys(defaultValue.value as Record)[0] + : options[0] && options[0].value : options[0] && options[0].value, initialParams: defaultValue && defaultValue.value ? defaultValue.value instanceof Enum ? [{ isValid: true, value: defaultValue.value.inner }] - : undefined + : isObject(defaultValue.value) + ? [{ isValid: true, value: (defaultValue.value as Record)[Object.keys(defaultValue.value as Record)[0]] }] + : undefined : undefined }; }