import React, { ReactElement, ReactNode } from "react"; import prettyBytes from "pretty-bytes"; import { isEmpty } from "lodash"; import { format, parseISO, isValid } from "date-fns"; import { RawFileDetails as RawFileDetailsType, InferredMetadata, } from "../../graphql/generated"; type RawFileDetailsProps = { data?: { rawFileDetails?: RawFileDetailsType; inferredMetadata?: InferredMetadata; createdAt?: string; }; children?: ReactNode; }; /** Renders raw file info, inferred metadata, and import timestamp for a comic. */ export const RawFileDetails = (props: RawFileDetailsProps): ReactElement => { const { rawFileDetails, inferredMetadata, createdAt } = props.data || {}; return ( <>

{rawFileDetails?.name}

Raw File Details
{rawFileDetails?.containedIn} {"/"} {rawFileDetails?.name} {rawFileDetails?.extension}
Inferred Issue Metadata
Series Name: {inferredMetadata?.issue?.name} {!isEmpty(inferredMetadata?.issue?.number) ? ( {inferredMetadata?.issue?.number} ) : null}
MIMEType
{/* File extension */} {rawFileDetails?.mimeType}
File Size
{/* size */} {rawFileDetails?.fileSize ? prettyBytes(rawFileDetails.fileSize) : "N/A"}
Import Details
{createdAt && isValid(parseISO(createdAt)) ? ( <> {format(parseISO(createdAt), "dd MMMM, yyyy")},{" "} {format(parseISO(createdAt), "h aaaa")} ) : "N/A"}
Actions
{props.children}
); }; export default RawFileDetails;