import { defaultSEOConfig } from "@/config/seoConfig";
import { Metadata } from "next";

interface PageMetadataOptions {
  title: string;
  description: string;
  path: string; // این باید مسیر نسبی صفحه باشد، مثلا '/users/123'
  type?: "website" | "article" | "profile"; // انواع Open Graph را اضافه کنید
  publishedTime?: string;
  modifiedTime?: string;
  imageUrl?: string; // آدرس تصویر خاص برای این صفحه
  imageAlt?: string; // متن جایگزین تصویر
}

export function generatePageMetadata(options: PageMetadataOptions): Metadata {
  const baseUrl = "https://modstagram.com"; // مطمئن شوید BASE_URL یکسان باشد
  const fullUrl = `${baseUrl}${options.path}`;

  const finalTitle = options.title
    ? `${options.title} - مدستاگرام`
    : defaultSEOConfig.title; // عنوان صفحه + نام سایت
  const finalDescription = options.description || defaultSEOConfig.description;

  const images = options.imageUrl
    ? [
        {
          url: options.imageUrl,
          width: 1200, // توصیه می‌شود این ابعاد را رعایت کنید
          height: 630,
          alt: options.imageAlt || options.title,
        },
      ]
    : defaultSEOConfig.openGraph?.images || []; // اگر تصویر خاصی نیست، از تصاویر پیش‌فرض استفاده کند

  return {
    title: {
      absolute: finalTitle,
    },
    description: finalDescription,
    alternates: {
      canonical: fullUrl,
    },
    openGraph: {
      title: finalTitle,
      description: finalDescription,
      url: fullUrl,
      siteName: defaultSEOConfig.openGraph?.site_name,
      locale: "fa_IR",
      type: options.type || "website",
      // images: images,
    },
    twitter: {
      site: defaultSEOConfig.twitter?.site,
      creator: defaultSEOConfig.twitter?.handle,
      title: finalTitle,
      description: finalDescription,
      images: images.map((img) => img.url), // تصاویر توییتر
    },
    // اگر تگ های meta اضافی از defaultSEOConfig نیاز دارید
    // ...defaultSEOConfig.additionalMetaTags.reduce((acc: any, tag: any) => {
    //   if (tag.name === 'google-site-verification') acc.google = tag.content;
    //   if (tag.name === 'samandehi') acc.samandehi = tag.content;
    //   return acc;
    // }, {}),

    // برای meta tags های خاص مقاله/پروفایل
    ...(options.type === "article" &&
    options.publishedTime &&
    options.modifiedTime
      ? {
          article: {
            publishedTime: options.publishedTime,
            modifiedTime: options.modifiedTime,
          },
        }
      : {}),
    ...(options.type === "profile"
      ? {
          // اینجا می توانید متاتگ های schema.org برای پروفایل را اضافه کنید اگر از ساختار json-ld استفاده می کنید
          // @context: 'https://schema.org',
          // @type: 'ProfilePage',
          // ...
        }
      : {}),
  };
}
