Calculate auction range correctly (no BN_THREE) (#5502)
* Calculate auction range correctly (no BN_THREE) * Unneeded subtract
This commit is contained in:
parent
a920aed4c2
commit
98891fe0da
@ -10,8 +10,9 @@ import type { EntryInfo, EntryInfoTyped, EntryType } from './types';
|
||||
|
||||
import { useEffect, useState } from 'react';
|
||||
|
||||
import { useLeaseRangeMax } from '@polkadot/app-parachains/useLeaseRanges';
|
||||
import { useApi, useBestNumber, useBlockTime, useCall } from '@polkadot/react-hooks';
|
||||
import { BN_ONE, BN_THREE } from '@polkadot/util';
|
||||
import { BN_ONE, BN_ZERO } from '@polkadot/util';
|
||||
|
||||
interface DateExt {
|
||||
date: Date;
|
||||
@ -28,8 +29,8 @@ function newDate (blocks: BN, blockTime: number): DateExt {
|
||||
return { date, dateTime: date.getTime() };
|
||||
}
|
||||
|
||||
function createConstDurations (bestNumber: BlockNumber, blockTime: number, items: [EntryType, BlockNumber?][]): [EntryType, EntryInfo[]][] {
|
||||
return items.map(([type, duration]): [EntryType, EntryInfo[]] => {
|
||||
function createConstDurations (bestNumber: BlockNumber, blockTime: number, items: [EntryType, BlockNumber?, BN?][]): [EntryType, EntryInfo[]][] {
|
||||
return items.map(([type, duration, additional = BN_ZERO]): [EntryType, EntryInfo[]] => {
|
||||
if (!duration) {
|
||||
return [type, []];
|
||||
}
|
||||
@ -40,7 +41,7 @@ function createConstDurations (bestNumber: BlockNumber, blockTime: number, items
|
||||
...newDate(blocks, blockTime),
|
||||
blockNumber: bestNumber.add(blocks),
|
||||
blocks,
|
||||
info: bestNumber.div(duration)
|
||||
info: bestNumber.div(duration).iadd(additional)
|
||||
}]];
|
||||
});
|
||||
}
|
||||
@ -169,7 +170,7 @@ function createScheduled (bestNumber: BlockNumber, blockTime: number, scheduled:
|
||||
}, [])]];
|
||||
}
|
||||
|
||||
function createAuctionInfo (bestNumber: BlockNumber, blockTime: number, [leasePeriod, endBlock]: [LeasePeriodOf, BlockNumber]): [EntryType, EntryInfo[]][] {
|
||||
function createAuctionInfo (bestNumber: BlockNumber, blockTime: number, rangeMax: BN, [leasePeriod, endBlock]: [LeasePeriodOf, BlockNumber]): [EntryType, EntryInfo[]][] {
|
||||
const blocks = endBlock.sub(bestNumber);
|
||||
|
||||
return [
|
||||
@ -177,7 +178,7 @@ function createAuctionInfo (bestNumber: BlockNumber, blockTime: number, [leasePe
|
||||
...newDate(blocks, blockTime),
|
||||
blockNumber: endBlock,
|
||||
blocks,
|
||||
info: `${leasePeriod.toString()} - ${leasePeriod.add(BN_THREE).toString()}`
|
||||
info: `${leasePeriod.toString()} - ${leasePeriod.add(rangeMax).toString()}`
|
||||
}]]
|
||||
];
|
||||
}
|
||||
@ -199,6 +200,7 @@ export default function useScheduled (): EntryInfo[] {
|
||||
const { api } = useApi();
|
||||
const [blockTime] = useBlockTime();
|
||||
const bestNumber = useBestNumber();
|
||||
const leaseRangeMax = useLeaseRangeMax();
|
||||
const auctionInfo = useCall<Option<ITuple<[LeasePeriodOf, BlockNumber]>>>(api.query.auctions?.auctionInfo);
|
||||
const councilMotions = useCall<DeriveCollectiveProposal[]>(api.derive.council?.proposals);
|
||||
const dispatches = useCall<DeriveDispatch[]>(api.derive.democracy?.dispatchQueue);
|
||||
@ -240,16 +242,16 @@ export default function useScheduled (): EntryInfo[] {
|
||||
|
||||
useEffect((): void => {
|
||||
bestNumber && auctionInfo?.isSome && setState((state) =>
|
||||
addFiltered(state, createAuctionInfo(bestNumber, blockTime, auctionInfo.unwrap()))
|
||||
addFiltered(state, createAuctionInfo(bestNumber, blockTime, leaseRangeMax, auctionInfo.unwrap()))
|
||||
);
|
||||
}, [auctionInfo, bestNumber, blockTime]);
|
||||
}, [auctionInfo, bestNumber, blockTime, leaseRangeMax]);
|
||||
|
||||
useEffect((): void => {
|
||||
bestNumber && setState((state) =>
|
||||
addFiltered(state, createConstDurations(bestNumber, blockTime, [
|
||||
['councilElection', (api.consts.elections || api.consts.phragmenElection || api.consts.electionsPhragmen)?.termDuration],
|
||||
['democracyLaunch', api.consts.democracy?.launchPeriod],
|
||||
['parachainLease', api.consts.slots?.leasePeriod as BlockNumber],
|
||||
['parachainLease', api.consts.slots?.leasePeriod as BlockNumber, BN_ONE],
|
||||
['societyChallenge', api.consts.society?.challengePeriod],
|
||||
['societyRotate', api.consts.society?.rotationPeriod],
|
||||
['treasurySpend', api.consts.treasury?.spendPeriod]
|
||||
|
||||
@ -8,9 +8,9 @@ import React, { useCallback, useRef } from 'react';
|
||||
|
||||
import { Table } from '@polkadot/react-components';
|
||||
import { useApi, useCall } from '@polkadot/react-hooks';
|
||||
import { BN_THREE } from '@polkadot/util';
|
||||
|
||||
import { useTranslation } from '../translate';
|
||||
import { useLeaseRangeMax } from '../useLeaseRanges';
|
||||
import WinRange from './WinRange';
|
||||
|
||||
interface Props {
|
||||
@ -23,6 +23,7 @@ interface Props {
|
||||
function Auction ({ auctionInfo, campaigns, className, winningData }: Props): React.ReactElement<Props> {
|
||||
const { t } = useTranslation();
|
||||
const { api } = useApi();
|
||||
const rangeMax = useLeaseRangeMax();
|
||||
const newRaise = useCall<ParaId[]>(api.query.crowdloan.newRaise);
|
||||
|
||||
const headerRef = useRef([
|
||||
@ -40,7 +41,7 @@ function Auction ({ auctionInfo, campaigns, className, winningData }: Props): Re
|
||||
}
|
||||
|
||||
const leasePeriod = auctionInfo.leasePeriod;
|
||||
const leasePeriodEnd = leasePeriod.add(BN_THREE);
|
||||
const leasePeriodEnd = leasePeriod.add(rangeMax);
|
||||
const sorted = (campaigns.funds || [])
|
||||
.filter(({ firstSlot, lastSlot, paraId }) =>
|
||||
newRaise.some((n) => n.eq(paraId)) &&
|
||||
@ -75,7 +76,7 @@ function Auction ({ auctionInfo, campaigns, className, winningData }: Props): Re
|
||||
: a.firstSlot.cmp(b.firstSlot)
|
||||
);
|
||||
},
|
||||
[auctionInfo, campaigns, newRaise]
|
||||
[auctionInfo, campaigns, newRaise, rangeMax]
|
||||
);
|
||||
|
||||
return (
|
||||
|
||||
@ -13,7 +13,7 @@ import { BN_ZERO, formatNumber } from '@polkadot/util';
|
||||
|
||||
import InputOwner from '../InputOwner';
|
||||
import { useTranslation } from '../translate';
|
||||
import useRanges from '../useRanges';
|
||||
import { useLeaseRanges } from '../useLeaseRanges';
|
||||
|
||||
interface Props {
|
||||
auctionInfo?: AuctionInfo;
|
||||
@ -36,7 +36,7 @@ function Bid ({ auctionInfo, className, lastWinners, ownedIds }: Props): React.R
|
||||
const { api } = useApi();
|
||||
const { hasAccounts } = useAccounts();
|
||||
const bestNumber = useBestNumber();
|
||||
const ranges = useRanges();
|
||||
const ranges = useLeaseRanges();
|
||||
const [{ accountId, paraId }, setOwnerInfo] = useState<OwnerInfo>(EMPTY_OWNER);
|
||||
const [amount, setAmount] = useState<BN | undefined>(BN_ZERO);
|
||||
const [range, setRange] = useState(0);
|
||||
|
||||
@ -12,7 +12,7 @@ import { BN_ONE, BN_ZERO } from '@polkadot/util';
|
||||
|
||||
import InputOwner from '../InputOwner';
|
||||
import { useTranslation } from '../translate';
|
||||
import useRanges from '../useRanges';
|
||||
import { useLeaseRanges } from '../useLeaseRanges';
|
||||
|
||||
interface Props {
|
||||
auctionInfo?: AuctionInfo;
|
||||
@ -27,7 +27,7 @@ const EMPTY_OWNER: OwnerInfo = { accountId: null, paraId: 0 };
|
||||
function FundAdd ({ auctionInfo, bestNumber, className, leasePeriod, ownedIds }: Props): React.ReactElement<Props> {
|
||||
const { t } = useTranslation();
|
||||
const { api } = useApi();
|
||||
const ranges = useRanges();
|
||||
const ranges = useLeaseRanges();
|
||||
const [{ accountId, paraId }, setOwnerInfo] = useState<OwnerInfo>(EMPTY_OWNER);
|
||||
const [cap, setCap] = useState<BN | undefined>();
|
||||
const [endBlock, setEndBlock] = useState<BN | undefined>();
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
|
||||
import type { u32 } from '@polkadot/types';
|
||||
|
||||
import BN from 'bn.js';
|
||||
import { useMemo } from 'react';
|
||||
|
||||
import { useApi } from '@polkadot/react-hooks';
|
||||
@ -18,7 +19,7 @@ function isU32 (leasePeriodsPerSlot: unknown): leasePeriodsPerSlot is u32 {
|
||||
return !!leasePeriodsPerSlot;
|
||||
}
|
||||
|
||||
export default function useRanges (): [number, number][] {
|
||||
export function useLeaseRanges (): [number, number][] {
|
||||
const { api } = useApi();
|
||||
|
||||
return useMemo(
|
||||
@ -40,3 +41,12 @@ export default function useRanges (): [number, number][] {
|
||||
[api]
|
||||
);
|
||||
}
|
||||
|
||||
export function useLeaseRangeMax (): BN {
|
||||
const ranges = useLeaseRanges();
|
||||
|
||||
return useMemo(
|
||||
() => new BN(ranges[ranges.length - 1][1]),
|
||||
[ranges]
|
||||
);
|
||||
}
|
||||
@ -12,7 +12,7 @@ import { useApi, useBestNumber, useCall, useEventTrigger } from '@polkadot/react
|
||||
import { BN_ONE, BN_ZERO, u8aEq } from '@polkadot/util';
|
||||
|
||||
import { CROWD_PREFIX } from './constants';
|
||||
import useRanges from './useRanges';
|
||||
import { useLeaseRanges } from './useLeaseRanges';
|
||||
|
||||
const FIRST_PARAM = [0];
|
||||
|
||||
@ -123,7 +123,7 @@ function mergeFirst (ranges: [number, number][], auctionInfo: AuctionInfo, prev:
|
||||
|
||||
export default function useWinningData (auctionInfo?: AuctionInfo): Winning[] | undefined {
|
||||
const { api } = useApi();
|
||||
const ranges = useRanges();
|
||||
const ranges = useLeaseRanges();
|
||||
const [result, setResult] = useState<Winning[] | undefined>();
|
||||
const bestNumber = useBestNumber();
|
||||
const trigger = useEventTrigger([api.events.auctions?.BidAccepted]);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user