// next-sitemap.config.js
/** @type {import('next-sitemap').IConfig} */
module.exports = {
  siteUrl: 'https://modstagram.com', // دامنه اصلی سایت شما
  generateRobotsTxt: true, // تولید فایل robots.txt
  sitemapSize: 7000, // حداکثر تعداد URL در هر فایل سایت‌مپ
  changefreq: 'daily', // فرکانس پیش‌فرض تغییر صفحات
  priority: 0.7, // اولویت پیش‌فرض صفحات

  // تابع transform برای فیلتر کردن و تنظیمات خاص هر مسیر
  transform: async (config, path) => {
    // مسیرهایی که نباید در سایت‌مپ باشند و نیازی به ایندکس شدن ندارند
    const excludedPaths = [
      '/settings',
      '/auth',
      '/new-post',
      '/offer',
      '/private/', // مسیرهای خصوصی
      // صفحات مربوط به پرداخت و ثبت‌نام/ورود
      '/projects/payment/success',
      '/projects/payment/failed',
      '/billboards/payment/success',
      '/billboards/payment/failed',
      '/forget-password',
      '/change-passowrd',
      '/login-with-username',
      '/login',
      '/register-otp',
      '/verify-otp',
      '/register',
      '/forget-password-otp',
      '/register/password',
      '/register/fullname',
      '/register/usertype',
      '/register/username',
      '/verify/avatar',
      '/verify/auth',
      '/verify/colors',
      '/verify/confirm',
      '/verify/expertise',
      '/verify/gender',
      '/verify/national-cart',
      '/verify/location',
      '/verify/public-relations',
      '/verify/cooperation-type',
      '/verify/services',
      '/verify/sizes',
      '/new-project', // اگر این یک صفحه فرم داخلی است که نیازی به ایندکس شدن ندارد
      '/billboards/new', // اگر این یک صفحه فرم داخلی است که نیازی به ایندکس شدن ندارد
      '/search', // اگر صفحه جستجو محتوای قابل ایندکس ندارد
    ];

    // اگر مسیر در لیست excludedPaths باشد، آن را از سایت‌مپ حذف کن
    if (excludedPaths.some(p => path.startsWith(p))) {
      return null;
    }

    let pageChangefreq = config.changefreq;
    let pagePriority = config.priority;

    // تنظیمات خاص برای مسیرهای مختلف
    if (path.startsWith('/users/')) { // مسیر برای پروفایل‌های کاربران
      pageChangefreq = 'weekly';
      pagePriority = 0.6;
    }
    if (path.startsWith('/projects/') || path.startsWith('/billboards/')) {
      pageChangefreq = 'daily';
      pagePriority = 0.8;
    }
    if (path === '/') { // صفحه اصلی
      pageChangefreq = 'daily';
      pagePriority = 1.0;
    }
    if (path === '/about-us') { // صفحه درباره ما
      pageChangefreq = 'monthly';
      pagePriority = 0.8;
    }

    return {
      loc: path, // آدرس کامل صفحه
      changefreq: pageChangefreq, // فرکانس تغییر صفحه
      priority: pagePriority, // اولویت صفحه
      lastmod: config.autoLastmod ? new Date().toISOString() : undefined, // تاریخ آخرین تغییر
      alternateRefs: config.alternateRefs ?? [],
    };
  },

  // تابع additionalPaths برای اضافه کردن مسیرهای داینامیک از API
  additionalPaths: async (config) => {
    const paths = [];
    const BASE_URL_API = "https://app.modstagram.ir/api/v1"; // آدرس پایه API شما
    paths.push({
      loc: '/',
      changefreq: 'daily',
      priority: 1.0
    });
    paths.push({
      loc: '/projects',
      changefreq: 'daily', 
      priority: 0.9
    });
    paths.push({
      loc: '/billboards',
      changefreq: 'daily', // یا weekly بسته به میزان تغییر محتوا
      priority: 0.9
    });
    try {
      // واکشی داده‌های پروژه‌ها
      const projectsRes = await fetch(`${BASE_URL_API}/projects?limit=500`);
      const projectsData = await projectsRes.json();
      if (projectsData && Array.isArray(projectsData.projects)) {
        projectsData.projects.forEach((project) => {
          if (project.id && project.title) {
            paths.push({
              // مسیر پروژه‌ها (با استفاده از تمپلیت لیتِرال صحیح)
              loc: `/projects/${project.id}/${encodeURIComponent(project.title)}`,
              changefreq: 'daily',
              priority: 0.8
            });
          }
        });
      }

      // واکشی داده‌های بیلبوردها
      const billboardsRes = await fetch(`${BASE_URL_API}/advertising/web?limit=500`);
      const billboardsData = await billboardsRes.json();
      if (billboardsData && Array.isArray(billboardsData.advertisings)) {
        billboardsData.advertisings.forEach((billboard) => {
          if (billboard._id && billboard.title) {
            paths.push({
              // مسیر بیلبوردها (با استفاده از تمپلیت لیتِرال صحیح)
              loc: `/billboards/${billboard._id}/${encodeURIComponent(billboard.title)}`,
              changefreq: 'daily',
              priority: 0.8
            });
          }
        });
      }

      // واکشی داده‌های کاربران (مدل‌ها)
      const usersRes = await fetch(`${BASE_URL_API}/users/web?limit=500`);
      const usersData = await usersRes.json();
      if (usersData && Array.isArray(usersData.users)) {
        usersData.users.forEach((user) => {
          if (user.user_name) {
            paths.push({
              // مسیر پروفایل کاربران (مسیر در Next.js شما /users/[username] است)
              loc: `/users/${encodeURIComponent(user.user_name)}`,
              changefreq: 'weekly',
              priority: 0.6
            });
          }
        });
      }

    } catch (error) {
      // لاگ کردن خطا در صورت مشکل در واکشی داده‌ها از API
      console.error('Error fetching additional paths for sitemap:', error);
    }

    return paths; // بازگرداندن آرایه‌ای از مسیرهای داینامیک
  },

  // تنظیمات مربوط به فایل robots.txt
  robotsTxtOptions: {
    policies: [
      {
        userAgent: '*', // اعمال سیاست‌ها برای همه ربات‌ها
        allow: '/', // اجازه دسترسی به کل سایت
        disallow: [
          '/api/', // مسیرهای API
          '/_next/', // فایل‌های داخلی Next.js
          '/settings', // صفحات تنظیمات
          '/auth', // صفحات احراز هویت (ورود، ثبت‌نام)
          '/private/', // مسیرهای خصوصی موجود
          '/new-post', // صفحات ایجاد پست جدید
          '/offer', // صفحات پیشنهاد
          // اضافه کردن مسیرهای پرداخت و ثبت‌نام/ورود به disallow
          '/projects/payment/success',
          '/projects/payment/failed',
          '/billboards/payment/success',
          '/billboards/payment/failed',
          '/forget-password',
          '/change-passowrd',
          '/login-with-username',
          '/login',
          '/register-otp',
          '/verify-otp',
          '/register',
          '/forget-password-otp',
          '/register/password',
          '/register/fullname',
          '/register/usertype',
          '/register/username',
          '/verify/avatar',
          '/verify/auth',
          '/verify/colors',
          '/verify/confirm',
          '/verify/expertise',
          '/verify/gender',
          '/verify/national-cart',
          '/verify/location',
          '/verify/public-relations',
          '/verify/cooperation-type',
          '/verify/services',
          '/verify/sizes',
          '/new-project',
          '/billboards/new',
          '/search', // اگر این صفحه برای ایندکس شدن نامناسب است
        ],
      },
    ],
    // اضافه کردن آدرس سایت‌مپ به robots.txt
    additionalSitemaps: [
      'https://modstagram.com/sitemap.xml',
    ],
  },
};