/* eslint-disable react-hooks/exhaustive-deps */ 'use client' import EditEditor from '@/app/admin/(dashboard)/_com/editEditor'; import infoWabahPenyakit from '@/app/admin/(dashboard)/_state/kesehatan/info-wabah-penyakit/infoWabahPenyakit'; import colors from '@/con/colors'; import ApiFetch from '@/lib/api-fetch'; import { Box, Button, Center, FileInput, Image, Paper, Stack, Text, TextInput, Title } from '@mantine/core'; import { IconArrowBack, IconImageInPicture } 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 EditInfoWabahPenyakit() { const infoWabahPenyakitState = useProxy(infoWabahPenyakit) const router = useRouter(); const params = useParams() const [previewImage, setPreviewImage] = useState(null); const [file, setFile] = useState(null); const [formData, setFormData] = useState({ name: infoWabahPenyakitState.edit.form.name || '', deskripsiSingkat: infoWabahPenyakitState.edit.form.deskripsiSingkat || '', deskripsi: infoWabahPenyakitState.edit.form.deskripsiLengkap || '', imageId: infoWabahPenyakitState.edit.form.imageId || '', }) useEffect(() => { const loadInfoWabahPenyakit = async () => { const id = params?.id as string; if (!id) return; try { const data = await infoWabahPenyakitState.edit.load(id); if (data) { setFormData({ name: data.name || '', deskripsiSingkat: data.deskripsiSingkat || '', deskripsi: data.deskripsiLengkap || '', imageId: data.imageId || '', }); if (data?.image?.link) { setPreviewImage(data.image.link); } } } catch (error) { console.error("Error loading program kesehatan:", error); toast.error("Gagal memuat data program kesehatan"); } }; loadInfoWabahPenyakit(); }, [params?.id]); const handleSubmit = async () => { try { infoWabahPenyakitState.edit.form = { ...infoWabahPenyakitState.edit.form, name: formData.name, deskripsiSingkat: formData.deskripsiSingkat, deskripsiLengkap: formData.deskripsi, imageId: formData.imageId, }; if (file) { const res = await ApiFetch.api.fileStorage.create.post({ file, name: file.name }); const uploaded = res.data?.data; if (!uploaded?.id) { return toast.error("Gagal upload gambar"); } infoWabahPenyakitState.edit.form.imageId = uploaded.id; } await infoWabahPenyakitState.edit.update(); toast.success("Info wabah penyakit berhasil diperbarui!"); router.push("/admin/kesehatan/info-wabah-penyakit"); } catch (error) { console.error("Error updating info wabah penyakit:", error); toast.error("Gagal memuat data info wabah penyakit"); } } return ( Edit Info Wabah Penyakit setFormData({ ...formData, name: e.target.value })} label={Judul} placeholder="masukkan judul" /> setFormData({ ...formData, deskripsiSingkat: e.target.value })} label={Deskripsi Singkat} placeholder="masukkan deskripsi" /> Deskripsi setFormData({ ...formData, deskripsi: val })} /> Upload Gambar} value={file} onChange={async (e) => { if (!e) return; setFile(e); const base64 = await e.arrayBuffer().then((buf) => 'data:image/png;base64,' + Buffer.from(buf).toString('base64') ); setPreviewImage(base64); }} /> {previewImage ? ( ) : (
)}
); } export default EditInfoWabahPenyakit;