import { BaseURL, WebsiteURL, WithoutAuthCategoryAPI } from "@/Utils/APIRequest/Endpoints";
import WithoutAuthCategory from "@/Component/WithoutAuthShare/Category";

type Props = {
  params: Promise<{ slug: string }>
}

export async function generateMetadata({ params }: Props): Promise<any> {
  // read route params
  const slug = (await params).slug;

  // fetch data
  let URL = `${BaseURL}${WithoutAuthCategoryAPI}/${slug}`;
  const CategoryData = await fetch(URL).then((res) => res.json());

  const previousImages = CategoryData?.category?.image ? [CategoryData?.category?.image] : [];

  let keywords: string[] = [];

  if (CategoryData?.category?.tags) {
    if (Array.isArray(CategoryData.category.tags)) {
      keywords.push(...CategoryData.category.tags);
    } else if (typeof CategoryData.category.tags === "string") {
      keywords.push(...CategoryData.category.tags.split(",").map((t: string) => t.trim()));
    }
  }

  if (Array.isArray(CategoryData?.data)) {
    CategoryData.data.forEach((influencer: any) => {
      if (Array.isArray(influencer?.userKeywords)) {
        influencer.userKeywords.forEach((uk: any) => {
          if (uk?.keywords?.keyword) {
            keywords.push(uk?.keywords?.keyword);
          }
        });
      }
    });
  }

  // Remove duplicates & trim
  const uniqueKeywords = Array.from(
    new Set(keywords.map((k: string) => k.trim()))
  );

  return {
    title: CategoryData?.category?.title,
    description: CategoryData?.category?.description,
    metadataBase: WebsiteURL,
    keywords: uniqueKeywords,
    openGraph: {
      title: CategoryData?.category?.title,
      description: CategoryData?.category?.description,
      images: [...previousImages]
    },
    twitter: {
      card: "summary_large_image",
      title: CategoryData?.category?.title,
      description: CategoryData?.category?.description,
      images: [...previousImages]
    }
  }
}

const InfluencerDetailPage = async ({ params }: Props) => {
  const { slug } = await params;

  return (
    <WithoutAuthCategory slug={Array.isArray(slug) ? slug[0] : slug} />
  )
}

export default InfluencerDetailPage
