import { useState, useEffect } from "react"; import { useNavigate, useParams } from "react-router-dom"; import NavbarAdmin from "../Layout/NavbarAdmin"; import SidebarAdmin from "../Layout/SidebarAdmin"; import { useMentorDetail, useUpdateMentor } from "../hooks/useMentors"; import type { UpdateMentorPayload } from "../services/MentorServices"; const EditMentorForm = () => { const navigate = useNavigate(); const { id } = useParams<{ id: string }>(); const mentorId = id ? parseInt(id, 10) : null; const { mentor, loading: fetching, error: fetchError } = useMentorDetail(mentorId); const { updateMentor, loading: updating, error: updateError } = useUpdateMentor(); const [form, setForm] = useState({ nama_depan: "", nama_belakang: "", email: "", password: "", signature: "", professional_bio: "", }); const [profilePicture, setProfilePicture] = useState(null); const [preview, setPreview] = useState(null); // Populate form once mentor data is loaded useEffect(() => { if (mentor) { setForm({ nama_depan: mentor.nama_depan ?? "", nama_belakang: mentor.nama_belakang ?? "", email: mentor.email ?? "", password: "", signature: mentor.signature ?? "", professional_bio: mentor.professional_bio ?? "", }); if (mentor.profile_picture) { setPreview(mentor.profile_picture); } } }, [mentor]); const handleChange = ( e: React.ChangeEvent ) => { const { name, value } = e.target; setForm((prev) => ({ ...prev, [name]: value })); }; const handleFileChange = (e: React.ChangeEvent) => { const file = e.target.files?.[0] ?? null; setProfilePicture(file); if (file) { setPreview(URL.createObjectURL(file)); } }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!mentorId) return; const payload: UpdateMentorPayload = { nama_depan: form.nama_depan || undefined, nama_belakang: form.nama_belakang || undefined, email: form.email || undefined, signature: form.signature || undefined, professional_bio: form.professional_bio || undefined, ...(form.password ? { password: form.password } : {}), ...(profilePicture ? { profile_picture: profilePicture } : {}), }; const result = await updateMentor(mentorId, payload); if (result) { alert("Data mentor berhasil diperbarui!"); navigate("/mentor-admin"); } }; if (fetching) { return (

Memuat data mentor...

); } if (fetchError || !mentor) { return (

{fetchError ?? "Mentor tidak ditemukan."}

); } return (
{/* Header */}

Edit Mentor

Mengedit data: {mentor.full_name}

{updateError && (
{updateError}
)}
{/* Nama Depan */}
{/* Nama Belakang */}
{/* Email */}
{/* Password */}
{/* Signature */}
{/* Professional Bio */}