'use client' 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 { useRouter } from 'next/navigation'; import { useState } from 'react'; import { toast } from 'react-toastify'; import { useProxy } from 'valtio/utils'; import kontakDaruratKeamananState from '../../../_state/keamanan/kontak-darurat-keamanan'; function CreateKontakDarurat() { const kontakState = useProxy(kontakDaruratKeamananState) const router = useRouter(); const [fileUtama, setFileUtama] = useState(null); const [previewUtama, setPreviewUtama] = useState(null); const [fileItem, setFileItem] = useState(null); const [previewItem, setPreviewItem] = useState(null); const resetForm = () => { kontakState.create.form = { nama: "", imageId: "", kontakItems: [ { nama: "", nomorTelepon: "", imageId: "", }, ], } setPreviewUtama(null); setFileUtama(null); setPreviewItem(null); setFileItem(null); } const handleSubmit = async () => { if (!fileUtama) { return toast.warn("Pilih file gambar terlebih dahulu"); } const res = await ApiFetch.api.fileStorage.create.post({ file: fileUtama, name: fileUtama.name, }) const uploaded = res.data?.data; if (!uploaded?.id) { return toast.error("Gagal mengupload file"); } kontakState.create.form.imageId = uploaded.id; if (!fileItem) { return toast.error("Pilih file gambar terlebih dahulu"); } const resItem = await ApiFetch.api.fileStorage.create.post({ file: fileItem, name: fileItem.name, }) const uploadedItem = resItem.data?.data; if (!uploadedItem?.id) { return toast.error("Gagal mengupload file"); } kontakState.create.form.kontakItems[0].imageId = uploadedItem.id; await kontakState.create.create(); resetForm(); router.push('/admin/keamanan/kontak-darurat'); } return ( Create Kontak Darurat { kontakState.create.form.nama = val.target.value; }} label={Nama Kategori Darurat} placeholder='Masukkan nama Kategori Darurat' /> Gambar { const selectedFile = files[0]; // Ambil file pertama if (selectedFile) { setFileUtama(selectedFile); setPreviewUtama(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 */} {previewUtama && ( Preview )}
Nama Kontak} placeholder='Masukkan nama Kontak' value={kontakState.create.form.kontakItems[0].nama} onChange={(val) => { kontakState.create.form.kontakItems[0].nama = val.target.value; }} /> Nomor Telepon Kontak} placeholder='Masukkan nomor telepon Kontak' value={kontakState.create.form.kontakItems[0].nomorTelepon} onChange={(val) => { kontakState.create.form.kontakItems[0].nomorTelepon = val.target.value; }} /> Gambar { const selectedFile = files[0]; // Ambil file pertama if (selectedFile) { setFileItem(selectedFile); setPreviewItem(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 */} {previewItem && ( Preview )}
); } export default CreateKontakDarurat;