import React, { useState } from 'react' import { Link } from 'react-router-dom'; import { Theme, 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'; const useStyles = makeStyles((theme: Theme) => createStyles({ root: { display: 'flex', }, details: { display: 'flex', flex: '1 0 auto', flexDirection: 'column', }, content: { flex: '1 0 auto', }, status: { color: '#2145a0', backgroundColor: '#e1effe', } }), ); interface NodeHealth { status?: string, version?: string } interface NodeReadiness { status?: string, version?: string } interface NodeAddresses { overlay: string, underlay: string[], ethereum: string, public_key: string, pss_public_key: string } interface NodeTopology { baseAddr: string, bins: string[], connected: number, depth: number, nnLowWatermark: number, population: number, timestamp: string, } interface IProps{ nodeHealth: NodeHealth, loadingNodeHealth: boolean, nodeReadiness: NodeReadiness | null, loadingNodeReadiness: boolean, beeRelease: any, loadingBeeRelease: boolean, nodeAddresses: NodeAddresses, nodeTopology: NodeTopology, loadingNodeTopology: boolean, setStatusChecksVisible: any, } function StatusCard(props: IProps) { 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.nodeReadiness?.version ? ` v${props.nodeReadiness.version}` : '-'} {props.beeRelease && props.beeRelease.name === `v${props.nodeReadiness?.version?.split('-')[0]}` ? : props.loadingBeeRelease ? '' : update } 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