import type { Metadata } from "next"; import { cookies } from "next/headers"; import { authCookieHeader } from "@/lib/cookies"; import { fetchAdminContentCounts, fetchAdminContentPosts, type AdminContentPost, } from "@/lib/api"; import { getMeCached, getPublicSettingsCached } from "@/lib/serverData"; import { canModerateAny, isSuperOrOwner } from "@/lib/roles"; import Forbidden from "../Forbidden"; import ContentAdmin from "./ContentAdmin"; export const metadata: Metadata = { title: "内容管理", }; export default async function AdminContentPage() { const cookie = authCookieHeader(await cookies()); const me = await getMeCached(cookie || undefined); if (!me.user || !canModerateAny(me.user)) { return ; } let initialPosts: AdminContentPost[] = []; let initialTotal = 0; let initError = ""; const [postsSettled, counts] = await Promise.all([ fetchAdminContentPosts(1, "live", cookie || undefined) .then((res) => ({ ok: true as const, res })) .catch((e) => ({ ok: false as const, error: e instanceof Error ? e.message : "获取内容列表失败", })), fetchAdminContentCounts(cookie || undefined), ]); if (postsSettled.ok) { initialPosts = postsSettled.res.posts; initialTotal = postsSettled.res.total; } else { initError = postsSettled.error; } const settings = await getPublicSettingsCached(); return ( ); }