import { useTranslations } from "next-intl"; import { LayoutAdminAuthenticated } from "~/components/layouts/layout"; import { api } from "~/utils/api"; import DebugMirror from "~/components/adminPage/controller/debugController"; import { UnlinkedNetwork } from "~/components/adminPage/controller/unlinkedNetworkTable"; import ZerotierUrl from "~/components/adminPage/controller/zerotierUrl"; import { ReactElement } from "react"; const Controller = () => { // const [error, setError] = useState(false); const t = useTranslations("admin"); const { data: controllerData, error: controllerError } = api.admin.getControllerStats.useQuery(); const { data: unlinkedNetworks } = api.admin.unlinkedNetwork.useQuery({ getDetails: false, }); const { networkCount, totalMembers, controllerStatus, assignedIPs } = controllerData || {}; const { allowManagementFrom, allowTcpFallbackRelay, listeningOn } = controllerStatus?.config?.settings || {}; const { online, tcpFallbackActive, version } = controllerStatus || {}; return (
{controllerError ? (
{controllerError?.message}
) : ( <>

{t("controller.networkMembers.title")}

{t("controller.networkMembers.totalNetworks")}

{networkCount}

{t("controller.networkMembers.totalMembers")}

{totalMembers}

{t("controller.networkMembers.totalUnlinkedNetworks")}

{unlinkedNetworks?.length}

Assigned Network IP's

{assignedIPs?.map((ip, index) => ( // biome-ignore lint/suspicious/noArrayIndexKey:

{ip}

))}
{unlinkedNetworks && unlinkedNetworks?.length > 0 ? (

{t("controller.networkMembers.unlinkedNetworks.title")}

{t("controller.networkMembers.unlinkedNetworks.description")}

) : null}

{t("controller.management.title")}

{t("controller.management.allowManagementFrom")}

{allowManagementFrom?.map((address) => ( {address} ))}

{t("controller.management.allowTcpFallbackRelay")}

{allowTcpFallbackRelay ? "Yes" : "No"}

{t("controller.management.listeningOn")}

{listeningOn?.map((address) => ( {address} ))}

{t("controller.controllerStatus.title")}

{t("controller.controllerStatus.online")}

{online ? "Yes" : "No"}

{t("controller.controllerStatus.tcpFallbackActive")}

{tcpFallbackActive ? "Yes" : "No"}

{t("controller.controllerStatus.version")}

{version}

Debug

)}
); }; Controller.getLayout = function getLayout(page: ReactElement) { return {page}; }; export default Controller;