/* eslint-disable react-hooks/exhaustive-deps */ 'use client' import PendapatanAsliDesa from '@/app/admin/(dashboard)/_state/ekonomi/PADesa'; 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 EditPembiayaan() { const pembiayaanState = useProxy(PendapatanAsliDesa.pembiayaan); const router = useRouter(); const params = useParams(); const [isSubmitting, setIsSubmitting] = useState(false); const [formData, setFormData] = useState({ name: '', value: '', }); const [originalData, setOriginalData] = useState({ name: '', value: '', }); const formatRupiah = (value: number | string) => { const number = typeof value === 'number' ? value : Number(value.toString().replace(/\D/g, '')) || 0; return new Intl.NumberFormat('id-ID', { style: 'currency', currency: 'IDR', minimumFractionDigits: 0, }).format(number); }; const unformatRupiah = (value: string) => { return Number(value.replace(/\D/g, '')) || 0; }; useEffect(() => { const loadPembiayaan = async () => { const id = params?.id as string; if (!id) return; try { const data = await pembiayaanState.update.load(id); if (data) { setFormData({ name: data.name || '', value: String(data.value || ''), }); setOriginalData({ name: data.name || '', value: String(data.value || ''), }); } } catch (error) { console.error('Error loading pembiayaan:', error); toast.error('Gagal memuat data pembiayaan'); } }; loadPembiayaan(); }, [params?.id]); const handleResetForm = () => { setFormData({ name: originalData.name, value: originalData.value, }); toast.info('Form dikembalikan ke data awal'); }; const handleSubmit = async () => { try { setIsSubmitting(true); pembiayaanState.update.form = { ...pembiayaanState.update.form, name: formData.name, value: unformatRupiah(formData.value), }; await pembiayaanState.update.update(); toast.success('Jenis Pembiayaan berhasil diperbarui!'); router.push('/admin/ekonomi/PADesa-pendapatan-asli-desa/pembiayaan'); } catch (error) { console.error('Error updating jenis pembiayaan:', error); toast.error('Terjadi kesalahan saat memperbarui jenis pembiayaan'); } finally { setIsSubmitting(false); } }; return ( {/* Header */} Edit Jenis Pembiayaan {/* Card Form */} setFormData((prev) => ({ ...prev, name: e.target.value })) } required /> { const raw = e.currentTarget.value; const cleanValue = unformatRupiah(raw); setFormData((prev) => ({ ...prev, value: String(cleanValue) })); }} required /> {/* Tombol Simpan */} ); } export default EditPembiayaan;