Show scheduled info on proposals (#4380)
This commit is contained in:
parent
283398808c
commit
3d144f7ba4
@ -17,7 +17,7 @@ interface Props {
|
||||
proposal: ProposalExt;
|
||||
}
|
||||
|
||||
function Proposal ({ proposal: { id, isApproved, proposal: { balance, genesisHead, name, proposer, validationCode, validators } } }: Props): React.ReactElement<Props> {
|
||||
function Proposal ({ proposal: { id, isApproved, isScheduled, proposal: { balance, genesisHead, name, proposer, validationCode, validators } } }: Props): React.ReactElement<Props> {
|
||||
const { t } = useTranslation();
|
||||
const { api } = useApi();
|
||||
const { hasSudoKey, sudoKey } = useSudo();
|
||||
@ -41,10 +41,10 @@ function Proposal ({ proposal: { id, isApproved, proposal: { balance, genesisHea
|
||||
<tr>
|
||||
<td className='number'><h1>{formatNumber(id)}</h1></td>
|
||||
<td className='badge'>
|
||||
{isApproved && (
|
||||
{(isApproved || isScheduled) && (
|
||||
<Badge
|
||||
color='green'
|
||||
icon='check'
|
||||
icon={isScheduled ? 'clock' : 'check'}
|
||||
/>
|
||||
)}
|
||||
</td>
|
||||
|
||||
@ -22,7 +22,7 @@ function Overview (): React.ReactElement<Props> {
|
||||
const { api } = useApi();
|
||||
const paraIds = useCall<ParaId[]>(api.query.paras?.parachains);
|
||||
const upcomingIds = useCall<ParaId[]>(api.query.paras?.upcomingParas);
|
||||
const proposals = useProposals(paraIds);
|
||||
const proposals = useProposals();
|
||||
|
||||
return (
|
||||
<>
|
||||
|
||||
@ -6,5 +6,6 @@ import type { ParachainProposal, ParaId } from '@polkadot/types/interfaces';
|
||||
export interface ProposalExt {
|
||||
id: ParaId;
|
||||
isApproved: boolean;
|
||||
isScheduled: boolean;
|
||||
proposal: ParachainProposal;
|
||||
}
|
||||
|
||||
@ -10,18 +10,18 @@ import { useEffect, useState } from 'react';
|
||||
|
||||
import { useApi, useCall, useIsMountedRef } from '@polkadot/react-hooks';
|
||||
|
||||
function createExt (paraIds: ParaId[], approvedIds: ParaId[], proposals: [{ args: [ParaId] }, Option<ParachainProposal>][], scheduledProposals: [Codec, ParaId[]][]): ProposalExt[] {
|
||||
function createExt (approvedIds: ParaId[], proposals: [{ args: [ParaId] }, Option<ParachainProposal>][], scheduledProposals: [Codec, ParaId[]][]): ProposalExt[] {
|
||||
return proposals
|
||||
.filter(([, opt]) => opt.isSome)
|
||||
.map(([{ args: [id] }, optProposal]) => ({
|
||||
id,
|
||||
isApproved: approvedIds.some((a) => a.eq(id)) || scheduledProposals.some(([, ids]) => ids.some((s) => s.eq(id))),
|
||||
isApproved: approvedIds.some((a) => a.eq(id)),
|
||||
isScheduled: scheduledProposals.some(([, ids]) => ids.some((s) => s.eq(id))),
|
||||
proposal: optProposal.unwrap()
|
||||
}))
|
||||
.filter(({ id, isApproved }) => !isApproved || !paraIds.some((p) => p.eq(id)));
|
||||
}));
|
||||
}
|
||||
|
||||
export default function useProposals (paraIds: ParaId[] = []): ProposalExt[] | undefined {
|
||||
export default function useProposals (): ProposalExt[] | undefined {
|
||||
const { api } = useApi();
|
||||
const mountedRef = useIsMountedRef();
|
||||
const [state, setState] = useState<ProposalExt[] | undefined>();
|
||||
@ -48,10 +48,10 @@ export default function useProposals (paraIds: ParaId[] = []): ProposalExt[] | u
|
||||
])
|
||||
.then(([proposals, scheduledProposals]) =>
|
||||
mountedRef.current &&
|
||||
setState(createExt(paraIds, approvedIds, proposals as any, scheduledProposals as any))
|
||||
setState(createExt(approvedIds, proposals as any, scheduledProposals as any))
|
||||
)
|
||||
.catch(console.error);
|
||||
}, [api, approvedIds, mountedRef, paraIds, trigger]);
|
||||
}, [api, approvedIds, mountedRef, trigger]);
|
||||
|
||||
return state;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user