|
@@ -0,0 +1,21 @@
|
|
|
+import React, { useState } from "react";
|
|
|
+import useJsonHealthCheck from "../../hooks/useJsonHealthCheck";
|
|
|
+import { StatusMessage, UNKNOWN, OK, BAD, FAILED } from "../shared/StatusMessage";
|
|
|
+
|
|
|
+export default () => {
|
|
|
+ const [{ users, health }, setState] = useState({ users: null, health: UNKNOWN });
|
|
|
+ useJsonHealthCheck(
|
|
|
+ "https://kirkleon.ddns.net/teamspeak/api",
|
|
|
+ ({ users }) => setState({ users: users.length, health: OK }),
|
|
|
+ () => setState({ users: null, health: BAD }),
|
|
|
+ () => setState({ users: null, health: FAILED }),
|
|
|
+ );
|
|
|
+
|
|
|
+ return (
|
|
|
+ <a className="tile" href="https://kirkleon.ddns.net/teamspeak/">
|
|
|
+ <span className="tile__title">Teamspeak Server</span>
|
|
|
+ <StatusMessage health={health} />
|
|
|
+ <span className="tile__data">{users === null ? "-" : `${users} users online`}</span>
|
|
|
+ </a>
|
|
|
+ );
|
|
|
+}
|