New Rococo (& old paths removal) (#4908)
* New Rococo (& old paths removal) * Remove old useProposal (extracted) * new genesis
This commit is contained in:
parent
3afc055b3b
commit
e9b192dbb4
@ -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';
|
||||
|
||||
@ -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: {
|
||||
|
||||
@ -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]
|
||||
);
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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[];
|
||||
|
||||
27
packages/page-parachains/src/Proposals/useProposal.ts
Normal file
27
packages/page-parachains/src/Proposals/useProposal.ts
Normal 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]
|
||||
);
|
||||
}
|
||||
@ -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))
|
||||
))
|
||||
|
||||
@ -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]
|
||||
);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user