"use client"; import { useEffect, useState } from "react"; import Image from "next/image"; import { getAllGaleryFiles, getGaleryData, getGaleryFileData, } from "@/service/galery"; export default function GallerySection() { const [data, setData] = useState([]); const [loading, setLoading] = useState(false); const TABS = [ "All", "Grand Opening", "IIMS", "GIIAS", "GJAW", "Exhibitions", "Test Drive", ]; const [activeTab, setActiveTab] = useState("All"); const fetchData = async () => { try { setLoading(true); // 1️⃣ Ambil gallery (ada status_id) const galleryRes = await getGaleryData({ limit: "100", page: 1, search: "", }); const galleries = galleryRes?.data?.data ?? []; // hanya approved const approvedGalleries = galleries.filter((g: any) => g.status_id === 2); // 2️⃣ Ambil SEMUA files const filesRes = await getAllGaleryFiles(); const files = filesRes?.data?.data ?? []; // 3️⃣ Mapping gallery + file berdasarkan gallery_id const merged = approvedGalleries.map((gallery: any) => { const file = files.find((f: any) => f.gallery_id === gallery.id); return { ...gallery, image_url: file?.image_url ?? null, }; }); setData(merged); } catch (err) { console.error("Error fetch galeri:", err); } finally { setLoading(false); } }; useEffect(() => { fetchData(); }, []); const filteredData = data.filter((item) => { if (activeTab === "All") return true; return item.category === activeTab; }); return (

Galeri Kami

{TABS.map((tab) => ( ))}
{loading ? (

Loading...

) : (
{filteredData.length > 0 ? ( filteredData.map((item: any) => (
{item.image_url ? ( {item.title} ) : (
No Image
)}
)) ) : (

Konten belum tersedia

)}
)}
); }