'use client' /* eslint-disable react-hooks/exhaustive-deps */ import EditEditor from '@/app/admin/(dashboard)/_com/editEditor'; import desaDigitalState from '@/app/admin/(dashboard)/_state/inovasi/desa-digital'; import colors from '@/con/colors'; import ApiFetch from '@/lib/api-fetch'; import { Box, Button, Group, Image, Paper, Stack, Text, TextInput, Title } from '@mantine/core'; import { Dropzone } from '@mantine/dropzone'; import { IconArrowBack, IconPhoto, IconUpload, IconX } 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 EditPenghargaan() { const stateDesaDigital = useProxy(desaDigitalState) const router = useRouter() const params = useParams() const [previewImage, setPreviewImage] = useState(null) const [file, setFile] = useState(null) const [formData, setFormData] = useState({ name: stateDesaDigital.findUnique.data?.name || '', deskripsi: stateDesaDigital.findUnique.data?.deskripsi || '', imageId: stateDesaDigital.findUnique.data?.imageId || '', }) useEffect(() => { const loadPenghargaan = async () => { const id = params?.id as string; if (!id) return; try { const data = await stateDesaDigital.edit.load(id); if (data) { setFormData({ name: data.name || '', deskripsi: data.deskripsi || '', imageId: data.imageId || '', }); if (data?.image?.link) { setPreviewImage(data.image.link); } } } catch (error) { console.error("Error loading desa digital smart village:", error); toast.error("Gagal memuat data desa digital smart village"); } }; loadPenghargaan(); }, [params?.id]); const handleSubmit = async () => { try { stateDesaDigital.edit.form = { ...stateDesaDigital.edit.form, name: formData.name, deskripsi: 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"); } stateDesaDigital.edit.form.imageId = uploaded.id; } await stateDesaDigital.edit.update(); toast.success("Desa digital smart village berhasil diperbarui!"); router.push("/admin/inovasi/desa-digital-smart-village"); } catch (error) { console.error("Error updating desa digital smart village:", error); toast.error("Terjadi kesalahan saat memperbarui desa digital smart village"); } } return ( Edit Desa Digital Smart Village setFormData({ ...formData, name: e.target.value })} label={Judul} placeholder="masukkan judul" /> Gambar { const selectedFile = files[0]; // Ambil file pertama if (selectedFile) { setFile(selectedFile); setPreviewImage(URL.createObjectURL(selectedFile)); // Buat preview } }} onReject={() => toast.error('File tidak valid.')} maxSize={5 * 1024 ** 2} // Maks 5MB accept={{ 'image/*': [] }} >
Drag gambar ke sini atau klik untuk pilih file Maksimal 5MB dan harus format gambar
{/* Tampilkan preview kalau ada */} {previewImage && ( Preview )}
Deskripsi { setFormData((prev) => ({ ...prev, deskripsi: htmlContent })); stateDesaDigital.edit.form.deskripsi = htmlContent; }} />
); } export default EditPenghargaan;