Add minecraft server status indicator

pull/1067/head
Sairenity 2 years ago
parent 8f3ae6d674
commit f418ee6327

@ -264,7 +264,10 @@
}, },
"minecraft": { "minecraft": {
"players": "Players", "players": "Players",
"version": "Version" "version": "Version",
"status": "Status",
"up": "Online",
"down": "Offline"
}, },
"miniflux": { "miniflux": {
"read": "Read", "read": "Read",

@ -1,3 +1,5 @@
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container"; import Container from "components/services/widget/container";
import Block from "components/services/widget/block"; import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api"; import useWidgetAPI from "utils/proxy/use-widget-api";
@ -5,22 +7,40 @@ import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) { export default function Component({ service }) {
const { widget } = service; const { widget } = service;
const { data: serverData, error: serverError } = useWidgetAPI(widget, "status"); const { data: serverData, error: serverError } = useWidgetAPI(widget, "status");
const { t } = useTranslation();
if(serverError){ if(serverError){
return <Container error={serverError} />; return <Container error={serverError} />;
} }
if (!serverData) { if (!serverData) {
return ( return (
<Container service={service}> <Container service={service}>
<Block label="minecraft.status"/>
<Block label="minecraft.players" /> <Block label="minecraft.players" />
<Block label="minecraft.version" /> <Block label="minecraft.version" />
</Container> </Container>
); );
} }
const statusIndicator = serverData.online ?
<span className="text-green-500">{t("minecraft.up")}</span>:
<span className="text-red-500">{t("minecraft.down")}</span>;
if(serverData.players){
return ( return (
<Container service={service}> <Container service={service}>
<Block label="minecraft.status" value={statusIndicator} />
<Block label="minecraft.players" value={`${serverData.players.online} / ${serverData.players.max}`} /> <Block label="minecraft.players" value={`${serverData.players.online} / ${serverData.players.max}`} />
<Block label="minecraft.version" value={serverData.version} /> <Block label="minecraft.version" value={serverData.version} />
</Container> </Container>
); );
} }
return (
<Container service={service}>
<Block label="minecraft.status" value={statusIndicator} />
<Block label="minecraft.players" value="-" />
<Block label="minecraft.version" value="-" />
</Container>
);
}

@ -11,7 +11,8 @@ const widget = {
const jsonData = asJson(data); const jsonData = asJson(data);
return { return {
players: jsonData.players, players: jsonData.players,
version: jsonData.version version: jsonData.version,
online: jsonData.online
} }
} }
} }

Loading…
Cancel
Save