import { useEffect, useRef, useState } from "react"; import FilledButton from "../../md-components/FilledButton"; import Icon from "../../md-components/Icon"; import IconButton from "../../md-components/IconButton"; import axios from "axios"; import { toast } from "react-toastify"; function UploadBook() { const fileSelectorRef = useRef(); const [uploadedFiles, setUploadedFiles] = useState([]); const [uploadStatuses, setUploadStatuses] = useState([]); const [isDragging, setIsDragging] = useState(false); const [uploading, setUploading] = useState(false); const handleFileChange = (e) => { const files = Array.from(e.target.files); setUploadedFiles((prev) => [...prev, ...files]); }; const handleDrop = (e) => { e.preventDefault(); setIsDragging(false); const droppedFiles = Array.from(e.dataTransfer.files); setUploadedFiles((prev) => [...prev, ...droppedFiles]); }; const handleDragOver = (e) => { e.preventDefault(); setIsDragging(true); }; const handleDragLeave = () => { setIsDragging(false); }; useEffect( () => setUploadStatuses(uploadedFiles.map(() => 0)), [uploadedFiles] ); const handleUpload = async () => { setUploading(true); console.log(uploading); if (uploadedFiles.length === 0) { alert("Нечего грузить, капитан."); return; } for (const [i, file] of uploadedFiles.entries()) { const formData = new FormData(); formData.append("files", file); try { console.log(uploadedFiles); const res = await axios.post("/book/upload", formData); console.log(res); if (res.status === 200) { // toast("Залили! 🧃"); setUploadStatuses((prev) => ({ ...prev, [i]: 1 })); console.log(uploadStatuses); } else { toast("Ошибка на сервере, go дебажить."); } } catch (err) { console.error("Ошибка:", err); toast("Шатался интернет или сервер умер."); } } setUploading(false); setUploadedFiles([]); }; if (!window.onLine) { return Недоступно оффлайн; } return (