New Rococo (& old paths removal) (#4908)

* New Rococo (& old paths removal)

* Remove old useProposal (extracted)

* new genesis
This commit is contained in:
Jaco Greeff 2021-03-23 23:06:13 +01:00 committed by GitHub
parent 3afc055b3b
commit e9b192dbb4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 54 additions and 59 deletions

View File

@ -20,3 +20,5 @@ export const KUSAMA_GENESIS = getGenesis('kusama');
export const POLKADOT_GENESIS = getGenesis('polkadot');
export const POLKADOT_DENOM_BLOCK = new BN(1248328);
export const ROCOCO_GENESIS = '0x47381ee0697153d64404fc578392c8fd5cba9073391908f46c888498415647bd';

View File

@ -4,6 +4,7 @@
import type { TFunction } from 'i18next';
import type { LinkOption } from '../settings/types';
import { ROCOCO_GENESIS } from '../api/constants';
import { expandEndpoints } from './util';
/* eslint-disable sort-keys */
@ -18,7 +19,7 @@ import { expandEndpoints } from './util';
export function createRococo (t: TFunction): LinkOption[] {
return expandEndpoints(t, [{
dnslink: 'rococo',
genesisHash: '0x19c0e4fa8ab75f5ac7865e0b8f74ff91eb9a100d336f423cd013a8befba40299',
genesisHash: ROCOCO_GENESIS,
info: 'rococo',
text: t('rpc.rococo', 'Rococo', { ns: 'apps-config' }),
providers: {

View File

@ -41,14 +41,12 @@ function Bid ({ auctionInfo, className, id, ownedIds }: Props): React.ReactEleme
(): Option[] => {
const [leasePeriod] = auctionInfo || [null, null];
if (!leasePeriod) {
return [];
}
return RANGES.map(([first, last], value): Option => ({
text: `${formatNumber(leasePeriod.addn(first))} - ${formatNumber(leasePeriod.addn(last))}`,
value
}));
return leasePeriod
? RANGES.map(([first, last], value): Option => ({
text: `${formatNumber(leasePeriod.addn(first))} - ${formatNumber(leasePeriod.addn(last))}`,
value
}))
: [];
},
[auctionInfo]
);

View File

@ -1,7 +1,7 @@
// Copyright 2017-2021 @polkadot/app-parachains authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { bool, Option, Vec } from '@polkadot/types';
import type { Option, Vec } from '@polkadot/types';
import type { AccountId, BlockNumber, CandidatePendingAvailability, HeadData, Header, ParaId, ParaInfo, ParaLifecycle } from '@polkadot/types/interfaces';
import type { Codec } from '@polkadot/types/types';
import type { EventMapInfo, QueuedAction } from './types';
@ -12,7 +12,7 @@ import React, { useCallback, useEffect, useMemo, useState } from 'react';
import { AddressMini, Badge, Expander, ParaLink } from '@polkadot/react-components';
import { useApi, useCall, useCallMulti, useParaApi } from '@polkadot/react-hooks';
import { BlockToTime } from '@polkadot/react-query';
import { formatNumber, isFunction } from '@polkadot/util';
import { formatNumber } from '@polkadot/util';
import { useTranslation } from '../translate';
import { sliceHex } from '../util';
@ -31,7 +31,7 @@ interface Props {
validators?: AccountId[];
}
type QueryResult = [Option<HeadData>, Option<BlockNumber>, Option<ParaLifecycle>, Vec<Codec>, Vec<Codec>, Vec<Codec>, Vec<Codec>, Option<BlockNumber>, Option<CandidatePendingAvailability>, Option<ParaInfo | bool>];
type QueryResult = [Option<HeadData>, Option<BlockNumber>, Option<ParaLifecycle>, Vec<Codec>, Vec<Codec>, Vec<Codec>, Vec<Codec>, Option<BlockNumber>, Option<CandidatePendingAvailability>, Option<ParaInfo>];
interface QueryState {
headHex: string | null;
@ -46,12 +46,6 @@ interface QueryState {
watermark: BlockNumber | null;
}
function getParaInfo (info: ParaInfo | bool | null): ParaInfo | null {
return !info || isFunction((info as bool).isTrue)
? null
: info as ParaInfo;
}
const transformHeader = {
transform: (header: Header) => header.number.unwrap()
};
@ -74,7 +68,7 @@ const optionsMulti = {
? sliceHex(headData.unwrap())
: null,
lifecycle: optLifecycle.unwrapOr(null),
paraInfo: getParaInfo(optInfo.unwrapOr(null)),
paraInfo: optInfo.unwrapOr(null),
pendingAvail: optPending.unwrapOr(null),
qDmp: dmp.length,
qHrmpE: hrmpE.length,

View File

@ -12,8 +12,8 @@ import { FormatBalance } from '@polkadot/react-query';
import { formatNumber } from '@polkadot/util';
import { useTranslation } from '../translate';
import { useProposal } from '../useProposals';
import { sliceHex } from '../util';
import useProposal from './useProposal';
interface Props {
approvedIds: ParaId[];

View File

@ -0,0 +1,27 @@
// Copyright 2017-2021 @polkadot/app-parachains authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { Option } from '@polkadot/types';
import type { ParachainProposal, ParaId } from '@polkadot/types/interfaces';
import type { ProposalExt, ScheduledProposals } from '../types';
import { useMemo } from 'react';
import { useApi, useCall } from '@polkadot/react-hooks';
export default function useProposal (id: ParaId, approvedIds: ParaId[], scheduled: ScheduledProposals[]): ProposalExt {
const { api } = useApi();
const opt = useCall<Option<ParachainProposal>>(api.query.proposeParachain.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]
);
}

View File

@ -1,19 +1,13 @@
// Copyright 2017-2021 @polkadot/app-parachains authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { bool, Option } from '@polkadot/types';
import type { Option } from '@polkadot/types';
import type { ParaId, ParaInfo } from '@polkadot/types/interfaces';
import type { OwnedId } from './types';
import { useEffect, useState } from 'react';
import { useAccounts, useApi, useEventTrigger } from '@polkadot/react-hooks';
import { isFunction } from '@polkadot/util';
// Current Rococo returns a bool value for this entry
function isParaInfo (info: ParaInfo | bool): info is ParaInfo {
return !isFunction((info as bool).isTrue);
}
export default function useOwnedIds (): OwnedId[] {
const { api } = useApi();
@ -24,23 +18,21 @@ export default function useOwnedIds (): OwnedId[] {
useEffect((): void => {
allAccounts && trigger &&
api.query.registrar?.paras
.entries<Option<ParaInfo | bool>, [ParaId]>()
.entries<Option<ParaInfo>, [ParaId]>()
.then((entries) => setState(() =>
entries
.map(([{ args: [paraId] }, optInfo]): OwnedId | null => {
if (!optInfo.isSome) {
if (optInfo.isNone) {
return null;
}
const paraInfo = optInfo.unwrap();
return isParaInfo(paraInfo)
? {
manager: paraInfo.manager.toString(),
paraId,
paraInfo
}
: null;
return {
manager: paraInfo.manager.toString(),
paraId,
paraInfo
};
})
.filter((info): info is OwnedId => !!info && allAccounts.some((a) => a === info.manager))
))

View File

@ -1,13 +1,12 @@
// Copyright 2017-2021 @polkadot/app-parachains authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { Option } from '@polkadot/types';
import type { ParachainProposal, ParaId, SessionIndex } from '@polkadot/types/interfaces';
import type { ProposalExt, Proposals, ScheduledProposals } from './types';
import type { ParaId, SessionIndex } from '@polkadot/types/interfaces';
import type { Proposals } from './types';
import { useEffect, useMemo, useState } from 'react';
import { useEffect, useState } from 'react';
import { useApi, useCall, useCallMulti, useEventTrigger, useIsMountedRef } from '@polkadot/react-hooks';
import { useApi, useCallMulti, useEventTrigger, useIsMountedRef } from '@polkadot/react-hooks';
type MultiQuery = [SessionIndex | undefined, ParaId[] | undefined];
@ -55,21 +54,3 @@ export default function useProposals (): Proposals | undefined {
return state;
}
export function useProposal (id: ParaId, approvedIds: ParaId[], scheduled: ScheduledProposals[]): ProposalExt {
const { api } = useApi();
// const opt = useCall<Option<ParachainProposal>>(api.query.proposeParachain_UNUSED?.proposals, [id]);
const opt = useCall<Option<ParachainProposal>>(api.query.proposeParachain.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]
);
}