import { redirect } from "next/navigation"; import Link from "next/link"; import { cookies } from "next/headers"; import { authCookieHeader } from "@/lib/cookies"; import { getMeCached } from "@/lib/serverData"; import { fetchNotifications } from "@/lib/api"; import Pagination from "@/components/Pagination"; import NotificationsClient from "./NotificationsClient"; interface NotificationsPageProps { searchParams: Promise<{ page?: string }>; } // SSR 直出通知列表:F5 直接看到内容,不再先渲染"正在加载…" export default async function NotificationsPage({ searchParams }: NotificationsPageProps) { const sp = await searchParams; const page = Math.max(1, parseInt(sp.page || "1", 10) || 1); const cookie = authCookieHeader(await cookies()); const me = await getMeCached(cookie || undefined); if (!me.user) { redirect(`/login?redirect=${encodeURIComponent(`/notifications`)}`); } let data = null; let loadError = false; try { data = await fetchNotifications(page, cookie); } catch { loadError = true; } return (

通知中心

{loadError || !data ? (

通知加载失败

网络异常,请稍后重试

重新加载
) : (
{/* 左栏 sticky 概览 + 全部已读(客户端组件,行内未读数点击后同步刷新);右列列表 + 分页 */}
)}
); }