import Link from "next/link"; import { Metadata } from "next"; import { cookies } from "next/headers"; import { fetchPosts, fetchBoards } from "@/lib/api"; import Pagination from "@/components/Pagination"; import LikeButton from "@/components/LikeButton"; interface PageProps { params: Promise<{ id: string }>; searchParams: Promise<{ page?: string }>; } export async function generateMetadata({ params }: PageProps): Promise { const { id } = await params; const { boards } = await fetchBoards(); const board = boards.find((b) => b.id === Number(id)); return { title: board ? `${board.name} - 姜十三论坛` : "板块 - 姜十三论坛", description: board?.description || "板块帖子列表", }; } export default async function BoardPage({ params, searchParams }: PageProps) { const { id } = await params; const { page: pageStr } = await searchParams; const page = Math.max(1, parseInt(pageStr || "1", 10) || 1); const cookie = (await cookies()).toString(); const [postsData, boardsData] = await Promise.all([ fetchPosts(page, 20, Number(id), "latest", "", cookie), fetchBoards(), ]); const board = boardsData.boards.find((b) => b.id === Number(id)); return (

{board?.name}

{board?.description}

{postsData.posts.map((post) => (
{post.pinned > 0 && ( 置顶 )} {post.recommended && ( 推荐 )}

{post.title}

{post.user.nickname} {new Date(post.created_at).toLocaleDateString("zh-CN")} 💬 {post.comment_count} 👁 {post.view_count}
))} {postsData.posts.length === 0 && (

该板块暂无帖子

)}
); }