35 lines
1.0 KiB
TypeScript
35 lines
1.0 KiB
TypeScript
import { notFound, redirect } from "next/navigation";
|
|
import { connection } from "next/server";
|
|
|
|
import { EditorWorkspace } from "@/components/admin/editor-workspace";
|
|
import { LiveRefresh } from "@/components/live-refresh";
|
|
import { getAdminSession } from "@/lib/auth/server";
|
|
import { loadAdminNavigation, loadAdminPage } from "@/lib/content/loaders";
|
|
|
|
export default async function AdminEditorPage({
|
|
params,
|
|
}: {
|
|
params: Promise<{ character: string; page: string }>;
|
|
}) {
|
|
await connection();
|
|
if (!(await getAdminSession())) redirect("/admin/login");
|
|
const { character, page } = await params;
|
|
const [snapshot, navigation] = await Promise.all([
|
|
loadAdminPage(character, page),
|
|
loadAdminNavigation(),
|
|
]);
|
|
if (!snapshot) notFound();
|
|
return (
|
|
<>
|
|
{process.env.BUZZ_DEMO_MODE === "true" ? null : (
|
|
<LiveRefresh endpoint="/api/events/admin" />
|
|
)}
|
|
<EditorWorkspace
|
|
key={`${snapshot.page.id}:${snapshot.page.version}`}
|
|
snapshot={snapshot}
|
|
navigation={navigation}
|
|
/>
|
|
</>
|
|
);
|
|
}
|