fix: do not show validators with 0 self stake in list

This commit is contained in:
Dexter 2023-05-09 18:25:20 +01:00
parent ecedb879f8
commit e4958ce3c0
No known key found for this signature in database
GPG Key ID: 09BE54E06F80B0B3
4 changed files with 61 additions and 34 deletions

View File

@ -34,6 +34,7 @@ import {
formatNumberPercentage, formatNumberPercentage,
toBigNum, toBigNum,
} from '@vegaprotocol/utils'; } from '@vegaprotocol/utils';
import { VALIDATOR_LOGO_MAP } from './logo-map';
interface CanonisedConsensusNodeProps { interface CanonisedConsensusNodeProps {
id: string; id: string;
@ -161,6 +162,11 @@ export const ConsensusValidatorsTable = ({
pendingUserStake, pendingUserStake,
userStakeShare, userStakeShare,
}) => { }) => {
const logo = VALIDATOR_LOGO_MAP[id]
? VALIDATOR_LOGO_MAP[id]
: avatarUrl
? avatarUrl
: null;
const { const {
rawValidatorScore: previousEpochValidatorScore, rawValidatorScore: previousEpochValidatorScore,
performanceScore: previousEpochPerformanceScore, performanceScore: previousEpochPerformanceScore,
@ -171,7 +177,7 @@ export const ConsensusValidatorsTable = ({
id, id,
[ValidatorFields.RANKING_INDEX]: votingPowerRanking, [ValidatorFields.RANKING_INDEX]: votingPowerRanking,
[ValidatorFields.VALIDATOR]: { [ValidatorFields.VALIDATOR]: {
avatarUrl, avatarUrl: logo,
name, name,
}, },
[ValidatorFields.STAKE]: stakedTotal, [ValidatorFields.STAKE]: stakedTotal,

View File

@ -0,0 +1,14 @@
export const VALIDATOR_LOGO_MAP: { [key: string]: string } = {
'55504e9bfd914a7bbefa342c82f59a2f4dee344e5b6863a14c02a812f4fbde32':
'https://pbs.twimg.com/profile_images/1586047492629712897/ZVMWBE94_400x400.jpg',
efbdf943443bd7595e83b0d7e88f37b7932d487d1b94aab3d004997273bb43fc:
'https://pbs.twimg.com/profile_images/1026823609979949057/3e-LCHHm_400x400.jpg',
'126751c5830b50d39eb85412fb2964f46338cce6946ff455b73f1b1be3f5e8cc':
'https://pbs.twimg.com/profile_images/1228627868542029824/9aoaLiIx_400x400.jpg',
'43697a3e911d8b70c0ce672adde17a5c38ca8f6a0486bf85ed0546e1b9a82887':
'https://pbs.twimg.com/profile_images/1352167987478843392/XzX82gIb_400x400.jpg',
ac735acc9ab11cf1d8c59c2df2107e00092b4ac96451cb137a1629af5b66242a:
'https://pbs.twimg.com/profile_images/1159254945885016064/vhhp1wL4_400x400.jpg',
'74023df02b8afc9eaf3e3e2e8b07eab1d2122ac3e74b1b0222daf4af565ad3dd':
'https://cdn4.telegram-cdn.org/file/n_OJ6upnglNG95E7u5FyfLmqqBUhf25LqtyZD0UM27gMM_WWi8rywrp9JaAA83quP7vx-WU9Q86quvIRdk9wuUrC2tdD08cYxah4dXHa4OgphFg7Vm5UYFjuGxuHn916OIlzIuVOjJWK_nricGdlPcZQK_T4kBJ_5v4pp94j76_DQ1eSy8DjUxnchZxqpGFv-lGN8U4SjRMK0RC_6DusNaRYEn9Ni2ZQHig7nMiqud-nkK5RgUrClfXFwyhoMFVfhHpGUzwpSv1pSEVLXVh7E1mVmWYrW9hzdQGGrouWCGRqtf_hRa9enS2fv0P9mAB23BcURWuLOVtMdJTF4wfc-w.jpg',
};

View File

@ -16,6 +16,7 @@ import type { PreviousEpochQuery } from '../../__generated__/PreviousEpoch';
import { useAppState } from '../../../../contexts/app-state/app-state-context'; import { useAppState } from '../../../../contexts/app-state/app-state-context';
import type { StakingDelegationFieldsFragment } from '../../__generated__/Staking'; import type { StakingDelegationFieldsFragment } from '../../__generated__/Staking';
import type { ValidatorsView } from './validator-tables'; import type { ValidatorsView } from './validator-tables';
import { VALIDATOR_LOGO_MAP } from './logo-map';
export enum ValidatorFields { export enum ValidatorFields {
RANKING_INDEX = 'rankingIndex', RANKING_INDEX = 'rankingIndex',
@ -102,13 +103,18 @@ interface ValidatorRendererProps {
export const ValidatorRenderer = ({ data }: ValidatorRendererProps) => { export const ValidatorRenderer = ({ data }: ValidatorRendererProps) => {
const { t } = useTranslation(); const { t } = useTranslation();
const { avatarUrl, name } = data.validator; const { avatarUrl, name } = data.validator;
const logo = VALIDATOR_LOGO_MAP[data.id]
? VALIDATOR_LOGO_MAP[data.id]
: avatarUrl
? avatarUrl
: null;
return ( return (
<div className="w-[238px] grid grid-cols-[1fr_auto] gap-2 items-center"> <div className="w-[238px] grid grid-cols-[1fr_auto] gap-2 items-center">
<span className="flex overflow-hidden"> <span className="flex overflow-hidden">
{avatarUrl && ( {logo && (
<img <img
className="h-6 w-6 rounded-full mr-2" className="h-6 w-6 rounded-full mr-2"
src={avatarUrl} src={logo}
alt={`Avatar icon for ${name}`} alt={`Avatar icon for ${name}`}
onError={(e) => (e.currentTarget.style.display = 'none')} onError={(e) => (e.currentTarget.style.display = 'none')}
/> />

View File

@ -78,37 +78,38 @@ export const ValidatorTables = ({
const nextDelegation = delegations?.find( const nextDelegation = delegations?.find(
(d) => d.node.id === validatorId && d.epoch === Number(epochId) + 1 (d) => d.node.id === validatorId && d.epoch === Number(epochId) + 1
); );
if (validator.stakedByOperator !== '0') {
switch (validator.rankingScore?.status) { switch (validator.rankingScore?.status) {
case Schema.ValidatorStatus.VALIDATOR_NODE_STATUS_TENDERMINT: case Schema.ValidatorStatus.VALIDATOR_NODE_STATUS_TENDERMINT:
acc.consensusValidators.push( acc.consensusValidators.push(
addUserDataToValidator( addUserDataToValidator(
validator, validator,
currentDelegation, currentDelegation,
nextDelegation, nextDelegation,
currentUserStakeAvailable currentUserStakeAvailable
) )
); );
break; break;
case Schema.ValidatorStatus.VALIDATOR_NODE_STATUS_ERSATZ: case Schema.ValidatorStatus.VALIDATOR_NODE_STATUS_ERSATZ:
acc.standbyValidators.push( acc.standbyValidators.push(
addUserDataToValidator( addUserDataToValidator(
validator, validator,
currentDelegation, currentDelegation,
nextDelegation, nextDelegation,
currentUserStakeAvailable currentUserStakeAvailable
) )
); );
break; break;
case Schema.ValidatorStatus.VALIDATOR_NODE_STATUS_PENDING: case Schema.ValidatorStatus.VALIDATOR_NODE_STATUS_PENDING:
acc.pendingValidators.push( acc.pendingValidators.push(
addUserDataToValidator( addUserDataToValidator(
validator, validator,
currentDelegation, currentDelegation,
nextDelegation, nextDelegation,
currentUserStakeAvailable currentUserStakeAvailable
) )
); );
}
} }
return acc; return acc;
}, },