"use client"; import { useEffect, useState } from "react"; import Image from "next/image"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter, } from "@/components/ui/dialog"; import { X } from "lucide-react"; import { getGaleryFileData, updateGalery, updateUploadGaleryFile, } from "@/service/galery"; export function DialogUpdateGaleri({ open, onClose, data, onUpdated }: any) { const [title, setTitle] = useState(data.title || ""); const [description, setDescription] = useState(data.desc || ""); const [oldFiles, setOldFiles] = useState([]); const [newFiles, setNewFiles] = useState([]); const [loading, setLoading] = useState(false); const fetchOldFiles = async () => { try { const res = await getGaleryFileData(data.id); const allImages = res?.data?.data ?? []; const filteredImages = allImages.filter( (img: any) => img.gallery_id === data.id ); setOldFiles(filteredImages); } catch (e) { console.error("Error fetch files:", e); } }; useEffect(() => { if (open && data?.id) { fetchOldFiles(); setTitle(data.title || ""); setDescription(data.description || ""); } }, [open, data]); const handleUpload = (e: React.ChangeEvent) => { const uploaded = Array.from(e.target.files || []) as File[]; setNewFiles((prev) => [...prev, ...uploaded]); }; const removeOldFile = (id: number) => { setOldFiles((prev) => prev.filter((f) => f.id !== id)); }; const removeNewFile = (index: number) => { setNewFiles((prev) => prev.filter((_, i) => i !== index)); }; const handleSubmit = async () => { try { setLoading(true); const formMain = new FormData(); formMain.append("title", title); formMain.append("description", description); formMain.append("old_files", JSON.stringify(oldFiles.map((f) => f.id))); await updateGalery(data.id, formMain); for (const file of newFiles) { const formFile = new FormData(); formFile.append("gallery_id", String(data.id)); formFile.append("title", title); formFile.append("file", file); await updateUploadGaleryFile(data.id, formFile); } setLoading(false); onClose(); if (onUpdated) onUpdated(); } catch (err) { setLoading(false); console.error("Error update gallery:", err); alert("Gagal menyimpan perubahan galeri"); } }; return ( Edit Galeri {/* FORM */}
{/* TITLE */}
setTitle(e.target.value)} />
{/* DESCRIPTION */}