From 87ac0cecb7042160ab02aefce385ef26e1e2ef0d Mon Sep 17 00:00:00 2001 From: heimoshuiyu Date: Sat, 11 Dec 2021 00:10:28 +0800 Subject: [PATCH] Add: FilesInFolder page --- web/src/App.js | 3 +- web/src/component/FilesInFolder.js | 60 ++++++++++++++++++++++++++++++ web/src/component/SearchFiles.js | 43 +++++++-------------- web/src/component/SearchFolders.js | 26 ++----------- 4 files changed, 78 insertions(+), 54 deletions(-) create mode 100644 web/src/component/FilesInFolder.js diff --git a/web/src/App.js b/web/src/App.js index ca6839d..4acdb9e 100644 --- a/web/src/App.js +++ b/web/src/App.js @@ -9,6 +9,7 @@ import "./App.css"; import GetRandomFiles from "./component/GetRandomFiles"; import SearchFiles from "./component/SearchFiles"; import SearchFolders from "./component/SearchFolders"; +import FilesInFolder from "./component/FilesInFolder"; import Manage from "./component/Manage"; import Share from "./component/Share"; import AudioPlayer from "./component/AudioPlayer"; @@ -56,7 +57,7 @@ function App() { /> } + element={} /> } /> { + 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) => { + setFiles(data.files ? data.files : []); + }) + .catch((error) => alert(error)) + .finally(() => { + setIsLoading(false); + }); + }, [params.id, offset]); + + function nextPage() { + setOffset(offset + limit); + } + + function lastPage() { + const offsetValue = offset - limit; + if (offsetValue < 0) { + return; + } + setOffset(offsetValue); + } + + return ( +
+

Files in Folder

+
+ + + +
+ +
+ ); +} + +export default FilesInFolder; diff --git a/web/src/component/SearchFiles.js b/web/src/component/SearchFiles.js index 361f22a..ff25333 100644 --- a/web/src/component/SearchFiles.js +++ b/web/src/component/SearchFiles.js @@ -9,25 +9,14 @@ function SearchFiles(props) { const limit = 10; function searchFiles() { - if ( - filename === "" && - (props.folder === undefined || props.folder.id === undefined) - ) { - return; - } - const folder = props.folder ? props.folder : {}; - const url = folder.id - ? "/api/v1/get_files_in_folder" - : "/api/v1/search_files"; setIsLoading(true); - fetch(url, { + fetch("/api/v1/search_files", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ filename: filename, limit: limit, offset: offset, - folder_id: folder.id, }), }) .then((response) => response.json()) @@ -36,7 +25,7 @@ function SearchFiles(props) { setFiles(files); }) .catch((error) => { - alert("get_files_in_folder error: " + error); + alert("search_files error: " + error); }) .finally(() => { setIsLoading(false); @@ -55,35 +44,29 @@ function SearchFiles(props) { setOffset(offsetValue); } - useEffect(() => searchFiles(), [offset, props.folder]); // eslint-disable-line react-hooks/exhaustive-deps + useEffect(() => searchFiles(), [offset]); // eslint-disable-line react-hooks/exhaustive-deps return (

Search Files

- {!props.folder && ( - setFilename(event.target.value)} - onKeyDown={(event) => { - if (event.key === "Enter") { - searchFiles(); - } - }} - type="text" - placeholder="Enter filename" - /> - )} + setFilename(event.target.value)} + onKeyDown={(event) => { + if (event.key === "Enter") { + searchFiles(); + } + }} + type="text" + placeholder="Enter filename" + /> - {props.folder && props.folder.foldername && ( - - )}
- - +
); }