/* eslint-disable react-hooks/exhaustive-deps */ 'use client' import jumlahPendudukMiskin from '@/app/admin/(dashboard)/_state/ekonomi/jumlah-penduduk-miskin'; import colors from '@/con/colors'; import { Box, Button, Group, Loader, Paper, Stack, 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 EditJumlahPendudukMiskin() { const router = useRouter(); const params = useParams() as { id: string }; const stateJPM = useProxy(jumlahPendudukMiskin); const [isSubmitting, setIsSubmitting] = useState(false); const id = params.id; // 🔹 State lokal untuk form const [formData, setFormData] = useState({ year: 0, totalPoorPopulation: 0, }); const [originalData, setOriginalData] = useState({ year: 0, totalPoorPopulation: 0, }); // Check if form is valid const isFormValid = () => { return ( formData.year !== null && formData.year > 0 && formData.totalPoorPopulation !== null && formData.totalPoorPopulation >= 0 ); }; // 🔹 Load data awal dari backend useEffect(() => { if (!id) return; const loadData = async () => { try { await stateJPM.findUnique.load(id); const data = stateJPM.findUnique.data; if (data) { setFormData({ year: data.year || 0, totalPoorPopulation: data.totalPoorPopulation || 0, }); setOriginalData({ year: data.year || 0, totalPoorPopulation: data.totalPoorPopulation || 0, }); } } catch (error) { console.error('Gagal memuat data:', error); toast.error('Gagal memuat data jumlah penduduk miskin'); } }; loadData(); }, [id]); // 🔹 Handler input controlled const handleChange = (field: keyof typeof formData, value: string) => { setFormData((prev) => ({ ...prev, [field]: Number(value), })); }; const handleResetForm = () => { setFormData({ year: originalData.year, totalPoorPopulation: originalData.totalPoorPopulation, }); toast.info('Form dikembalikan ke data awal'); }; // 🔹 Submit form const handleSubmit = async () => { try { setIsSubmitting(true); stateJPM.update.id = id; // update global state cuma saat submit stateJPM.update.form = { ...formData }; await stateJPM.update.submit(); toast.success('Data jumlah penduduk miskin berhasil diperbarui!'); router.push('/admin/ekonomi/jumlah-penduduk-miskin'); } catch (error) { console.error('Gagal menyimpan data:', error); toast.error('Terjadi kesalahan saat menyimpan data'); } finally { setIsSubmitting(false); } }; return ( Edit Jumlah Penduduk Miskin handleChange('year', e.currentTarget.value)} /> handleChange('totalPoorPopulation', e.currentTarget.value) } /> {/* Tombol Simpan */} ); } export default EditJumlahPendudukMiskin;