import Link from "next/link"; import type { Metadata } from "next"; import { cookies } from "next/headers"; import { PenSquare, SearchX, MessagesSquare, Check, ArrowRight } from "lucide-react"; import { fetchPosts, fetchBoards } from "@/lib/api"; import Pagination from "@/components/Pagination"; import PostRow from "@/components/PostRow"; import PinnedPosts from "@/components/PinnedPosts"; export const metadata: Metadata = { title: "姜十三论坛 · 技术讨论社区", description: "姜十三论坛,分享技术、讨论问题、交流心得的社区", }; interface HomePageProps { searchParams: Promise<{ q?: string; page?: string }>; } export default async function HomePage({ searchParams }: HomePageProps) { const { q, page: pageStr } = await searchParams; const keyword = q?.trim() || ""; const page = Math.max(1, parseInt(pageStr || "1", 10) || 1); const cookie = (await cookies()).toString(); const [postsData, boardsData] = await Promise.all([ fetchPosts(page, 20, undefined, "latest", keyword, cookie), fetchBoards(), ]); // 第一页且非搜索时:管理员置顶独立成区,其余进入普通列表 const split = page === 1 && !keyword; const pinned = split ? postsData.posts.filter((p) => p.pinned > 0) : []; const rows = split ? postsData.posts.filter((p) => p.pinned <= 0) : postsData.posts; return (
{keyword ? `共找到 ${postsData.total} 篇相关帖子` : `共 ${postsData.total} 篇帖子 · ${boardsData.boards.length} 个板块,欢迎加入讨论`}
{keyword ? "没有找到相关帖子" : "还没有帖子"}
{keyword ? `换个关键词试试,或者发起“${keyword}”相关的话题` : "成为第一个发起讨论的人吧"}
{keyword ? (