From e32c48755dbc86b19f58a28c33fa958e7efcd97f Mon Sep 17 00:00:00 2001 From: Jaco Date: Sat, 22 May 2021 10:52:53 +0300 Subject: [PATCH] Display ideal staked (#5346) --- .../page-staking/src/Overview/CurrentList.tsx | 26 ++++----- .../page-staking/src/Overview/Summary.tsx | 58 +++++++++---------- packages/react-hooks/src/types.ts | 3 + packages/react-hooks/src/useInflation.ts | 5 +- 4 files changed, 46 insertions(+), 46 deletions(-) diff --git a/packages/page-staking/src/Overview/CurrentList.tsx b/packages/page-staking/src/Overview/CurrentList.tsx index a9bc863b28..6109d359fd 100644 --- a/packages/page-staking/src/Overview/CurrentList.tsx +++ b/packages/page-staking/src/Overview/CurrentList.tsx @@ -32,7 +32,6 @@ interface Props { type AccountExtend = [string, boolean, boolean]; interface Filtered { - elected?: AccountExtend[]; validators?: AccountExtend[]; waiting?: AccountExtend[]; } @@ -63,9 +62,10 @@ function getFiltered (stakingOverview: DeriveStakingOverview, favorites: string[ const validatorIds = accountsToString(stakingOverview.validators); return { - elected: filterAccounts(allElected, allElected, favorites, validatorIds), validators: filterAccounts(validatorIds, allElected, favorites, []), - waiting: filterAccounts(next, [], favorites, allElected) + waiting: filterAccounts(allElected, allElected, favorites, validatorIds).concat( + filterAccounts(next, [], favorites, allElected) + ) }; } @@ -83,22 +83,11 @@ function CurrentList ({ favorites, hasQueries, isIntentions, paraValidators = DE // we have a very large list, so we use a loading delay const isLoading = useLoadingDelay(); - const { elected, validators, waiting } = useMemo( + const { validators, waiting } = useMemo( () => stakingOverview ? getFiltered(stakingOverview, favorites, targets.waitingIds) : {}, [favorites, stakingOverview, targets] ); - const addresses = useMemo( - () => isIntentions - ? (isLoading || !nominatedBy || !elected || !waiting) - ? undefined - : elected.concat(waiting) - : isLoading || !validators - ? undefined - : validators, - [elected, isIntentions, isLoading, nominatedBy, validators, waiting] - ); - const infoMap = useMemo( () => targets.validators?.reduce>((result, info) => { result[info.key] = info; @@ -161,7 +150,12 @@ function CurrentList ({ favorites, hasQueries, isIntentions, paraValidators = DE } > - {addresses?.map(([address, isElected, isFavorite]): React.ReactNode => ( + {!isLoading && ( + (isIntentions + ? nominatedBy && waiting + : validators + ) || [] + ).map(([address, isElected, isFavorite]): React.ReactNode => (
{ +function Summary ({ className = '', isVisible, stakingOverview, targets: { inflation: { idealStake, inflation, stakedFraction }, nominators, waitingIds } }: Props): React.ReactElement { const { t } = useTranslation(); - const { lastBlockAuthors, lastBlockNumber } = useContext(BlockAuthorsContext); return ( @@ -36,7 +34,7 @@ function Summary ({ className = '', isVisible, stakingOverview, targets: { infla } ('waiting')} > {waitingIds @@ -45,7 +43,7 @@ function Summary ({ className = '', isVisible, stakingOverview, targets: { infla } ('nominators')} > {nominators @@ -53,30 +51,32 @@ function Summary ({ className = '', isVisible, stakingOverview, targets: { infla : } - ('inflation')} - > - {(inflation > 0) && Number.isFinite(inflation) - ? <>{inflation.toFixed(1)}% - : '-' - } -
- ('last block')} - > - {lastBlockAuthors?.map((author): React.ReactNode => ( - - ))} - {lastBlockNumber} - + {(idealStake > 0) && Number.isFinite(idealStake) && ( + ('ideal staked')} + > + <>{(idealStake * 100).toFixed(1)}% + + )} + {(stakedFraction > 0) && ( + ('staked')} + > + <>{(stakedFraction * 100).toFixed(1)}% + + )} + {(inflation > 0) && Number.isFinite(inflation) && ( + ('inflation')} + > + <>{inflation.toFixed(1)}% + + )}
diff --git a/packages/react-hooks/src/types.ts b/packages/react-hooks/src/types.ts index 95b1948e3a..1102d91bfd 100644 --- a/packages/react-hooks/src/types.ts +++ b/packages/react-hooks/src/types.ts @@ -32,7 +32,10 @@ export interface ModalState { } export interface Inflation { + idealStake: number; + idealInterest: number; inflation: number; + stakedFraction: number; stakedReturn: number; } diff --git a/packages/react-hooks/src/useInflation.ts b/packages/react-hooks/src/useInflation.ts index 505006a492..23be4cae1a 100644 --- a/packages/react-hooks/src/useInflation.ts +++ b/packages/react-hooks/src/useInflation.ts @@ -13,7 +13,7 @@ import { BN_MILLION, BN_ZERO } from '@polkadot/util'; import { useApi } from './useApi'; import { useCall } from './useCall'; -const EMPTY: Inflation = { inflation: 0, stakedReturn: 0 }; +const EMPTY: Inflation = { idealInterest: 0, idealStake: 0, inflation: 0, stakedFraction: 0, stakedReturn: 0 }; function calcInflation (api: ApiPromise, totalStaked: BN, totalIssuance: BN, numAuctions: BN): Inflation { const { auctionAdjust, auctionMax, falloff, maxInflation, minInflation, stakeTarget } = getInflationParams(api); @@ -29,7 +29,10 @@ function calcInflation (api: ApiPromise, totalStaked: BN, totalIssuance: BN, num )); return { + idealInterest, + idealStake, inflation, + stakedFraction, stakedReturn: stakedFraction ? (inflation / stakedFraction) : 0