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;