import type { GalleryItem } from "./types";

type InstagramMedia = {
  id: string;
  caption?: string;
  media_type: "IMAGE" | "VIDEO" | "CAROUSEL_ALBUM";
  media_url?: string;
  thumbnail_url?: string;
  permalink: string;
};

export async function getInstagramGallery(): Promise<GalleryItem[]> {
  const token = process.env.INSTAGRAM_ACCESS_TOKEN;
  if (!token) return [];

  try {
    const fields = "id,caption,media_type,media_url,thumbnail_url,permalink";
    const url = new URL("https://graph.instagram.com/me/media");
    url.searchParams.set("fields", fields);
    url.searchParams.set("limit", "24");
    url.searchParams.set("access_token", token);
    const response = await fetch(url, { next: { revalidate: 3600 } });
    if (!response.ok) return [];
    const payload = (await response.json()) as { data?: InstagramMedia[] };

    return (payload.data ?? []).flatMap((post) => {
      const src = post.media_type === "VIDEO" ? post.thumbnail_url : post.media_url;
      if (!src) return [];
      const caption = post.caption?.trim();
      return [{
        id: `instagram-${post.id}`,
        src,
        alt: caption?.slice(0, 180) || "Nail design by Nails by Ella",
        category: "From Instagram",
        href: post.permalink,
      }];
    });
  } catch {
    return [];
  }
}
