[FEATURE] Fixed file manager and adjusted starting display (#5)
Co-authored-by: Dunemask <dunemask@gmail.com> Reviewed-on: https://gitea.dunemask.dev/elysium/minecluster/pulls/5
This commit is contained in:
parent
4f19cf19d9
commit
fb57c03ba7
9 changed files with 63 additions and 45 deletions
|
@ -38,26 +38,33 @@ export default function MineclusterFiles(props) {
|
|||
const [dirStack, setDirStack] = useState(["."]);
|
||||
const [files, setFiles] = useState([]);
|
||||
|
||||
const updateFiles = () =>
|
||||
getServerFiles(serverName, dirStack.join("/")).then((f) =>
|
||||
setFiles(f ?? []),
|
||||
);
|
||||
const updateFiles = () => {
|
||||
const dir = dirStack.join("/");
|
||||
getServerFiles(serverName, dir).then((f) => {
|
||||
const files = f.map((fi) => ({ ...fi, id: `${dir}/${fi.name}` }));
|
||||
setFiles(files ?? []);
|
||||
});
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
updateFiles();
|
||||
}, [dirStack]);
|
||||
|
||||
const getFolderChain = () => {
|
||||
if (dirStack.length === 1) return [{ id: "home", name: "/", isDir: true }];
|
||||
return dirStack.map((d, i) => ({ id: `${d}-${i}`, name: d, isDir: true }));
|
||||
if (dirStack.length === 1) return [{ id: "./", name: "Home", isDir: true }];
|
||||
return dirStack.map((d, i) => ({
|
||||
id: `${dirStack.slice(0, i + 1).join("/")}`,
|
||||
name: i === 0 ? "Home" : d,
|
||||
isDir: true,
|
||||
}));
|
||||
};
|
||||
|
||||
const openParentFolder = () => setDirStack(dirStack.slice(0, -1));
|
||||
|
||||
function openFolder(payload) {
|
||||
const { targetFile: file } = payload;
|
||||
if (!file || !file.isDir) return;
|
||||
setDirStack([...dirStack, file.name]);
|
||||
if (file && file.isDir) return setDirStack(file.id.split("/"));
|
||||
if (file && !file.isDir) return downloadFiles([file]);
|
||||
}
|
||||
|
||||
function createFolder() {
|
||||
|
@ -101,13 +108,12 @@ export default function MineclusterFiles(props) {
|
|||
getServerItem(serverName, f.name, [...dirStack, f.name].join("/")),
|
||||
),
|
||||
)
|
||||
.then(() => console.log("Done"))
|
||||
.then(() => console.log("Done downloading files!"))
|
||||
.catch((e) => console.error("Error Downloading files!", e));
|
||||
}
|
||||
|
||||
function fileClick(chonkyEvent) {
|
||||
const { id: clickEvent, payload } = chonkyEvent;
|
||||
console.log(chonkyEvent);
|
||||
if (clickEvent === "open_parent_folder") return openParentFolder();
|
||||
if (clickEvent === "create_folder") return createFolder();
|
||||
if (clickEvent === "upload_files") return inputRef.current.click();
|
||||
|
@ -115,7 +121,7 @@ export default function MineclusterFiles(props) {
|
|||
return downloadFiles(chonkyEvent.state.selectedFilesForAction);
|
||||
if (clickEvent === "delete_files")
|
||||
return deleteItems(chonkyEvent.state.selectedFilesForAction);
|
||||
if (clickEvent !== "open_files") return console.log(clickEvent);
|
||||
if (clickEvent !== "open_files") return; // console.log(clickEvent);
|
||||
openFolder(payload);
|
||||
}
|
||||
return (
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue