Add missing elected badge on staking waiting (#3006)
This commit is contained in:
parent
c5375ccd4f
commit
3e6a3ae23f
@ -7,7 +7,7 @@ import { ValidatorInfo } from '../types';
|
||||
|
||||
import React, { useCallback, useEffect, useState } from 'react';
|
||||
import { ApiPromise } from '@polkadot/api';
|
||||
import { AddressSmall, Icon, Toggle } from '@polkadot/react-components';
|
||||
import { AddressSmall, Badge, Icon, Toggle } from '@polkadot/react-components';
|
||||
import { FormatBalance } from '@polkadot/react-query';
|
||||
import { useApi, useCall } from '@polkadot/react-hooks';
|
||||
import { formatNumber } from '@polkadot/util';
|
||||
@ -75,7 +75,7 @@ function Validator ({ canSelect, info, isSelected, toggleFavorite, toggleSelecte
|
||||
return null;
|
||||
}
|
||||
|
||||
const { accountId, bondOther, bondOwn, bondTotal, commissionPer, isCommission, isFavorite, isNominating, key, numNominators, rankOverall, rewardPayout, validatorPayment } = info;
|
||||
const { accountId, bondOther, bondOwn, bondTotal, commissionPer, isCommission, isElected, isFavorite, isNominating, key, numNominators, rankOverall, rewardPayout, validatorPayment } = info;
|
||||
|
||||
return (
|
||||
<tr className={`${isNominating ? 'isHighlight' : ''}`}>
|
||||
@ -84,7 +84,14 @@ function Validator ({ canSelect, info, isSelected, toggleFavorite, toggleSelecte
|
||||
isFavorite={isFavorite}
|
||||
toggleFavorite={toggleFavorite}
|
||||
/>
|
||||
<td className='badge'>
|
||||
<td className='badge together'>
|
||||
{isElected && (
|
||||
<Badge
|
||||
info={<Icon name='chevron right' />}
|
||||
isInline
|
||||
type='next'
|
||||
/>
|
||||
)}
|
||||
<MaxBadge numNominators={numNominators} />
|
||||
</td>
|
||||
<td className='number'>{formatNumber(rankOverall)}</td>
|
||||
|
||||
@ -48,6 +48,7 @@ export interface ValidatorInfo extends ValidatorInfoRank {
|
||||
commissionPer: number;
|
||||
hasIdentity: boolean;
|
||||
isCommission: boolean;
|
||||
isElected: boolean;
|
||||
isFavorite: boolean;
|
||||
isNominating: boolean;
|
||||
key: string;
|
||||
|
||||
@ -65,7 +65,7 @@ function sortValidators (list: ValidatorInfo[]): ValidatorInfo[] {
|
||||
);
|
||||
}
|
||||
|
||||
function extractSingle (allAccounts: string[], amount: BN = baseBalance(), { info }: DeriveStakingElected | DeriveStakingWaiting, favorites: string[], perValidatorReward: BN): [ValidatorInfo[], string[], BN] {
|
||||
function extractSingle (allAccounts: string[], amount: BN = baseBalance(), { info }: DeriveStakingElected | DeriveStakingWaiting, favorites: string[], perValidatorReward: BN, isElected: boolean): [ValidatorInfo[], string[], BN] {
|
||||
const nominators: string[] = [];
|
||||
let totalStaked = BN_ZERO;
|
||||
const list = info.map(({ accountId, exposure: _exposure, stakingLedger, validatorPrefs }): ValidatorInfo => {
|
||||
@ -114,6 +114,7 @@ function extractSingle (allAccounts: string[], amount: BN = baseBalance(), { inf
|
||||
commissionPer: (((prefs as ValidatorPrefs).commission?.unwrap() || BN_ZERO).toNumber() / 10_000_000),
|
||||
hasIdentity: false,
|
||||
isCommission: !!(prefs as ValidatorPrefs).commission,
|
||||
isElected,
|
||||
isFavorite: favorites.includes(key),
|
||||
isNominating,
|
||||
key,
|
||||
@ -137,8 +138,8 @@ function extractSingle (allAccounts: string[], amount: BN = baseBalance(), { inf
|
||||
|
||||
function extractInfo (allAccounts: string[], amount: BN = baseBalance(), electedDerive: DeriveStakingElected, waitingDerive: DeriveStakingWaiting, favorites: string[], lastReward = BN_ONE): Partial<SortedTargets> {
|
||||
const perValidatorReward = lastReward.divn(electedDerive.info.length);
|
||||
const [elected, nominators, totalStaked] = extractSingle(allAccounts, amount, electedDerive, favorites, perValidatorReward);
|
||||
const [waiting] = extractSingle(allAccounts, amount, waitingDerive, favorites, perValidatorReward);
|
||||
const [elected, nominators, totalStaked] = extractSingle(allAccounts, amount, electedDerive, favorites, perValidatorReward, true);
|
||||
const [waiting] = extractSingle(allAccounts, amount, waitingDerive, favorites, perValidatorReward, false);
|
||||
const validators = sortValidators(elected.concat(waiting));
|
||||
|
||||
return { nominators, totalStaked, validators };
|
||||
|
||||
Loading…
Reference in New Issue
Block a user