import BlogPostPage from "@/components/BlogPostPage";
import Footer from "@/components/Footer";
import { generatePageMetadata } from "@/lib/metadataUtils";
import type { Metadata } from "next";
import { notFound } from "next/navigation";

type BlogData = {
  sb_id: number;
  sb_sbt_id: number;
  sb_title: string;
  sb_content: string;
  sb_path: string;
  sb_date: number;
  sb_photo?: string;
  sb_photo_width?: number;
  sb_photo_height?: number;
};

// export async function generateMetadata({ params }: { params: { slug: string } }): Promise<Metadata> {
//   return generatePageMetadata(`/blog/${params.slug}`);
// }
export async function generateMetadata(
  { params }: { params: Promise<{ slug: string }> }
): Promise<Metadata> {

  const { slug } = await params;

  return generatePageMetadata(`/blog/${slug}`);
}

async function fetchBlog(baseURL: string, slug: string) {
  
  try {
    const res = await fetch(
      `${baseURL}/api/blog/details`,
      {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({ slug }),
        cache: "no-store",
      }
    );

    const json = await res.json();
    return json.data || null;
  } catch {
    return null;
  }
}

async function fetchRelated(baseURL: string) {
  try {
    const res = await fetch(
      `${baseURL}/api/blog/list`,
      {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({ status: 1 }),
        cache: "no-store",
      }
    );

    const json = await res.json();
    return json.data || [];
  } catch {
    return [];
  }
}
export default async function BlogDetail(
  { params }: { params: Promise<{ slug: string }> }
) {

  const { slug } = await params;
// export default async function BlogDetail({ params }: { params: { slug: string } }) {
//   const { slug } = params;
  const baseURL = process.env.NEXT_PUBLIC_SITE_URL ?? "http://localhost:3000";
  const post = await fetchBlog(baseURL,slug);
  if (!post) return notFound();
  const related = await fetchRelated(baseURL);
  const relatedPosts = related.filter((p: BlogData) => p.sb_path !== slug);
  return (
    <>
      <BlogPostPage post={post} relatedPosts={relatedPosts} />
      <Footer />
    </>
  );
}
