From 7050b02b5e4cc64c1a6393daf1fc4fdd42640b14 Mon Sep 17 00:00:00 2001 From: Leo dev Date: Thu, 17 Jul 2025 15:02:26 +0200 Subject: [PATCH] small stuff --- src/app/api/server/route.ts | 33 +++++++++++++++++++++++++++++++ src/app/api/servers/route.ts | 10 +++++++++- src/app/dashboard/page.tsx | 18 +---------------- src/app/dashboard/server.tsx | 29 +++++++++++++++++++++++---- src/app/servers/[server]/page.tsx | 17 ++++++++++++++++ src/app/servers/page.tsx | 18 +---------------- src/lib/session.ts | 6 ++++++ 7 files changed, 92 insertions(+), 39 deletions(-) create mode 100644 src/app/api/server/route.ts create mode 100644 src/app/servers/[server]/page.tsx diff --git a/src/app/api/server/route.ts b/src/app/api/server/route.ts new file mode 100644 index 0000000..fde2454 --- /dev/null +++ b/src/app/api/server/route.ts @@ -0,0 +1,33 @@ +import { HttpStatusCode } from "axios"; +import { NextResponse } from "next/server"; +import { servers } from "../servers/route"; +import { validate } from "../auth/route"; + +/* + Vision: This will be +*/ +export function GET(request: Request) { + const { searchParams } = new URL(request.url); + + if (!validate(searchParams.get("sessionId"))) + return NextResponse.json( + { message: "Invalid session" }, + { status: HttpStatusCode.Unauthorized } + ); + + const index = searchParams.get("index"); + + if (!index) + return NextResponse.json( + { + message: "The index is invalid", + }, + { + status: HttpStatusCode.BadRequest, + } + ); + + return NextResponse.json({ + message: "ok", + }); +} diff --git a/src/app/api/servers/route.ts b/src/app/api/servers/route.ts index 6454d7b..b79b738 100644 --- a/src/app/api/servers/route.ts +++ b/src/app/api/servers/route.ts @@ -4,11 +4,19 @@ import Server, { ServerAPI } from "@/types/server"; import { HttpStatusCode } from "axios"; import { validate } from "../auth/route"; -const servers = new Data("sentryx/servers.json", []); +export const servers = new Data("sentryx/servers.json", []); export async function GET(request: Request) { const { searchParams } = new URL(request.url); const query = searchParams.get("s"); + const sessionId = searchParams.get("sessionId"); + + if (!validate(sessionId)) + return NextResponse.json( + { message: "Invalid session" }, + { status: HttpStatusCode.Unauthorized } + ); + const currentServers = servers.data.map( (s) => ({ diff --git a/src/app/dashboard/page.tsx b/src/app/dashboard/page.tsx index 7fde509..b89497d 100644 --- a/src/app/dashboard/page.tsx +++ b/src/app/dashboard/page.tsx @@ -192,23 +192,7 @@ export default function Dashboard() {
{searchedServers.map((s, i) => ( - - session - ?.removeServer(i) - .then(() => { - toast.info("Server successfully deleted"); - }) - .catch((e) => { - console.log(e.response.data.message); - toast.error( - `Error deleting server: ` + e.response.data.message - ); - }) - } - /> + ))}
diff --git a/src/app/dashboard/server.tsx b/src/app/dashboard/server.tsx index 52b9572..da314ef 100644 --- a/src/app/dashboard/server.tsx +++ b/src/app/dashboard/server.tsx @@ -23,6 +23,7 @@ import { } from "@/components/ui/context-menu"; import { Label } from "@/components/ui/label"; import { Progress } from "@/components/ui/progress"; +import Session from "@/lib/session"; import Server from "@/types/server"; import { Cpu, @@ -35,7 +36,9 @@ import { Trash, Wifi, } from "lucide-react"; +import { redirect } from "next/navigation"; import { useState } from "react"; +import { toast } from "sonner"; export function UsageBar({ value, @@ -63,10 +66,12 @@ export function UsageBar({ export default function ServerComponent({ server, - onDelete, + index, + session, }: { server: Server; - onDelete: () => void; + index: number; + session: Session | null; }) { const [deleteAlert, setDeleteAlert] = useState(false); @@ -74,7 +79,12 @@ export default function ServerComponent({ <> - + { + redirect(`/servers/${index}`); + }} + >
@@ -154,7 +164,18 @@ export default function ServerComponent({ Cancel + session + ?.removeServer(index) + .then(() => { + toast.info("Server successfully deleted"); + }) + .catch((e) => { + toast.error( + `Error deleting server: ` + e.response.data.message + ); + }) + } > Delete diff --git a/src/app/servers/[server]/page.tsx b/src/app/servers/[server]/page.tsx new file mode 100644 index 0000000..06f54ed --- /dev/null +++ b/src/app/servers/[server]/page.tsx @@ -0,0 +1,17 @@ +"use client"; +import useSession from "@/hooks/useSession"; +import Server from "@/types/server"; +import { useEffect, useState } from "react"; + +export default function ServerPage() { + const session = useSession(); + const [server, setServer] = useState(); + + useEffect(() => { + session?.getServerIndex(0).then((s) => { + setServer(s.data); + }); + }, [session]); + + return

{JSON.stringify(server)}

; +} diff --git a/src/app/servers/page.tsx b/src/app/servers/page.tsx index 0cca797..6383c7c 100644 --- a/src/app/servers/page.tsx +++ b/src/app/servers/page.tsx @@ -60,23 +60,7 @@ export default function Servers() {
{searchedServers.map((s, i) => ( - - session - ?.removeServer(i) - .then(() => { - toast.info("Server successfully deleted"); - }) - .catch((e) => { - console.log(e.response.data.message); - toast.error( - `Error deleting server: ` + e.response.data.message - ); - }) - } - /> + ))}
diff --git a/src/lib/session.ts b/src/lib/session.ts index 9c649e2..886df00 100644 --- a/src/lib/session.ts +++ b/src/lib/session.ts @@ -31,4 +31,10 @@ export default class Session { params: { index, sessionId: this.id }, }); } + + public async getServerIndex(index: number) { + return await axios.get("/api/server", { + params: { index, sessionId: this.id }, + }); + } }