import * as React from 'react'; import {useParams} from "react-router"; import {useState, useEffect} from "react"; import {useNavigate} from "react-router-dom"; import {useQuery} from "./Common"; import FilesTable from "./FilesTable"; import {Tr} from "../translate"; function FilesInFolder(props) { let params = useParams(); const query = useQuery(); const navigator = useNavigate(); const [files, setFiles] = useState([]); const [isLoading, setIsLoading] = useState(false); const offset = parseInt(query.get("o")) || 0; const [newFoldername, setNewFoldername] = useState(""); const [folderPath, setFolderPath] = useState(""); const limit = 10; function refresh() { setIsLoading(true); fetch("/api/v1/get_files_in_folder", { method: "POST", headers: {"Content-Type": "application/json"}, body: JSON.stringify({ folder_id: parseInt(params.id), offset: offset, limit: limit, }), }) .then((response) => response.json()) .then((data) => { if (data.error) { alert(data.error); } else { setFiles(data.files); setFolderPath(data.folder); if (data.files.length > 0) { setNewFoldername(data.files[0].foldername); } } }) .catch((error) => alert(error)) .finally(() => { setIsLoading(false); }); } useEffect(() => { refresh(); }, [params.id, offset]); function nextPage() { navigator(`/folders/${params.id}?o=${offset + limit}`); } function lastPage() { const offsetValue = offset - limit; if (offsetValue < 0) { return; } navigator(`/folders/${params.id}?o=${offsetValue}`); } function updateFoldername() { setIsLoading(true); fetch("/api/v1/update_foldername", { method: "POST", headers: {"Content-Type": "application/json"}, body: JSON.stringify({ id: parseInt(params.id), foldername: newFoldername, }), }) .then((response) => response.json()) .then((data) => { if (data.error) { alert(data.error); } else { refresh(); } }) .catch((error) => alert(error)) .finally(() => { setIsLoading(false); }); } function resetFoldername() { setIsLoading(true); fetch("/api/v1/reset_foldername", { method: "POST", headers: {"Content-Type": "application/json"}, body: JSON.stringify({ id: parseInt(params.id), }), }) .then((response) => response.json()) .then((data) => { if (data.error) { alert(data.error); } else { refresh(); } }) .catch((error) => alert(error)) .finally(() => { setIsLoading(false); }); } return (

{Tr("Files in Folder")}

{folderPath}
setNewFoldername(e.target.value)} />
); } export default FilesInFolder;