"use client"; import { LayoutDrawer, LayoutNavbarNew, WARNA } from "@/module/_global"; import { Box, Button, Flex, Group, rem, SimpleGrid, Stack, Text, } from "@mantine/core"; import React, { useRef, useState } from "react"; import { useParams, useRouter } from "next/navigation"; import toast from "react-hot-toast"; import { IoIosArrowDropright } from "react-icons/io"; import { Dropzone } from "@mantine/dropzone"; import _ from "lodash"; import { IListFileTask } from "../lib/type_task"; import ResultsFile from "./results_file"; import { FaTrash } from "react-icons/fa6"; import { funAddFileTask, funCekNamFileUploadTask } from "../lib/api_task"; import LayoutModal from "@/module/_global/layout/layout_modal"; export default function AddFileDetailTask() { const router = useRouter() const [openModal, setOpenModal] = useState(false) const [fileForm, setFileForm] = useState([]) const [listFile, setListFile] = useState([]) const param = useParams<{ id: string, detail: string }>() const [indexDelFile, setIndexDelFile] = useState(0) const [openDrawerFile, setOpenDrawerFile] = useState(false) const openRef = useRef<() => void>(null) function deleteFile(index: number) { setListFile([...listFile.filter((val, i) => i !== index)]) setFileForm([...fileForm.filter((val, i) => i !== index)]) setOpenDrawerFile(false) } async function cekFileName(data: any) { try { const fd = new FormData(); fd.append(`file`, data); const res = await funCekNamFileUploadTask(param.detail, fd) if (res.success) { setFileForm([...fileForm, data]) setListFile([...listFile, { name: data.name, extension: data.type.split("/")[1] }]) } else { toast.error(res.message) } } catch (error) { console.log(error) toast.error("Gagal menambahkan file, coba lagi nanti") } } async function onSubmit() { try { const fd = new FormData(); for (let i = 0; i < fileForm.length; i++) { fd.append(`file${i}`, fileForm[i]); } const response = await funAddFileTask(param.detail, fd) if (response.success) { toast.success(response.message) setFileForm([]) setListFile([]) router.push(`/division/${param.id}/task/${param.detail}`) } else { toast.error(response.message) } } catch (error) { console.log(error) toast.error("Gagal menambahkan tugas divisi, coba lagi nanti"); } } return ( { if (!files || _.isEmpty(files)) return toast.error('Tidak ada file yang dipilih') cekFileName(files[0]) }} activateOnClick={false} maxSize={3 * 1024 ** 2} accept={['text/csv', 'image/png', 'image/jpeg', 'image/heic', 'application/pdf']} onReject={(files) => { return toast.error('File yang diizinkan: .csv, .png, .jpg, .heic, .pdf dengan ukuran maksimal 3 MB') }} > openRef.current?.()} > Upload File { listFile.length > 0 && File { listFile.map((v, i) => { return ( { setIndexDelFile(i) setOpenDrawerFile(true) }}> ) }) } } setOpenDrawerFile(false)} title={""} > deleteFile(indexDelFile)}> Hapus File setOpenModal(false)} description="Apakah Anda yakin ingin menambahkan file?" onYes={(val) => { if (val) { onSubmit() } setOpenModal(false) }} /> ); }