import React from "react"; import { useStatus } from "../../src/core/hooks"; import { Heading, Text, Flex, Spacer, chakra, Spinner } from "@chakra-ui/react"; import { getLayout, getLayoutProps } from "../../src/layouts/InfoPageLayout"; const Status = () => { const healthyStatusText = "Available"; const downStatusText = "Unavailable"; const healthyStatusColor = "green.1000"; const downStatusColor = "red.600"; const { serverListStatusCache } = useStatus(); const moonstreamapiStatus = serverListStatusCache?.data?.filter( (i) => i.name === "moonstream_api" )[0]; const moonstreamCrawlersStatus = serverListStatusCache?.data?.filter( (i) => i.name === "moonstream_crawlers" )[0]; const nodeBalacerStatus = serverListStatusCache?.data?.filter( (i) => i.name === "moonstream_node_balancer" )[0]; const nodeEthereumAStatus = serverListStatusCache?.data?.filter( (i) => i.name === "node_ethereum_a" )[0]; const nodeEthereumBStatus = serverListStatusCache?.data?.filter( (i) => i.name === "node_ethereum_b" )[0]; const nodePolygonAStatus = serverListStatusCache?.data?.filter( (i) => i.name === "node_polygon_a" )[0]; const nodePolygonBStatus = serverListStatusCache?.data?.filter( (i) => i.name === "node_polygon_b" )[0]; const dbServerStatus = serverListStatusCache?.data?.filter( (i) => i.name === "moonstream_database" )[0]; const dbReplicaServerStatus = serverListStatusCache?.data?.filter( (i) => i.name === "moonstream_database_replica" )[0]; const StatusRow = (props) => { return ( {props.title} {!props.cache.isLoading && props.children} {props.cache.isLoading && } ); }; return ( <> {`Status page`} {moonstreamapiStatus?.status_code == 200 ? healthyStatusText : downStatusText}
{moonstreamCrawlersStatus?.status_code == 200 ? healthyStatusText : downStatusText}
{nodeBalacerStatus?.status_code == 200 ? healthyStatusText : downStatusText}
{nodeEthereumAStatus?.status_code == 200 ? healthyStatusText : downStatusText} {nodeEthereumAStatus?.response?.current_block ? nodeEthereumAStatus.response.current_block : 0}
{nodeEthereumBStatus?.status_code == 200 ? healthyStatusText : downStatusText} {nodeEthereumBStatus?.response?.current_block ? nodeEthereumBStatus.response.current_block : 0}
{nodePolygonAStatus?.status_code == 200 ? healthyStatusText : downStatusText} {nodePolygonAStatus?.response?.current_block ? nodePolygonAStatus.response.current_block : 0}
{nodePolygonBStatus?.status_code == 200 ? healthyStatusText : downStatusText} {nodePolygonBStatus?.response?.current_block ? nodePolygonBStatus.response.current_block : 0}
{dbServerStatus?.status_code == 200 ? healthyStatusText : downStatusText} {dbServerStatus?.response?.ethereum_block_latest ? dbServerStatus.response.ethereum_block_latest : 0} {dbServerStatus?.response?.polygon_block_latest ? dbServerStatus.response.polygon_block_latest : 0}
{dbReplicaServerStatus?.status_code == 200 ? healthyStatusText : downStatusText} {dbReplicaServerStatus?.response?.ethereum_block_latest ? dbReplicaServerStatus.response.ethereum_block_latest : 0} {dbReplicaServerStatus?.response?.polygon_block_latest ? dbReplicaServerStatus.response.polygon_block_latest : 0}
); }; Status.getLayout = getLayout; export async function getStaticProps() { const metaTags = { title: "Moonstream: Status page", description: "Status of moonstream.to services", keywords: "blockchain, crypto, data, trading, smart contracts, ethereum, solana, transactions, defi, finance, decentralized, analytics, product, whitepapers", url: "https://www.moonstream.to/status", }; const layoutProps = getLayoutProps(); layoutProps.props.metaTags = { ...layoutProps.props.metaTags, ...metaTags }; return { ...layoutProps }; } export default Status;