moonstream/frontend/pages/status/index.js

318 wiersze
9.6 KiB
JavaScript
Czysty Zwykły widok Historia

2021-12-06 17:46:03 +00:00
import React, { useContext } from "react";
2021-09-30 14:05:28 +00:00
import { useStatus } from "../../src/core/hooks";
2021-11-18 12:44:04 +00:00
import { Heading, Text, Flex, Spacer, chakra, Spinner } from "@chakra-ui/react";
2021-11-18 12:47:11 +00:00
import { getLayout, getLayoutProps } from "../../src/layouts/InfoPageLayout";
2021-12-06 17:46:03 +00:00
import UserContext from "../../src/core/providers/UserProvider/context";
2021-09-30 14:05:28 +00:00
const Status = () => {
2021-12-06 17:46:03 +00:00
const user = useContext(UserContext);
2021-10-04 19:04:38 +00:00
const healthyStatusText = "Available";
const downStatusText = "Unavailable";
2021-12-06 17:46:03 +00:00
const unauthorizedText = "Please login";
2021-10-04 19:04:38 +00:00
const healthyStatusColor = "green.900";
const downStatusColor = "red.600";
2021-09-30 14:05:28 +00:00
2021-10-04 19:04:38 +00:00
const shortTimestamp = (rawTimestamp) => {
return rawTimestamp.replace(/^.+T/, "").replace(/\..+/, "");
};
2021-10-01 19:07:44 +00:00
2021-10-04 19:04:38 +00:00
const {
2021-12-06 16:29:07 +00:00
serverListStatusCache,
2021-10-04 19:04:38 +00:00
} = useStatus();
2021-09-30 14:05:28 +00:00
console.log(serverListStatusCache?.data);
2021-12-06 16:29:07 +00:00
const moonstreamapiStatus = serverListStatusCache?.data?.filter(
(i) => i.name === "moonstream_api"
2021-12-06 16:29:07 +00:00
)[0];
const moonstreamCrawlersStatus = serverListStatusCache?.data?.filter(
(i) => i.name === "moonstream_crawlers"
2021-12-06 16:29:07 +00:00
)[0];
const nodeBalacerStatus = serverListStatusCache?.data?.filter(
(i) => i.name === "moonstream_node_balancer"
2021-12-06 16:29:07 +00:00
)[0];
const nodeEthereumAStatus = serverListStatusCache?.data?.filter(
(i) => i.name === "node_ethereum_a"
2021-12-06 16:29:07 +00:00
)[0];
const nodeEthereumBStatus = serverListStatusCache?.data?.filter(
(i) => i.name === "node_ethereum_b"
2021-12-06 16:29:07 +00:00
)[0];
const nodePolygonAStatus = serverListStatusCache?.data?.filter(
(i) => i.name === "node_polygon_a"
2021-12-06 16:29:07 +00:00
)[0];
const nodePolygonBStatus = serverListStatusCache?.data?.filter(
(i) => i.name === "node_polygon_b"
2021-12-06 16:29:07 +00:00
)[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 unimLeaderboardStatus = serverListStatusCache?.data?.filter(
(i) => i.name === "unim_leaderboard"
2021-12-06 16:29:07 +00:00
)[0];
2021-11-18 12:44:04 +00:00
const StatusRow = (props) => {
return (
<Flex mb={3}>
<Text>{props.title}</Text>
<Spacer />
{!props.cache.isLoading && props.children}
{props.cache.isLoading && <Spinner m={0} p={0} size="sm" />}
</Flex>
);
};
2021-10-04 19:04:38 +00:00
return (
2021-11-18 12:44:04 +00:00
<>
<Heading
as="h2"
size="md"
placeSelf="center"
px={12}
py={2}
borderTopRadius="xl"
>
{`Status page`}
</Heading>
<chakra.span pl={2} px={12} py={2} width="400px">
2021-12-06 16:29:07 +00:00
<StatusRow title="Backend server" cache={serverListStatusCache}>
2021-11-18 12:44:04 +00:00
<Text
color={
moonstreamapiStatus?.status_code == 200
2021-11-18 12:44:04 +00:00
? healthyStatusColor
: downStatusColor
}
>
{moonstreamapiStatus?.status_code == 200
2021-11-18 12:44:04 +00:00
? healthyStatusText
: downStatusText}
</Text>
</StatusRow>
2021-12-06 16:29:07 +00:00
2021-11-18 12:44:04 +00:00
<br />
2021-12-06 16:29:07 +00:00
<StatusRow title="Crawlers server" cache={serverListStatusCache}>
2021-12-06 17:35:14 +00:00
<Text
color={
moonstreamCrawlersStatus?.status_code == 200
2021-12-06 17:35:14 +00:00
? healthyStatusColor
: downStatusColor
}
>
{moonstreamCrawlersStatus?.status_code == 200
2021-12-06 17:35:14 +00:00
? healthyStatusText
: downStatusText}
</Text>
</StatusRow>
<br />
<StatusRow title="Node balancer server" cache={serverListStatusCache}>
<Text
color={
nodeBalacerStatus?.status_code == 200
? healthyStatusColor
: downStatusColor
}
>
{nodeBalacerStatus?.status_code == 200
? healthyStatusText
: downStatusText}
2021-12-06 16:29:07 +00:00
</Text>
</StatusRow>
<br />
<StatusRow title="Node Ethereum A" cache={serverListStatusCache}>
2021-11-18 12:44:04 +00:00
<Text
color={
nodeEthereumAStatus?.status_code == 200
2021-11-18 12:44:04 +00:00
? healthyStatusColor
: downStatusColor
}
>
{nodeEthereumAStatus?.status_code == 200
2021-11-18 12:44:04 +00:00
? healthyStatusText
: downStatusText}
</Text>
</StatusRow>
2021-12-06 17:21:32 +00:00
<StatusRow title="Current block" cache={serverListStatusCache}>
2021-11-18 12:44:04 +00:00
<Text>
{nodeEthereumAStatus?.response?.current_block
? nodeEthereumAStatus.response.current_block
2021-11-18 12:44:04 +00:00
: 0}
</Text>
</StatusRow>
2021-12-06 16:29:07 +00:00
<br />
<StatusRow title="Node Ethereum B" cache={serverListStatusCache}>
<Text
color={
nodeEthereumBStatus?.status_code == 200
2021-12-06 16:29:07 +00:00
? healthyStatusColor
: downStatusColor
}
>
{nodeEthereumBStatus?.status_code == 200
2021-12-06 16:29:07 +00:00
? healthyStatusText
: downStatusText}
</Text>
</StatusRow>
2021-12-06 17:21:32 +00:00
<StatusRow title="Current block" cache={serverListStatusCache}>
2021-11-18 12:44:04 +00:00
<Text>
{nodeEthereumBStatus?.response?.current_block
? nodeEthereumBStatus.response.current_block
2021-12-06 16:29:07 +00:00
: 0}
</Text>
</StatusRow>
<br />
<StatusRow title="Node Polygon A" cache={serverListStatusCache}>
<Text
color={
nodePolygonAStatus?.status_code == 200
2021-12-06 16:29:07 +00:00
? healthyStatusColor
: downStatusColor
}
>
{nodePolygonAStatus?.status_code == 200
2021-12-06 16:29:07 +00:00
? healthyStatusText
2021-11-18 12:44:04 +00:00
: downStatusText}
</Text>
</StatusRow>
2021-12-06 17:21:32 +00:00
<StatusRow title="Current block" cache={serverListStatusCache}>
2021-11-18 12:44:04 +00:00
<Text>
{nodePolygonAStatus?.response?.current_block
? nodePolygonAStatus.response.current_block
2021-12-06 16:29:07 +00:00
: 0}
</Text>
</StatusRow>
<br />
<StatusRow title="Node Polygon B" cache={serverListStatusCache}>
<Text
color={
nodePolygonBStatus?.status_code == 200
2021-12-06 16:29:07 +00:00
? healthyStatusColor
: downStatusColor
}
>
{nodePolygonBStatus?.status_code == 200
2021-12-06 16:29:07 +00:00
? healthyStatusText
2021-11-18 12:44:04 +00:00
: downStatusText}
</Text>
</StatusRow>
2021-12-06 17:21:32 +00:00
<StatusRow title="Current block" cache={serverListStatusCache}>
2021-12-06 16:29:07 +00:00
<Text>
{nodePolygonBStatus?.response?.current_block
? nodePolygonBStatus.response.current_block
: 0}
</Text>
</StatusRow>
<br />
<StatusRow title="Database server" cache={serverListStatusCache}>
<Text
color={
dbServerStatus?.status_code == 200
? healthyStatusColor
: downStatusColor
}
>
{dbServerStatus?.status_code == 200
? healthyStatusText
: downStatusText}
</Text>
</StatusRow>
<StatusRow
title="Ethereum latest block"
cache={serverListStatusCache}
>
<Text>
{dbServerStatus?.response?.ethereum_block_latest
? dbServerStatus.response.ethereum_block_latest
: 0}
</Text>
</StatusRow>
<StatusRow
title="Polygon latest block"
cache={serverListStatusCache}
>
<Text>
{dbServerStatus?.response?.polygon_block_latest
? dbServerStatus.response.polygon_block_latest
2021-12-06 16:29:07 +00:00
: 0}
</Text>
</StatusRow>
2021-11-18 12:44:04 +00:00
<br />
2021-12-06 16:29:07 +00:00
<StatusRow title="Database replica server" cache={serverListStatusCache}>
2021-11-18 12:44:04 +00:00
<Text
color={
dbReplicaServerStatus?.status_code == 200
2021-11-18 12:44:04 +00:00
? healthyStatusColor
: downStatusColor
}
>
{dbReplicaServerStatus?.status_code == 200
2021-11-18 12:44:04 +00:00
? healthyStatusText
: downStatusText}
</Text>
</StatusRow>
<StatusRow
title="Ethereum latest block"
cache={serverListStatusCache}
>
<Text>
{dbReplicaServerStatus?.response?.ethereum_block_latest
? dbReplicaServerStatus.response.ethereum_block_latest
: 0}
</Text>
</StatusRow>
<StatusRow
title="Polygon latest block"
cache={serverListStatusCache}
2021-11-18 12:44:04 +00:00
>
<Text>
{dbReplicaServerStatus?.response?.polygon_block_latest
? dbReplicaServerStatus.response.polygon_block_latest
2021-11-18 12:44:04 +00:00
: 0}
</Text>
</StatusRow>
<br />
<StatusRow title="Unim Leaderboard server" cache={serverListStatusCache}>
<Text
color={
unimLeaderboardStatus?.status_code == 200
? healthyStatusColor
: downStatusColor
}
>
{unimLeaderboardStatus?.status_code == 200
? healthyStatusText
: downStatusText}
</Text>
</StatusRow>
2021-11-18 12:44:04 +00:00
</chakra.span>
</>
2021-10-04 19:04:38 +00:00
);
2021-10-01 19:07:44 +00:00
};
2021-09-30 14:05:28 +00:00
2021-11-18 12:44:04 +00:00
Status.getLayout = getLayout;
2021-11-18 12:47:11 +00:00
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 };
}
2021-10-01 19:07:44 +00:00
export default Status;