import NavbarAdmin from "../Layout/NavbarAdmin"; import SidebarAdmin from "../Layout/SidebarAdmin"; import { useNavigate, useParams } from "react-router-dom"; import { useEffect, useState } from "react"; const EditPartnerships = () => { const navigate = useNavigate(); const { id } = useParams(); const [namaPartner, setNamaPartner] = useState(""); const [thumbnail, setThumbnail] = useState(null); const [previewUrl, setPreviewUrl] = useState(null); const [error, setError] = useState(""); const token = document.cookie .split("; ") .find((row) => row.startsWith("token=")) ?.split("=")[1]; useEffect(() => { const fetchPartnershipData = async () => { if (!id) { setError("ID tidak ditemukan"); return; } try { const response = await fetch( `${import.meta.env.VITE_API_BASE_URL}/partnership-api/get/${id}` ); const result = await response.json(); console.log("GET result:", result.data); if (response.ok) { setNamaPartner(result.data[0].nama_partner); setPreviewUrl( `${import.meta.env.VITE_API_BASE_URL}` + result.data[0].image_path ); } else { setError(result.message || "Gagal memuat data partnership."); } } catch (err) { setError("Terjadi kesalahan saat mengambil data."); } }; fetchPartnershipData(); }, [id]); const handleImageChange = (e: React.ChangeEvent) => { const file = e.target.files?.[0]; if (file) { const validTypes = ["image/jpeg", "image/png", "image/webp"]; if (!validTypes.includes(file.type)) { setError("Format file tidak didukung."); return; } setThumbnail(file); setPreviewUrl(URL.createObjectURL(file)); setError(""); } }; const handleSubmit = async (e?: React.FormEvent | React.MouseEvent) => { e?.preventDefault(); if (!namaPartner) { setError("Nama partnership harus diisi."); return; } if (!token || !id) { setError("Token atau ID tidak ditemukan."); return; } const formData = new FormData(); formData.append("nama_partner", namaPartner); if (thumbnail) formData.append("image", thumbnail); try { const response = await fetch( `${import.meta.env.VITE_API_BASE_URL}/partnership-api/update/${id}`, { method: "PATCH", headers: { Authorization: `Bearer ${token}`, }, body: formData, } ); const result = await response.json(); if (response.ok) { alert("Partnership berhasil diperbarui!"); navigate("/partnership-admin"); } else { setError(result.message || "Gagal memperbarui partnership."); } } catch (err) { setError("Terjadi kesalahan saat memperbarui data."); } }; const handleDelete = async () => { if (!token || !id) { setError("Token atau ID tidak ditemukan."); return; } const confirmDelete = confirm( "Apakah kamu yakin ingin menghapus partnership ini?" ); if (!confirmDelete) return; try { const response = await fetch( `${import.meta.env.VITE_API_BASE_URL}/partnership-api/delete/${id}`, { method: "DELETE", headers: { Authorization: `Bearer ${token}`, }, } ); const result = await response.json(); if (response.ok) { alert("Partnership berhasil dihapus!"); navigate("/partnership-admin"); } else { setError(result.message || "Gagal menghapus partnership."); } } catch (err) { setError("Terjadi kesalahan saat menghapus data."); } }; return (

Edit Partnership

Nama

setNamaPartner(e.target.value)} placeholder="Nama Partnership" className="border-2 px-[15px] py-[10px] border-[#A9B5C0] rounded-xl w-[600px]" />

Thumbnail

*file harus berformat .jpg .png .webp dengan resolusi maksimal 1024 x 500

Preview

{previewUrl && ( Preview )}
{error &&

{error}

}
); }; export default EditPartnerships;