"use client"; import { useSearchParams } from "next/navigation"; import { useEffect, useState, Suspense } from "react"; import Link from "next/link"; interface Post { id: number; title: string; content?: string; createdAt: string; author?: { name: string; }; } // Disable static generation export const dynamic = "force-dynamic"; function PostsList() { const searchParams = useSearchParams(); const page = parseInt(searchParams.get("page") || "1"); const [posts, setPosts] = useState([]); const [totalPages, setTotalPages] = useState(1); const [isLoading, setIsLoading] = useState(true); useEffect(() => { async function fetchPosts() { setIsLoading(true); try { const res = await fetch(`/api/posts?page=${page}`); if (!res.ok) { throw new Error("Failed to fetch posts"); } const data = await res.json(); setPosts(data.posts); setTotalPages(data.totalPages); } catch (error) { console.error("Error fetching posts:", error); } finally { setIsLoading(false); } } fetchPosts(); }, [page]); return ( <> {isLoading ? (

Loading...

) : ( <> {posts.length === 0 ? (

No posts available.

) : ( )} {/* Pagination Controls */}
{page > 1 && ( )} {page < totalPages && ( )}
)} ); } export default function PostsPage() { return (

Loading page...

} > ); }