Re-allow cancel when no funds raised (#5051)

* Re-allow cancel when no funds raised

* Remove unused check

* Update packages/page-parachains/src/Overview/Parachains.tsx
This commit is contained in:
Jaco Greeff 2021-04-11 12:41:05 +03:00 committed by GitHub
parent c7b8aeb737
commit 288c6d2f5d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 29 additions and 34 deletions

View File

@ -23,7 +23,7 @@ function Summary ({ auctionInfo, className, lastWinners }: Props): React.ReactEl
const { t } = useTranslation();
const { api } = useApi();
const bestNumber = useBestNumber();
const totalIssuance = useCall<Balance>(api.query.balances?.totalIssuance);
const totalIssuance = useCall<Balance>(api.query.balances.totalIssuance);
return (
<SummaryBox className={className}>

View File

@ -48,7 +48,7 @@ function Fund ({ bestNumber, className, isOngoing, leasePeriod, value: { childKe
const { api } = useApi();
const { allAccounts, isAccount } = useAccounts();
const [{ myAccounts, uniqueKeys }, setContributors] = useState<Contributions>(NO_CONTRIB);
const trigger = useEventTrigger([api.events.crowdloan?.Contributed, api.events.crowdloan?.Withdrew, api.events.crowdloan?.AllRefunded, api.events.crowdloan?.PartiallyRefunded], useCallback(
const trigger = useEventTrigger([api.events.crowdloan.Contributed, api.events.crowdloan.Withdrew, api.events.crowdloan.AllRefunded, api.events.crowdloan.PartiallyRefunded], useCallback(
({ event: { data } }: EventRecord) =>
((data.length === 1
? data[0] // AllRefunded, PartiallyRefunded [ParaId]
@ -92,7 +92,7 @@ function Fund ({ bestNumber, className, isOngoing, leasePeriod, value: { childKe
: leasePeriod.currentPeriod.gt(firstSlot)
);
const canContribute = isOngoing && !isCapped && !isWinner && !!blocksLeft;
const canDissolve = raised.isZero() && hasEnded;
const canDissolve = raised.isZero();
const canWithdraw = !raised.isZero() && hasEnded;
return (

View File

@ -150,9 +150,9 @@ function Parachains ({ actionsQueue, ids, leasePeriod, scheduled }: Props): Reac
const lastBlock = useCall<SignedBlockExtended>(api.derive.chain.subscribeNewBlocks);
const [{ lastBacked, lastIncluded, lastTimeout }, setLastEvents] = useState<LastEvents>(EMPTY_EVENTS);
const [validators, validatorGroups, activeIndices] = useCallMulti<MultiResult>([
api.query.session?.validators,
api.query.session.validators,
api.query.paraScheduler?.validatorGroups || api.query.scheduler?.validatorGroups,
api.query.shared?.activeValidatorIndices
api.query.shared.activeValidatorIndices
], optionsMulti);
const hrmp = useHrmp();
const hasLinksMap = useIsParasLinked(ids);

View File

@ -4,7 +4,7 @@
import React from 'react';
import { Button } from '@polkadot/react-components';
import { useApi, useToggle } from '@polkadot/react-hooks';
import { useToggle } from '@polkadot/react-hooks';
import { useTranslation } from '../translate';
import RegisterThread from './RegisterThread';
@ -15,22 +15,17 @@ interface Props {
function Actions ({ className }: Props): React.ReactElement<Props> {
const { t } = useTranslation();
const { api } = useApi();
const [isRegisterOpen, toggleRegisterOpen] = useToggle();
return (
<Button.Group className={className}>
{api.tx.registrar?.register && (
<>
<Button
icon='plus'
label={t<string>('Register')}
onClick={toggleRegisterOpen}
/>
{isRegisterOpen && (
<RegisterThread onClose={toggleRegisterOpen} />
)}
</>
<Button
icon='plus'
label={t<string>('Register')}
onClick={toggleRegisterOpen}
/>
{isRegisterOpen && (
<RegisterThread onClose={toggleRegisterOpen} />
)}
</Button.Group>
);

View File

@ -56,7 +56,7 @@ function Upcoming ({ id, leasePeriod, leases, nextAction }: Props): React.ReactE
[api.query.paras.heads, id],
[api.query.paras.upcomingParasGenesis, id],
[api.query.paras.paraLifecycles, id],
[api.query.registrar?.paras, id]
[api.query.registrar.paras, id]
], optMulti);
const periods = useMemo(

View File

@ -43,7 +43,7 @@ function ParachainsApp ({ basePath, className }: Props): React.ReactElement<Prop
const proposals = useProposals();
const actionsQueue = useActionsQueue();
const upcomingIds = useUpcomingIds();
const paraIds = useCall<ParaId[]>(api.query.paras?.parachains);
const paraIds = useCall<ParaId[]>(api.query.paras.parachains);
const items = useRef([
{

View File

@ -24,7 +24,7 @@ export default function useAuctionInfo (): AuctionInfo | undefined {
const { api } = useApi();
return useCallMulti<AuctionInfo>([
api.query.auctions?.auctionCounter,
api.query.auctions?.auctionInfo
api.query.auctions.auctionCounter,
api.query.auctions.auctionInfo
], optionsMulti);
}

View File

@ -161,8 +161,8 @@ export default function useFunds (): Campaigns {
const { api } = useApi();
const bestNumber = useBestNumber();
const [paraIds, setParaIds] = useState<ParaId[]>([]);
const trigger = useEventTrigger([api.events.crowdloan?.Created]);
const campaigns = useCall<Campaign[]>(api.query.crowdloan?.funds.multi, [paraIds], optFundMulti);
const trigger = useEventTrigger([api.events.crowdloan.Created]);
const campaigns = useCall<Campaign[]>(api.query.crowdloan.funds.multi, [paraIds], optFundMulti);
const leases = useCall<ParaId[]>(api.query.slots.leases.multi, [paraIds], optLeaseMulti);
const [result, setResult] = useState<Campaigns>(EMPTY);

View File

@ -30,12 +30,12 @@ const optChannels = {
export default function useHrmp (): AllChannels | undefined {
const { api } = useApi();
const [channelIds, setChannelIds] = useState<HrmpChannelId[] | null>(null);
const trigger = useEventTrigger([api.events.hrmp?.OpenChannelAccepted, api.events.hrmp?.ChannelClosed]);
const allChannels = useCall<AllChannels>(channelIds && api.query.hrmp?.hrmpChannels.multi, [channelIds], optChannels);
const trigger = useEventTrigger([api.events.hrmp.OpenChannelAccepted, api.events.hrmp.ChannelClosed]);
const allChannels = useCall<AllChannels>(channelIds && api.query.hrmp.hrmpChannels.multi, [channelIds], optChannels);
useEffect((): void => {
trigger &&
api.query.hrmp?.hrmpChannels
api.query.hrmp.hrmpChannels
.keys<[HrmpChannelId]>()
.then((keys) => setChannelIds(keys.map(({ args: [id] }) => id)))
.catch(console.error);

View File

@ -12,12 +12,12 @@ import { useAccounts, useApi, useEventTrigger } from '@polkadot/react-hooks';
export default function useOwnedIds (): OwnedId[] {
const { api } = useApi();
const { allAccounts } = useAccounts();
const trigger = useEventTrigger([api.events.registrar?.Registered]);
const trigger = useEventTrigger([api.events.registrar.Registered]);
const [state, setState] = useState<OwnedId[]>([]);
useEffect((): void => {
allAccounts && trigger &&
api.query.registrar?.paras
api.query.registrar.paras
.entries<Option<ParaInfo>, [ParaId]>()
.then((entries) => setState(() =>
entries

View File

@ -23,7 +23,7 @@ export default function useRanges (): [number, number][] {
return useMemo(
(): [number, number][] => {
if (isU32(api.consts.auctions?.leasePeriodsPerSlot)) {
if (isU32(api.consts.auctions.leasePeriodsPerSlot)) {
const ranges: [number, number][] = [];
for (let i = 0; api.consts.auctions.leasePeriodsPerSlot.gtn(i); i++) {

View File

@ -10,7 +10,7 @@ import { useApi, useEventTrigger } from '@polkadot/react-hooks';
export default function useUpomingIds (): ParaId[] | undefined {
const { api } = useApi();
const trigger = useEventTrigger([api.events.session.NewSession, api.events.registrar?.Registered]);
const trigger = useEventTrigger([api.events.session.NewSession, api.events.registrar.Registered]);
const [result, setResult] = useState<ParaId[] | undefined>();
useEffect((): void => {

View File

@ -126,10 +126,10 @@ export default function useWinningData (auctionInfo?: AuctionInfo): Winning[] |
const ranges = useRanges();
const [result, setResult] = useState<Winning[] | undefined>();
const bestNumber = useBestNumber();
const trigger = useEventTrigger([api.events.auctions?.BidAccepted]);
const trigger = useEventTrigger([api.events.auctions.BidAccepted]);
const triggerRef = useRef(trigger);
const initialEntries = useCall<[StorageKey<[BlockNumber]>, Option<WinningData>][]>(api.query.auctions?.winning.entries);
const optFirstData = useCall<Option<WinningData>>(api.query.auctions?.winning, FIRST_PARAM);
const initialEntries = useCall<[StorageKey<[BlockNumber]>, Option<WinningData>][]>(api.query.auctions.winning.entries);
const optFirstData = useCall<Option<WinningData>>(api.query.auctions.winning, FIRST_PARAM);
// should be fired once, all entries as an initial round
useEffect((): void => {