/* 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, Paper, Stack, TextInput, Title, Group, Tooltip, } from '@mantine/core'; import { IconArrowBack } from '@tabler/icons-react'; import { useParams, useRouter } from 'next/navigation'; import { useEffect, useState } from 'react'; import { useProxy } from 'valtio/utils'; import { toast } from 'react-toastify'; function EditJumlahPendudukMiskin() { const router = useRouter(); const params = useParams() as { id: string }; const stateJPM = useProxy(jumlahPendudukMiskin); const id = params.id; // 🔹 State lokal untuk form const [formData, setFormData] = useState({ year: 0, 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, }); } } 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), })); }; // 🔹 Submit form const handleSubmit = async () => { try { 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'); } }; return ( Edit Jumlah Penduduk Miskin handleChange('year', e.currentTarget.value)} /> handleChange('totalPoorPopulation', e.currentTarget.value) } /> ); } export default EditJumlahPendudukMiskin;