forked from UKSOURCE/ipv6
Adding UI of FeedBack, Registration, Admin console
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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" />;
|
||||
}
|
||||
@@ -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" />;
|
||||
}
|
||||
@@ -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" />;
|
||||
}
|
||||
@@ -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" />;
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
export default function InternalLayout({ children }: { children: React.ReactNode }) {
|
||||
return children;
|
||||
}
|
||||
Reference in New Issue
Block a user