import React, {useContext} from "react"; import { Button as SButton, CardContent, CardDescription, CardHeader, CardMeta, Container, Dropdown, Header as SHeader, Image, Modal, PlaceholderLine, TableCell, TableHeaderCell, } from "semantic-ui-react"; import { CardGroupCentered, CardLink, CardPosterLink, cardTitleWrapper, ExternalCardLink, FileIcon, humanFileSize, isoDatetimeToString, mimetypeColor, PageContainer, Paginator, textEllipsis, useTitle } from "./Common"; import {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 {StatusContext, ThemeContext} from "../contexts/contexts"; import {Button, Card, CardIcon, Icon, Placeholder, Segment} from "./Theme"; import {SelectableTable} from "./Tables"; import {VideoCard, VideoRowCells} from "./Videos"; import _ from 'lodash'; import {FileBrowser} from "./FileBrowser"; import {refreshDirectoryFiles, refreshFiles} from "../api"; import {useSubscribeEventName} from "../Events"; export function FilesPage() { useTitle('Files'); return ; } function EbookCard({file}) { const {s} = useContext(ThemeContext); let {ebook, suffix} = file; const downloadUrl = `/download/${encodeURIComponent(file.path)}`; const isEpub = file['mimetype'].startsWith('application/epub'); const viewerUrl = isEpub ? `/epub.html?url=${downloadUrl}` : null; let cover = ; if (ebook && ebook.cover_path) { const coverSrc = `/media/${encodeURIComponent(ebook.cover_path)}`; cover = ; } suffix = suffix ? _.trimStart(suffix, '.').toUpperCase() : null; const downloadButton = ; const detailsButton = ; } export function DirectoryRefreshButton({directory}) { const {status} = useContext(StatusContext); const refreshing = status && status['flags'] && status['flags'].indexOf('refreshing') >= 0; const refreshingDirectory = status && status['flags'] && status['flags'].indexOf('refreshing_directory') >= 0; const [loading, setLoading] = React.useState(false); const handleClick = async () => { setLoading(true); await refreshDirectoryFiles(directory); } // Clear loading when global refresh event completes. useSubscribeEventName('global_refresh_completed', () => setLoading(false)); useSubscribeEventName('directory_refresh_completed', () => setLoading(false)); return }