import { Box, Grid, Typography } from '@material-ui/core' import { Web } from '@material-ui/icons' import { ReactElement } from 'react' import File from 'remixicon-react/FileLineIcon' import Folder from 'remixicon-react/FolderLineIcon' import { FitImage } from '../../components/FitImage' import { shortenText } from '../../utils' import { getHumanReadableFileSize } from '../../utils/file' import { shortenHash } from '../../utils/hash' import { AssetIcon } from './AssetIcon' interface Props { previewUri?: string metadata?: Metadata } // TODO: add optional prop for indexDocument when it is already known (e.g. downloading a manifest) export function AssetPreview({ metadata, previewUri }: Props): ReactElement | null { let previewComponent = let type = metadata?.type if (metadata?.isWebsite) { previewComponent = type = 'Website' } else if (metadata?.type === 'folder') { previewComponent = type = 'Folder' } return ( {previewUri ? ( ) : ( )} {metadata?.hash && Swarm Hash: {shortenHash(metadata.hash)}} {metadata?.name && metadata?.name !== metadata?.hash && ( {metadata?.type === 'folder' ? 'Folder Name' : 'Filename'}: {shortenText(metadata?.name)} )} Kind: {type} {metadata?.size ? Size: {getHumanReadableFileSize(metadata.size)} : null} {metadata?.type === 'folder' && metadata.count && ( Folder content {metadata.count} items )} ) }