"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 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(); }, []); return (

Galeri Kami

{loading ? (

Loading...

) : (
{data.map((item: any) => (
{item.image_url ? ( {item.title} ) : (
No Image
)}
))}
)}
); }