Working status page

pull/298/head
kompotkot 2021-10-01 19:07:44 +00:00
rodzic 29112f935b
commit e7e0b5bc79
4 zmienionych plików z 194 dodań i 75 usunięć

Wyświetl plik

@ -1,4 +1,4 @@
import React, { useEffect, useState, useLayoutEffect } from "react" import React, { useEffect, useState, useLayoutEffect } from "react";
import { useStatus } from "../../src/core/hooks"; import { useStatus } from "../../src/core/hooks";
import { import {
Heading, Heading,
@ -10,24 +10,48 @@ import {
chakra, chakra,
useMediaQuery, useMediaQuery,
useBreakpointValue useBreakpointValue
} from "@chakra-ui/react" } from "@chakra-ui/react";
import { AWS_ASSETS_PATH } from "../../src/core/constants" import { AWS_ASSETS_PATH } from "../../src/core/constants";
const assets = { const assets = {
background720: `${AWS_ASSETS_PATH}/product-background-720x405.png`, background720: `${AWS_ASSETS_PATH}/product-background-720x405.png`,
background1920: `${AWS_ASSETS_PATH}/product-background-720x405.png`, background1920: `${AWS_ASSETS_PATH}/product-background-720x405.png`,
background2880: `${AWS_ASSETS_PATH}/product-background-720x405.png`, background2880: `${AWS_ASSETS_PATH}/product-background-720x405.png`,
background3840: `${AWS_ASSETS_PATH}/product-background-720x405.png` background3840: `${AWS_ASSETS_PATH}/product-background-720x405.png`
} };
const Status = () => { const Status = () => {
const { status } = useStatus(); const healthyStatusText = "Available";
const downStatusText = "Disabled";
const healthyStatusColor = "green.900";
const downStatusColor = "red.600";
const [background, setBackground] = useState("background720") const {
const [backgroundLoaded720, setBackgroundLoaded720] = useState(false) apiServerStatus,
const [backgroundLoaded1920, setBackgroundLoaded1920] = useState(false) apiServerData,
const [backgroundLoaded2880, setBackgroundLoaded2880] = useState(false) crawlersServerStatus,
const [backgroundLoaded3840, setBackgroundLoaded3840] = useState(false) crawlersServerData,
dbServerStatus,
dbServerData
} = useStatus();
const [apiServerDataStatus, setAPIServerDataStatus] = useState({
color: downStatusColor,
text: downStatusText
});
const [crawlersServerDataStatus, setCrawlersServerDataStatus] = useState({
color: downStatusColor,
text: downStatusText
});
const [dbServerDataStatus, setDBServerDataStatus] = useState({
color: downStatusColor,
text: downStatusText
});
const [background, setBackground] = useState("background720");
const [backgroundLoaded720, setBackgroundLoaded720] = useState(false);
const [backgroundLoaded1920, setBackgroundLoaded1920] = useState(false);
const [backgroundLoaded2880, setBackgroundLoaded2880] = useState(false);
const [backgroundLoaded3840, setBackgroundLoaded3840] = useState(false);
const [ const [
isLargerThan720px, isLargerThan720px,
@ -39,35 +63,36 @@ const Status = () => {
"(min-width: 1920px)", "(min-width: 1920px)",
"(min-width: 2880px)", "(min-width: 2880px)",
"(min-width: 3840px)" "(min-width: 3840px)"
]) ]);
useEffect(() => { useEffect(() => {
apiServerStatus();
crawlersServerStatus();
dbServerStatus();
assets[ assets[
"background720" "background720"
] = `${AWS_ASSETS_PATH}/product-background-720x405.png` ] = `${AWS_ASSETS_PATH}/product-background-720x405.png`;
assets[ assets[
"background1920" "background1920"
] = `${AWS_ASSETS_PATH}/product-background-1920x1080.png` ] = `${AWS_ASSETS_PATH}/product-background-1920x1080.png`;
assets[ assets[
"background2880" "background2880"
] = `${AWS_ASSETS_PATH}/product-background-2880x1620.png` ] = `${AWS_ASSETS_PATH}/product-background-2880x1620.png`;
assets[ assets[
"background3840" "background3840"
] = `${AWS_ASSETS_PATH}/product-background-3840x2160.png` ] = `${AWS_ASSETS_PATH}/product-background-3840x2160.png`;
}, []);
const statusRes = status()
console.log(statusRes)
}, [])
useLayoutEffect(() => { useLayoutEffect(() => {
if (backgroundLoaded3840) { if (backgroundLoaded3840) {
setBackground("background3840") setBackground("background3840");
} else if (backgroundLoaded2880) { } else if (backgroundLoaded2880) {
setBackground("background2880") setBackground("background2880");
} else if (backgroundLoaded1920) { } else if (backgroundLoaded1920) {
setBackground("background1920") setBackground("background1920");
} else { } else {
setBackground("background720") setBackground("background720");
} }
}, [ }, [
isLargerThan720px, isLargerThan720px,
@ -78,39 +103,60 @@ const Status = () => {
backgroundLoaded1920, backgroundLoaded1920,
backgroundLoaded2880, backgroundLoaded2880,
backgroundLoaded3840 backgroundLoaded3840
]) ]);
useLayoutEffect(() => { useLayoutEffect(() => {
const imageLoader720 = new Image() const imageLoader720 = new Image();
imageLoader720.src = `${AWS_ASSETS_PATH}/product-background-720x405.png` imageLoader720.src = `${AWS_ASSETS_PATH}/product-background-720x405.png`;
imageLoader720.onload = () => { imageLoader720.onload = () => {
setBackgroundLoaded720(true) setBackgroundLoaded720(true);
} };
}, []) }, []);
useLayoutEffect(() => { useLayoutEffect(() => {
const imageLoader1920 = new Image() const imageLoader1920 = new Image();
imageLoader1920.src = `${AWS_ASSETS_PATH}/product-background-1920x1080.png` imageLoader1920.src = `${AWS_ASSETS_PATH}/product-background-1920x1080.png`;
imageLoader1920.onload = () => { imageLoader1920.onload = () => {
setBackgroundLoaded1920(true) setBackgroundLoaded1920(true);
} };
}, []) }, []);
useLayoutEffect(() => { useLayoutEffect(() => {
const imageLoader2880 = new Image() const imageLoader2880 = new Image();
imageLoader2880.src = `${AWS_ASSETS_PATH}/product-background-2880x1620.png` imageLoader2880.src = `${AWS_ASSETS_PATH}/product-background-2880x1620.png`;
imageLoader2880.onload = () => { imageLoader2880.onload = () => {
setBackgroundLoaded2880(true) setBackgroundLoaded2880(true);
} };
}, []) }, []);
useLayoutEffect(() => { useLayoutEffect(() => {
const imageLoader3840 = new Image() const imageLoader3840 = new Image();
imageLoader3840.src = `${AWS_ASSETS_PATH}/product-background-3840x2160.png` imageLoader3840.src = `${AWS_ASSETS_PATH}/product-background-3840x2160.png`;
imageLoader3840.onload = () => { imageLoader3840.onload = () => {
setBackgroundLoaded3840(true) setBackgroundLoaded3840(true);
};
}, []);
useLayoutEffect(() => {
if (apiServerData?.data.status == "ok") {
setAPIServerDataStatus({
color: healthyStatusColor,
text: healthyStatusText
});
} }
}, []) if (crawlersServerData?.data.status == "ok") {
setCrawlersServerDataStatus({
color: healthyStatusColor,
text: healthyStatusText
});
}
if (dbServerData?.data?.status == "ok") {
setDBServerDataStatus({
color: healthyStatusColor,
text: healthyStatusText
});
}
}, [apiServerData, crawlersServerData, dbServerData]);
const margin = useBreakpointValue({ const margin = useBreakpointValue({
base: "1%", base: "1%",
@ -119,7 +165,7 @@ const Status = () => {
lg: "15%", lg: "15%",
xl: "20%", xl: "20%",
"2xl": "25%" "2xl": "25%"
}) });
return ( return (
<Flex <Flex
@ -148,13 +194,17 @@ const Status = () => {
<Flex mb={3}> <Flex mb={3}>
<Text>Backend server</Text> <Text>Backend server</Text>
<Spacer /> <Spacer />
<Text>Available</Text> <Text color={apiServerDataStatus.color}>
{apiServerDataStatus.text}
</Text>
</Flex> </Flex>
<br /> <br />
<Flex mb={3}> <Flex mb={3}>
<Text>Crawlers server</Text> <Text>Crawlers server</Text>
<Spacer /> <Spacer />
<Text>Available</Text> <Text color={crawlersServerDataStatus.color}>
{crawlersServerDataStatus.text}
</Text>
</Flex> </Flex>
<Flex mb={3}> <Flex mb={3}>
<Text>Latest block in Geth</Text> <Text>Latest block in Geth</Text>
@ -175,7 +225,9 @@ const Status = () => {
<Flex mb={3}> <Flex mb={3}>
<Text>Database server</Text> <Text>Database server</Text>
<Spacer /> <Spacer />
<Text>Available</Text> <Text color={dbServerDataStatus.color}>
{dbServerDataStatus.text}
</Text>
</Flex> </Flex>
<Flex mb={3}> <Flex mb={3}>
<Text>Latest block in Database</Text> <Text>Latest block in Database</Text>
@ -185,7 +237,7 @@ const Status = () => {
</chakra.span> </chakra.span>
</Stack> </Stack>
</Flex> </Flex>
) );
} };
export default Status export default Status;

Wyświetl plik

@ -1,4 +1,5 @@
export NEXT_PUBLIC_MIXPANEL_TOKEN="<YOUR MIXPANEL TOKEN HERE>" export NEXT_PUBLIC_MIXPANEL_TOKEN="<YOUR MIXPANEL TOKEN HERE>"
export NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY="<stripe publishable key>" export NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY="<stripe publishable key>"
export NEXT_PUBLIC_MOONSTREAM_API_URL="http://localhost:7481" export NEXT_PUBLIC_MOONSTREAM_API_URL="<moonstream_api_url>"
export NEXT_PUBLIC_MOONSTREAM_DB_URL="http://localhost:5432" export NEXT_PUBLIC_MOONSTREAM_CRAWLERS_URL="<moonstream_crawlers_url>"
export NEXT_PUBLIC_MOONSTREAM_DB_URL="<moonstream_db_url>"

Wyświetl plik

@ -1,22 +1,52 @@
import { useMutation } from "react-query" import { useMutation } from "react-query";
import { useToast } from "./" import { useToast } from "./";
import { AuthService } from "../../core/services" import { AuthService } from "../../core/services";
const useStatus = () => { const useStatus = () => {
const toast = useToast() const toast = useToast();
const { const { mutate: apiServerStatus, data: apiServerData } = useMutation(
mutate: status AuthService.apiServerStatus,
} = useMutation(AuthService.status, { {
onError: (error) => { onError: (error) => {
toast(error, "error") // toast(error, "error");
}, },
onSuccess: () => { onSuccess: () => {
toast("Status got", "success") // toast("Status received", "success");
} }
})
return { status }
} }
);
export default useStatus const { mutate: crawlersServerStatus, data: crawlersServerData } =
useMutation(AuthService.crawlersServerStatus, {
onError: (error) => {
// toast(error, "error");
},
onSuccess: () => {
// toast("Status received", "success");
}
});
const { mutate: dbServerStatus, data: dbServerData } = useMutation(
AuthService.dbServerStatus,
{
onError: (error) => {
// toast(error, "error");
},
onSuccess: () => {
// toast("Status received", "success");
}
}
);
return {
apiServerStatus,
apiServerData,
crawlersServerStatus,
crawlersServerData,
dbServerStatus,
dbServerData
};
};
export default useStatus;

Wyświetl plik

@ -2,15 +2,9 @@ import { http } from "../utils";
const API_URL = process.env.NEXT_PUBLIC_MOONSTREAM_API_URL; const API_URL = process.env.NEXT_PUBLIC_MOONSTREAM_API_URL;
const DB_URL = process.env.NEXT_PUBLIC_MOONSTREAM_DB_URL; const DB_URL = process.env.NEXT_PUBLIC_MOONSTREAM_DB_URL;
const CRAWLERS_URL = process.env.NEXT_PUBLIC_MOONSTREAM_CRAWLERS_URL;
export const AUTH_URL = `${API_URL}/users`; export const AUTH_URL = `${API_URL}/users`;
export const status = () => {
return http({
method: "GET",
url: `${DB_URL}/block/latest`,
});
};
export const login = ({ username, password, token_note }) => { export const login = ({ username, password, token_note }) => {
const data = new FormData(); const data = new FormData();
data.append("username", username); data.append("username", username);
@ -109,3 +103,45 @@ export const revokeToken = (token) => {
url: `${AUTH_URL}/revoke/${token}`, url: `${AUTH_URL}/revoke/${token}`,
}); });
}; };
export const apiServerStatus = () => {
return http({
method: "GET",
url: `${API_URL}/ping`
});
};
export const crawlersServerStatus = () => {
return http({
method: "GET",
url: `${CRAWLERS_URL}/ping`
});
};
export const gethStatus = () => {
return http({
method: "GET",
url: `${CRAWLERS_URL}/status`
});
};
export const crawlersStatus = () => {
return http({
method: "GET",
url: `${API_URL}/status`
});
};
export const dbServerStatus = () => {
return http({
method: "GET",
url: `${DB_URL}/ping`
});
};
export const latestBlockDBStatus = () => {
return http({
method: "GET",
url: `${DB_URL}/block/latest`
});
};