From c821d9795d791add54d42c833e6dfa22ca03b2f6 Mon Sep 17 00:00:00 2001 From: "[Valentino Heman Budiarto]" <[hemanvalentino@gmail.com]> Date: Fri, 29 May 2026 20:26:41 +0700 Subject: [PATCH] fetch --- frontend/app/dashboard/page.tsx | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/frontend/app/dashboard/page.tsx b/frontend/app/dashboard/page.tsx index a41a59f..ab3f99a 100644 --- a/frontend/app/dashboard/page.tsx +++ b/frontend/app/dashboard/page.tsx @@ -20,6 +20,7 @@ export default function Dashboard() { const [user, setUser] = useState(null); const [rooms, setRooms] = useState([]); const [loading, setLoading] = useState(true); + const [apiError, setApiError] = useState(""); // State baru untuk menangkap pesan error API // --- STATE UNTUK MODAL BOOKING --- const [isModalOpen, setIsModalOpen] = useState(false); @@ -45,13 +46,15 @@ export default function Dashboard() { const fetchRooms = async (token: string) => { try { - const response = await axios.get("http://172.17.110.6:8080/api/rooms", { + // UBAH IP KE SERVER KAMPUS (172.17.172.17) + const response = await axios.get("http://172.17.172.17:8080/api/rooms", { headers: { Authorization: `Bearer ${token}` }, }); setRooms(response.data.data); - } catch (error) { - console.error("Error:", error); - router.push("/login"); + } catch (error: any) { + console.error("Error fetching rooms:", error); + // Jangan langsung tendang ke login, tampilkan pesan errornya di layar + setApiError(error.response?.data?.error || "Gagal memuat data ruangan dari server."); } finally { setLoading(false); } @@ -61,7 +64,6 @@ export default function Dashboard() { const openBookingModal = (room: Room) => { setSelectedRoom(room); setIsModalOpen(true); - // Reset form setStartTime(""); setEndTime(""); setPurpose(""); @@ -78,8 +80,9 @@ export default function Dashboard() { const startISO = new Date(startTime).toISOString(); const endISO = new Date(endTime).toISOString(); + // UBAH IP KE SERVER KAMPUS (172.17.172.17) await axios.post( - "http://172.17.110.6:8080/api/bookings", + "http://172.17.172.17:8080/api/bookings", { room_id: selectedRoom?.room_id, start_time: startISO, @@ -92,7 +95,8 @@ export default function Dashboard() { ); alert("Booking Berhasil Diajukan! Menunggu persetujuan."); - setIsModalOpen(false); // Tutup modal + setIsModalOpen(false); + fetchRooms(token!); // Refresh data ruangan setelah booking } catch (error: any) { const errorMsg = error.response?.data?.error || "Gagal melakukan booking."; @@ -102,7 +106,7 @@ export default function Dashboard() { } }; - if (loading) return
Memuat data...
; + if (loading) return
Memuat data kelas S-CLASS...
; return (
@@ -119,9 +123,15 @@ export default function Dashboard() {
+ {/* Jika terjadi error koneksi ke Backend */} + {apiError && ( +
+ Terjadi Kesalahan: {apiError} +
+ )} + {/* Grid Daftar Kelas */}
- {/* TAMBAHKAN PENGURUTAN ABJAD DI SINI */} {[...rooms] .sort((a, b) => a.name.localeCompare(b.name)) .map((room) => ( @@ -161,7 +171,6 @@ export default function Dashboard() {
- {/* Header Modal */}

Form Peminjaman

- {/* Body Form */}

Ruangan: {selectedRoom.name}