import NavbarAdmin from "../Layout/NavbarAdmin"; import SidebarAdmin from "../Layout/SidebarAdmin"; import { useEffect, useState } from "react"; import { useNavigate } from "react-router-dom"; type Feedback = { id: number; nama: string; image: string; created_at: string; }; const ListFeedback = () => { const navigate = useNavigate(); const [feedbacks, setFeedbacks] = useState([]); useEffect(() => { const fetchFeedbacks = async () => { try { const response = await fetch( `${import.meta.env.VITE_API_BASE_URL}/feedback-api/get` ); const result = await response.json(); if (response.ok) { setFeedbacks(result.data); } else { console.error("Gagal mengambil data feedback:", result.message); } } catch (error) { console.error("Terjadi kesalahan:", error); } }; fetchFeedbacks(); }, []); const handleDelete = async (id: number) => { const confirmDelete = confirm( "Apakah Anda yakin ingin menghapus feedback ini?" ); if (!confirmDelete) return; const token = document.cookie .split("; ") .find((row) => row.startsWith("token=")) ?.split("=")[1]; if (!token) { alert("Token tidak ditemukan. Silakan login ulang."); return; } try { const response = await fetch( `${import.meta.env.VITE_API_BASE_URL}/feedback-api/delete/${id}`, { method: "DELETE", headers: { Authorization: `Bearer ${token}`, }, } ); const result = await response.json(); if (response.ok) { alert("Feedback berhasil dihapus!"); setFeedbacks((prev) => prev.filter((feedback) => feedback.id !== id)); } else { alert(result.message || "Gagal menghapus feedback."); } } catch (error) { console.error("Gagal menghapus:", error); alert("Terjadi kesalahan saat menghapus feedback."); } }; return (

Feedback

{feedbacks.map((feedback) => ( ))}
Nama Foto Tanggal Unggah Aksi
{feedback.nama} {feedback.nama} {new Date(feedback.created_at).toLocaleDateString()} {/* Tombol View */} {/* Tombol Edit */} {/* Tombol Hapus */}
{feedbacks.length === 0 && (

Belum ada data feedback.

)}
); }; export default ListFeedback;