import type { Metadata } from "next" import { getTranslations } from "next-intl/server" import { requirePermission } from "@/shared/lib/auth-guard" import { Permissions } from "@/shared/types/permissions" import { getUserAnnouncementsPageData } from "@/modules/announcements/data-access" import { AnnouncementList } from "@/modules/announcements/components/announcement-list" import { AnnouncementsServiceProvider } from "@/modules/announcements/components/announcements-service-context" export const dynamic = "force-dynamic" export async function generateMetadata(): Promise { const t = await getTranslations("announcements") return { title: t("title.list"), description: t("description.list") } } const PAGE_SIZE = 12 export default async function AnnouncementsPage({ searchParams, }: { searchParams: Promise<{ page?: string; status?: string }> }) { const t = await getTranslations("announcements") const ctx = await requirePermission(Permissions.ANNOUNCEMENT_READ) const sp = await searchParams const requestedPage = Number(sp.page) const page = Number.isFinite(requestedPage) && requestedPage > 0 ? Math.floor(requestedPage) : 1 const { items, total, page: currentPage, pageSize } = await getUserAnnouncementsPageData( ctx.userId, ctx.dataScope, page, PAGE_SIZE ) // 构建分页 URL:保留 ?status= 过滤参数(与 AnnouncementList 的过滤机制一致) const buildPageHref = (targetPage: number): string => { const params = new URLSearchParams() if (sp.status) params.set("status", sp.status) if (targetPage > 1) params.set("page", String(targetPage)) const qs = params.toString() return qs ? `/announcements?${qs}` : "/announcements" } return (

{t("title.list")}

{t("description.list")}

) }