import React, {useContext} from "react";
import FileBrowser from 'react-keyed-file-browser';
import {
CardContent,
CardDescription,
CardHeader,
CardMeta,
Confirm,
Divider,
Dropdown,
Image,
PlaceholderLine,
TableCell,
TableHeaderCell,
} from "semantic-ui-react";
import 'react-keyed-file-browser/dist/react-keyed-file-browser.css';
import {deleteFile, refreshDirectoryFiles, refreshFiles} from "../api";
import {
CardGroupCentered,
ExternalCardLink,
FileIcon,
humanFileSize,
isEmpty,
mimetypeColor,
PageContainer,
Paginator,
textEllipsis,
epochToDateString,
useTitle
} from "./Common";
import {useBrowseFiles, useQuery, useSearchFiles} from "../hooks/customHooks";
import {Route, Routes} from "react-router-dom";
import {CardPlacholder} from "./Placeholder";
import {ArchiveCard, ArchiveRowCells} from "./Archive";
import Grid from "semantic-ui-react/dist/commonjs/collections/Grid";
import {ThemeContext} from "../contexts/contexts";
import {Button, Card, CardIcon, Header, Icon, Placeholder, Segment} from "./Theme";
import {SelectableTable} from "./Tables";
import {VideoCard, VideoRowCells} from "./Videos";
const icons = {
File: ,
Folder: ,
FolderOpen: ,
Image: ,
PDF: ,
};
export function Files() {
useTitle('Files');
const {t} = useContext(ThemeContext);
const {browseFiles, setOpenFolders, fetchFiles} = useBrowseFiles();
const [deleteOpen, setDeleteOpen] = React.useState(false);
const [selectedFile, setSelectedFile] = React.useState(null);
const [selectedDirectory, setSelectedDirectory] = React.useState(null);
const handleFolderChange = async (file, browserProps) => {
let openFolders = Object.keys(browserProps.openFolders);
setOpenFolders(openFolders);
}
const onSelect = async (file) => {
// A user can only select one file or one directory.
if (file.key.endsWith('/')) {
setSelectedFile(null);
setSelectedDirectory(file);
} else {
setSelectedDirectory(null);
setSelectedFile(file);
}
}
const onDeleteFile = async () => {
await deleteFile(selectedFile.key);
await fetchFiles();
}
const openDelete = () => {
setDeleteOpen(true);
}
const closeDelete = () => {
setDeleteOpen(false);
}
const clearSelection = async (e) => {
e.preventDefault();
setOpenFolders(null);
setSelectedDirectory(null);
setSelectedFile(null);
await fetchFiles();
}
let clearButton = ;
let buttons;
if (selectedFile) {
buttons = <>
>;
} else if (selectedDirectory) {
buttons = <>
>;
} else {
buttons = ;
}
return <>
{clearButton}
{buttons}
<>>} // Hide the preview that the 3rd party provided.
/>
>
}
function ImageCard({file}) {
const {s} = useContext(ThemeContext);
const url = `/media/${encodeURIComponent(file.path)}`;
let poster = ;
if (file.size && file.size < 50000000) {
// Image is less than 5mb, use it.
poster = ;
}
return
{poster}
}
export function FileCards({files}) {
if (!isEmpty(files)) {
return
{files.map(i => )}
} else if (files && files.length === 0) {
return No files found.
} else {
return
}
}
function ImageRowCells({file}) {
const url = `/media/${encodeURIComponent(file.path)}`;
let poster = ;
if (file.size && file.size < 50000000) {
// Image is less than 5mb, use it.
poster = ;
}
// Fragment for SelectableRow
return (