Adding UI of FeedBack, Registration, Admin console

This commit is contained in:
2026-05-12 20:54:15 +07:00
parent 6a48d6351c
commit dd95ff5a21
30 changed files with 10038 additions and 36 deletions
+24
View File
@@ -0,0 +1,24 @@
"use server";
import { updateSummitRequestStatus } from "@/lib/summit-requests";
import type { SubmissionStatus } from "@/types/admin-submission";
import { revalidatePath } from "next/cache";
const ADMIN_PATHS = ["/admin", "/admin/pending", "/admin/approved", "/admin/rejected"] as const;
const ALLOWED: SubmissionStatus[] = ["pending", "approved", "rejected"];
export async function setRequestStatusAction(publicId: string, status: SubmissionStatus) {
if (!ALLOWED.includes(status)) {
throw new Error("Invalid status");
}
if (!publicId || typeof publicId !== "string") {
throw new Error("Invalid id");
}
await updateSummitRequestStatus(publicId.trim(), status);
for (const p of ADMIN_PATHS) {
revalidatePath(p);
}
}
+15
View File
@@ -0,0 +1,15 @@
import type { Metadata } from "next";
import AdminConsole from "@/app/components/admin/AdminConsole";
import { loadAdminConsoleData } from "@/lib/load-admin-console-data";
export const dynamic = "force-dynamic";
export const metadata: Metadata = {
title: "Approved | Admin Console",
robots: { index: false, follow: false },
};
export default async function AdminApprovedPage() {
const data = await loadAdminConsoleData();
return <AdminConsole data={data} view="approved" />;
}
+16
View File
@@ -0,0 +1,16 @@
import type { Metadata } from "next";
import AdminConsole from "@/app/components/admin/AdminConsole";
import { loadAdminConsoleData } from "@/lib/load-admin-console-data";
export const dynamic = "force-dynamic";
export const metadata: Metadata = {
title: "Admin Console | IPv6 Summit 2026",
description: "Internal request management.",
robots: { index: false, follow: false },
};
export default async function AdminPage() {
const data = await loadAdminConsoleData();
return <AdminConsole data={data} view="all" />;
}
+15
View File
@@ -0,0 +1,15 @@
import type { Metadata } from "next";
import AdminConsole from "@/app/components/admin/AdminConsole";
import { loadAdminConsoleData } from "@/lib/load-admin-console-data";
export const dynamic = "force-dynamic";
export const metadata: Metadata = {
title: "Pending approval | Admin Console",
robots: { index: false, follow: false },
};
export default async function AdminPendingPage() {
const data = await loadAdminConsoleData();
return <AdminConsole data={data} view="pending" />;
}
+15
View File
@@ -0,0 +1,15 @@
import type { Metadata } from "next";
import AdminConsole from "@/app/components/admin/AdminConsole";
import { loadAdminConsoleData } from "@/lib/load-admin-console-data";
export const dynamic = "force-dynamic";
export const metadata: Metadata = {
title: "Rejected | Admin Console",
robots: { index: false, follow: false },
};
export default async function AdminRejectedPage() {
const data = await loadAdminConsoleData();
return <AdminConsole data={data} view="rejected" />;
}