From 1a80c61c34fabd58766175aed1d2868ca3ce517e Mon Sep 17 00:00:00 2001 From: headlessdev Date: Tue, 15 Apr 2025 12:22:15 +0200 Subject: [PATCH] Uptime Page --- app/dashboard/uptime/Uptime.tsx | 61 +++++++++++++++++++++++++++++++++ app/dashboard/uptime/page.tsx | 59 +++++++++++++++++++++++++++++++ 2 files changed, 120 insertions(+) create mode 100644 app/dashboard/uptime/Uptime.tsx create mode 100644 app/dashboard/uptime/page.tsx diff --git a/app/dashboard/uptime/Uptime.tsx b/app/dashboard/uptime/Uptime.tsx new file mode 100644 index 0000000..fd469f6 --- /dev/null +++ b/app/dashboard/uptime/Uptime.tsx @@ -0,0 +1,61 @@ +import { AppSidebar } from "@/components/app-sidebar"; +import { + Breadcrumb, + BreadcrumbItem, + BreadcrumbLink, + BreadcrumbList, + BreadcrumbPage, + BreadcrumbSeparator, +} from "@/components/ui/breadcrumb"; +import { Separator } from "@/components/ui/separator"; +import { + SidebarInset, + SidebarProvider, + SidebarTrigger, +} from "@/components/ui/sidebar"; +import { useEffect, useState } from "react"; +import axios from "axios"; // Korrekter Import +import { Card, CardHeader } from "@/components/ui/card"; + +interface StatsResponse { + serverCount: number; + applicationCount: number; + onlineApplicationsCount: number; +} + +export default function Uptime() { + + return ( + + + +
+
+ + + + + + + / + + + + + My Infrastructure + + + + Uptime + + + +
+
+
+ +
+
+
+ ); +} \ No newline at end of file diff --git a/app/dashboard/uptime/page.tsx b/app/dashboard/uptime/page.tsx new file mode 100644 index 0000000..e397f3a --- /dev/null +++ b/app/dashboard/uptime/page.tsx @@ -0,0 +1,59 @@ +"use client"; + +import { useEffect, useState } from "react"; +import Cookies from "js-cookie"; +import { useRouter } from "next/navigation"; +import Uptime from "./Uptime"; +import axios from "axios"; + +export default function DashboardPage() { + const router = useRouter(); + const [isAuthChecked, setIsAuthChecked] = useState(false); + const [isValid, setIsValid] = useState(false); + + useEffect(() => { + const token = Cookies.get("token"); + if (!token) { + router.push("/"); + } else { + const checkToken = async () => { + try { + const response = await axios.post("/api/auth/validate", { + token: token, + }); + + if (response.status === 200) { + setIsValid(true); + } + } catch (error: any) { + Cookies.remove("token"); + router.push("/"); + } + } + checkToken(); + } + setIsAuthChecked(true); + }, [router]); + + if (!isAuthChecked) { + return ( +
+
+ + + + + + + + + + + Loading... +
+
+ ) + } + + return isValid ? : null; +} \ No newline at end of file