import React, {useContext, useState} from "react"; import { CardContent, CardDescription, CardHeader, CardMeta, Confirm, Container, Image, Input, PlaceholderHeader, PlaceholderLine, TableCell, TableRow } from "semantic-ui-react"; import { BackButton, CardLink, cardTitleWrapper, defaultSearchOrder, encodeMediaPath, ExternalCardLink, FileIcon, findPosterPath, HelpHeader, isoDatetimeToString, mimetypeColor, PageContainer, PreviewLink, SearchInput, TabLinks, textEllipsis, useTitle } from "./Common"; import {addTag, deleteArchives, postDownload, removeTag} from "../api"; import {Link, Route, Routes, useNavigate, useParams} from "react-router-dom"; import Message from "semantic-ui-react/dist/commonjs/collections/Message"; import {useArchive, useDomains, useQuery, useSearchArchives} from "../hooks/customHooks"; import {FileCards, FileRowTagIcon, FilesView} from "./Files"; import Grid from "semantic-ui-react/dist/commonjs/collections/Grid"; import Dropdown from "semantic-ui-react/dist/commonjs/modules/Dropdown"; import _ from "lodash"; import {ThemeContext} from "../contexts/contexts"; import {Button, Card, CardIcon, Header, Loader, Placeholder, Segment} from "./Theme"; import {SortableTable} from "./SortableTable"; import {taggedImageLabel, TagsSelector} from "../Tags"; function ArchivePage() { const [deleteOpen, setDeleteOpen] = useState(false); const [updateOpen, setUpdateOpen] = useState(false); const navigate = useNavigate(); const {archiveId} = useParams(); const {archiveFile, history, fetchArchive} = useArchive(archiveId); let title; if (archiveFile && archiveFile.archive) { title = archiveFile.archive.title; } useTitle(title); if (archiveFile === null) { return ; } if (archiveFile === undefined) { return <>
Unknown archive
This archive does not exist
} const {data} = archiveFile; const singlefileUrl = data.singlefile_path ? `/media/${encodeMediaPath(data.singlefile_path)}` : null; const screenshotUrl = data.screenshot_path ? `/media/${encodeMediaPath(data.screenshot_path)}` : null; const readabilityUrl = data.readability_path; const singlefileButton = setDeleteOpen(false)} onConfirm={onDelete} /> ; return } export function ArchiveRowCells({file}) { const {data} = file; const archiveUrl = `/archive/${data.id}`; const posterPath = findPosterPath(file); const posterUrl = posterPath ? `/media/${encodeMediaPath(posterPath)}` : null; let poster; if (posterUrl) { poster = ; } else { poster = ; } // Fragment for SelectableRow return
{poster}
{textEllipsis(file.title || file.stem)}
} export function ArchiveRoute() { const links = [ {text: 'Archives', to: '/archive', end: true}, {text: 'Domains', to: '/archive/domains'}, ]; return }/> }/> }/> }