Show scheduled/approved (#4383)

This commit is contained in:
Jaco Greeff 2021-01-13 10:12:25 +01:00 committed by GitHub
parent 5374099285
commit c57ff7057a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 39 additions and 42 deletions

View File

@ -2,7 +2,7 @@
// SPDX-License-Identifier: Apache-2.0
import type { ParaId } from '@polkadot/types/interfaces';
import type { ScheduledProposals } from './useProposals';
import type { ScheduledProposals } from './types';
import React, { useMemo } from 'react';
@ -33,12 +33,12 @@ function Proposal ({ approvedIds, id, scheduled }: Props): React.ReactElement<Pr
);
const initialHex = useMemo(
() => proposal && sliceHex(proposal.proposal.genesisHead, 8),
() => proposal?.proposal && sliceHex(proposal.proposal.genesisHead, 8),
[proposal]
);
const validationHex = useMemo(
() => proposal && sliceHex(proposal.proposal.validationCode, 8),
() => proposal?.proposal && sliceHex(proposal.proposal.validationCode, 8),
[proposal]
);
@ -53,12 +53,12 @@ function Proposal ({ approvedIds, id, scheduled }: Props): React.ReactElement<Pr
/>
)}
</td>
<td className='start together'>{proposal?.proposal.name.toUtf8()}</td>
<td className='address'>{proposal && <AddressSmall value={proposal.proposal.proposer} />}</td>
<td className='balance'>{proposal && <FormatBalance value={proposal.proposal.balance} />}</td>
<td className='start together'>{proposal?.proposal?.name.toUtf8()}</td>
<td className='address'>{proposal?.proposal && <AddressSmall value={proposal.proposal.proposer} />}</td>
<td className='balance'>{proposal?.proposal && <FormatBalance value={proposal.proposal.balance} />}</td>
<td className='start hash together'>{initialHex}</td>
<td className='start hash together'>{validationHex}</td>
<td className='address all'>{proposal?.proposal.validators.map((validatorId) => (
<td className='address all'>{proposal?.proposal?.validators.map((validatorId) => (
<AddressMini
key={validatorId.toString()}
value={validatorId}

View File

@ -1,7 +1,7 @@
// Copyright 2017-2021 @polkadot/app-parachains authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { Proposals as UseProposals } from './useProposals';
import type { Proposals as UseProposals } from './types';
import React, { useRef } from 'react';

View File

@ -1,11 +1,22 @@
// Copyright 2017-2021 @polkadot/app-parachains authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { ParachainProposal, ParaId } from '@polkadot/types/interfaces';
import type { ParachainProposal, ParaId, SessionIndex } from '@polkadot/types/interfaces';
export interface ProposalExt {
id: ParaId;
isApproved: boolean;
isScheduled: boolean;
proposal: ParachainProposal;
proposal?: ParachainProposal;
}
export interface ScheduledProposals {
scheduledIds: ParaId[];
sessionIndex: SessionIndex;
}
export interface Proposals {
approvedIds: ParaId[];
proposalIds: ParaId[];
scheduled: ScheduledProposals[];
}

View File

@ -1,27 +1,14 @@
// Copyright 2017-2021 @polkadot/app-parachains authors & contributors
// SPDX-License-Identifier: Apache-2.0
// import type { Option } from '@polkadot/types';
// import type { Codec } from '@polkadot/types/types';
import type { Option } from '@polkadot/types';
import type { EventRecord, ParachainProposal, ParaId, SessionIndex } from '@polkadot/types/interfaces';
import type { ProposalExt, Proposals, ScheduledProposals } from './types';
import type { EventRecord, ParaId, SessionIndex } from '@polkadot/types/interfaces';
import type { ProposalExt } from './types';
import { useEffect, useState } from 'react';
import { useEffect, useMemo, useState } from 'react';
import { useApi, useCall, useIsMountedRef } from '@polkadot/react-hooks';
export interface ScheduledProposals {
scheduledIds: ParaId[];
sessionIndex: SessionIndex;
}
export interface Proposals {
approvedIds: ParaId[];
proposalIds: ParaId[];
scheduled: ScheduledProposals[];
}
function createResult (approvedIds: ParaId[], proposalKeys: { args: [ParaId] }[], scheduledProposals: [{ args: [SessionIndex] }, ParaId[]][]): Proposals {
return {
approvedIds,
@ -68,20 +55,19 @@ export default function useProposals (): Proposals | undefined {
return state;
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
export function useProposal (id: ParaId, approvedIds: ParaId[], scheduled: ScheduledProposals[]): ProposalExt | undefined {
return undefined;
const { api } = useApi();
const opt = useCall<Option<ParachainProposal>>(api.query.proposeParachain_UNUSED?.proposals, [id]);
return useMemo(
(): ProposalExt => ({
id,
isApproved: approvedIds.some((a) => a.eq(id)),
isScheduled: scheduled.some(({ scheduledIds }) => scheduledIds.some((s) => s.eq(id))),
proposal: opt && opt.isSome
? opt.unwrap()
: undefined
}),
[approvedIds, id, opt, scheduled]
);
}
// export function useProposal (id: ParaId, approvedIds: ParaId[], scheduled: Scheduled[]): ProposalExt | undefined {
// const { api } = useApi();
// const proposal = useCall<Option<ParachainProposal>>(api.query.proposeParachain.proposals, [id]);
// return useMemo(
// (): ProposalExt | undefined => {
// proposal && proposal?.isSome
// ?
// ),
// [approvedIds, id, proposal, scheduled]
// );
// }