Add missing elected badge on staking waiting (#3006)

This commit is contained in:
Jaco Greeff 2020-06-20 20:52:31 +02:00 committed by GitHub
parent c5375ccd4f
commit 3e6a3ae23f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 6 deletions

View File

@ -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>

View File

@ -48,6 +48,7 @@ export interface ValidatorInfo extends ValidatorInfoRank {
commissionPer: number;
hasIdentity: boolean;
isCommission: boolean;
isElected: boolean;
isFavorite: boolean;
isNominating: boolean;
key: string;

View File

@ -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 };