import { ReactElement, useState } from 'react' import { Link } from 'react-router-dom' import { createStyles, makeStyles } from '@material-ui/core/styles' import { Card, CardContent, Typography, Chip, Button } from '@material-ui/core/' import { CheckCircle, Error, ArrowRight, ArrowDropUp } from '@material-ui/icons/' import { Skeleton } from '@material-ui/lab' import type { Health, NodeAddresses, Topology } from '@ethersphere/bee-js' const useStyles = makeStyles(() => createStyles({ root: { display: 'flex', }, details: { display: 'flex', flex: '1 0 auto', flexDirection: 'column', }, content: { flex: '1 0 auto', }, status: { color: '#2145a0', backgroundColor: '#e1effe', }, }), ) interface Props { nodeHealth: Health | null loadingNodeHealth: boolean beeRelease: LatestBeeRelease | null loadingBeeRelease: boolean nodeAddresses: NodeAddresses nodeTopology: Topology loadingNodeTopology: boolean setStatusChecksVisible: (value: boolean) => void } function StatusCard(props: Props): ReactElement { const classes = useStyles() const [underlayAddressesVisible, setUnderlayAddresessVisible] = useState(false) return (
{!props.loadingNodeHealth && props.nodeHealth ? (
{props.nodeHealth.status === 'ok' ? (
Connected to Bee Node
) : (
Could not connect to Bee Node
)}
Discovered Nodes: {props.nodeTopology.population} Connected Peers: {props.nodeTopology.connected}
AGENT: Bee {props.nodeHealth?.version ? ` v${props.nodeHealth.version}` : '-'} { // FIXME: this should be broken up /* eslint-disable no-nested-ternary */ props.beeRelease && props.beeRelease.name === `v${props.nodeHealth?.version?.split('-')[0]}` ? ( ) : props.loadingBeeRelease ? ( '' ) : ( update ) /* eslint-enable no-nested-ternary */ } PUBLIC KEY: {props.nodeAddresses.public_key ? props.nodeAddresses.public_key : '-'} PSS PUBLIC KEY: {props.nodeAddresses.pss_public_key ? props.nodeAddresses.pss_public_key : '-'} OVERLAY ADDRESS (PEER ID): {props.nodeAddresses.overlay ? props.nodeAddresses.overlay : '-'} setUnderlayAddresessVisible(!underlayAddressesVisible)}> {underlayAddressesVisible ? (
{props.nodeAddresses.underlay ? props.nodeAddresses.underlay.map(item =>
  • {item}
  • ) : '-'}
    ) : null}
    ) : (
    )}
    ) } export default StatusCard