Show scheduled/approved (#4383)
This commit is contained in:
parent
5374099285
commit
c57ff7057a
@ -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}
|
||||
|
||||
@ -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';
|
||||
|
||||
|
||||
@ -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[];
|
||||
}
|
||||
|
||||
@ -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]
|
||||
// );
|
||||
// }
|
||||
|
||||
Loading…
Reference in New Issue
Block a user