import { MetadataRoute } from 'next'

export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
  const baseUrl = 'https://modstagram.com'

  // ۱. صفحات اصلی و کلیدی
  const staticRoutes = ['', '/videos', '/billboards', '/users', '/posts'].map((route) => ({
    url: `${baseUrl}${route}`,
    lastModified: new Date(),
    changeFrequency: 'daily' as const,
    priority: route === '' ? 1.0 : 0.9,
  }))

  try {
    // ۲. واکشی بیلبوردها (هماهنگ با منطق جدید URL اسلاگ)
    const billboardsRes = await fetch('https://api.modstagram.ir/advertising/get/all/web', { 
      next: { revalidate: 3600 } 
    })
    const billboardData = await billboardsRes.json()
    const billboards = billboardData?.advertisings || []
    
    const billboardRoutes = billboards.map((b: any) => {
      // ساخت اسلاگ دقیقاً مشابه منطق استفاده شده در صفحه جزییات بیلبورد
      const titleParts = [
        b.title,
        b.category,
        b.province?.name,
        b.city?.name,
        b.neighbourhood !== b.city?.name ? b.neighbourhood : null,
      ].filter(Boolean);
      
      const slug = titleParts.join(" ").trim().replace(/\s+/g, '-').replace(/-+/g, '-');

      return {
        url: `${baseUrl}/billboards/${b._id}/${encodeURIComponent(slug)}`,
        lastModified: new Date(b.updatedAt || new Date()),
        priority: 0.8,
      }
    })

    // ۳. واکشی کاربران برای ایندکس شدن پروفایل‌ها
    const usersRes = await fetch('https://api.modstagram.ir/users/get/all/web', { 
      next: { revalidate: 3600 } 
    })
    const userData = await usersRes.json()
    const users = userData?.users || []

    const userRoutes = users.map((u: any) => ({
      url: `${baseUrl}/users/${u.username}`,
      lastModified: new Date(), // یا تاریخ آخرین فعالیت کاربر
      priority: 0.6,
    }))

    // ۴. واکشی ویدیوها (اگر API جداگانه دارند)
    const videosRes = await fetch('https://api.modstagram.ir/videos/get/all/web', { 
        next: { revalidate: 3600 } 
    }).catch(() => null)
    
    let videoRoutes: any[] = []
    if (videosRes) {
        const videoData = await videosRes.json()
        const videos = videoData?.videos || []
        videoRoutes = videos.map((v: any) => ({
            url: `${baseUrl}/videos/${v._id}/${encodeURIComponent(v.title.replace(/\s+/g, '-'))}`,
            lastModified: new Date(v.updatedAt || new Date()),
            priority: 0.7,
        }))
    }

    // ۵. پست‌ها — از فید عمومی
    let postRoutes: MetadataRoute.Sitemap = []
    try {
      const postsRes = await fetch(
        'https://app.modstagram.ir/api/v1/users/web?page=1&limit=100',
        { next: { revalidate: 3600 } }
      )
      if (postsRes.ok) {
        const postsData = await postsRes.json()
        const posts = postsData?.posts || []
        postRoutes = posts.map((p: { _id: string; updatedAt?: string }) => ({
          url: `${baseUrl}/posts/${p._id}`,
          lastModified: new Date(p.updatedAt || new Date()),
          changeFrequency: 'weekly' as const,
          priority: 0.65,
        }))
      }
    } catch {
      /* optional */
    }

    return [...staticRoutes, ...billboardRoutes, ...userRoutes, ...videoRoutes, ...postRoutes]
  } catch (error) {
    console.error("Sitemap error:", error)
    return staticRoutes
  }
}