/* eslint-disable react-hooks/exhaustive-deps */ 'use client' import EditEditor from '@/app/admin/(dashboard)/_com/editEditor'; import beasiswaDesaState from '@/app/admin/(dashboard)/_state/pendidikan/beasiswa-desa'; import colors from '@/con/colors'; import { Box, Button, Group, Loader, Paper, Stack, Text, TextInput, Title } from '@mantine/core'; import { IconArrowBack } from '@tabler/icons-react'; import { useParams, useRouter } from 'next/navigation'; import { useEffect, useState } from 'react'; import { toast } from 'react-toastify'; import { useProxy } from 'valtio/utils'; function EditProgramKreatifDesa() { const state = useProxy(beasiswaDesaState.keunggulanProgram) const params = useParams() const router = useRouter(); const [isSubmitting, setIsSubmitting] = useState(false); const [formData, setFormData] = useState({ judul: '', deskripsi: '', }) const [originalData, setOriginalData] = useState({ judul: '', deskripsi: '', }) // Helper function to check if HTML content is empty const isHtmlEmpty = (html: string) => { // Remove all HTML tags and check if there's any text content const textContent = html.replace(/<[^>]*>/g, '').trim(); return textContent === ''; }; // Check if form is valid const isFormValid = () => { return ( formData.judul?.trim() !== '' && !isHtmlEmpty(formData.deskripsi) ); }; useEffect(() => { const loadProgramKreatif = async () => { const id = params?.id as string; if (!id) return; try { const data = await state.update.load(id); if (data) { // ⬇️ FIX PENTING: tambahkan ini state.update.id = id; state.update.form = { judul: data.judul, deskripsi: data.deskripsi, }; setFormData({ judul: data.judul, deskripsi: data.deskripsi, }); setOriginalData({ judul: data.judul, deskripsi: data.deskripsi, }); } } catch (error) { console.error("Error loading pengelolaan sampah:", error); toast.error("Gagal memuat data pengelolaan sampah"); } } loadProgramKreatif(); }, [params?.id]); const handleResetForm = () => { const resetData = { judul: originalData.judul, deskripsi: originalData.deskripsi, }; setFormData(resetData); // ⬇️ tambahkan sinkronisasi ke state global state.update.form = { ...resetData }; toast.info("Form dikembalikan ke data awal"); }; const handleSubmit = async () => { try { setIsSubmitting(true); state.update.form = { ...state.update.form, judul: formData.judul.trim(), deskripsi: formData.deskripsi.trim(), }; await state.update.update(); toast.success('Data keunggulan program berhasil diperbarui!'); router.push("/admin/pendidikan/beasiswa-desa/keunggulan-program"); } catch (error) { console.error("Error updating keunggulan program:", error); toast.error(error instanceof Error ? error.message : "Gagal memperbarui data keunggulan program"); } finally { setIsSubmitting(false); } } return ( Edit Keunggulan Program { const value = e.target.value; setFormData(prev => ({ ...prev, judul: value })); state.update.form.judul = value; }} required /> Deskripsi { state.update.form.deskripsi = htmlContent; }} /> {/* Tombol Simpan */} ); } export default EditProgramKreatifDesa;