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:
parent
c7b8aeb737
commit
288c6d2f5d
@ -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}>
|
||||
|
||||
@ -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 (
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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>
|
||||
);
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -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([
|
||||
{
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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++) {
|
||||
|
||||
@ -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 => {
|
||||
|
||||
@ -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 => {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user