// Copyright 2017-2020 @polkadot/app-123code authors & contributors // This software may be modified and distributed under the terms // of the Apache-2.0 license. See the LICENSE file for details. // only here, needs to be available for the rest of the codebase /* eslint-disable react/jsx-max-props-per-line */ import { DeriveStakingValidators } from '@polkadot/api-derive/types'; import { Balance, BlockNumber } from '@polkadot/types/interfaces'; import React from 'react'; import { Bubble, IdentityIcon } from '@polkadot/react-components'; import { useApi, useCall } from '@polkadot/react-hooks'; import { formatBalance, formatNumber } from '@polkadot/util'; function SummaryBar (): React.ReactElement { const { api, systemChain, systemName, systemVersion } = useApi(); const bestNumber = useCall(api.derive.chain.bestNumber, []); const bestNumberLag = useCall(api.derive.chain.bestNumberLag, []); const totalIssuance = useCall(api.query.balances?.totalIssuance, []); const validators = useCall(api.derive.staking.validators, []); return (
{systemName} v{systemVersion} {systemChain} {api.runtimeVersion.implName} v{api.runtimeVersion.implVersion.toString(10)} {formatNumber(bestNumber)} ({formatNumber(bestNumberLag)} lag) {validators && ( { validators.validators.map((accountId, index): React.ReactNode => ( )) } )} {totalIssuance && ( {formatBalance(totalIssuance)} )}
); } export default React.memo(SummaryBar);