import { Box, Grid, Typography } from '@material-ui/core'
import { Web } from '@material-ui/icons'
import { ReactElement, useMemo } 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'
import { FitVideo } from '../../components/FitVideo'
import { FitAudio } from '../../components/FitAudio'
interface Props {
previewUri?: string
metadata?: Metadata
}
/* eslint-disable react/display-name */
const getPreviewComponent = (previewUri?: string, metadata?: Metadata) => {
if (metadata?.isVideo) {
return () =>
}
if (metadata?.isAudio) {
return () =>
}
if (metadata?.isImage) {
return () =>
}
if (metadata?.isWebsite) {
return () => } />
}
if (metadata?.type === 'folder') {
return () => } />
}
return () => } />
}
const getType = (metadata?: Metadata) => {
if (metadata?.isWebsite) return 'Website'
if (metadata?.type === 'folder') return 'Folder'
return metadata?.type
}
// TODO: add optional prop for indexDocument when it is already known (e.g. downloading a manifest)
export function AssetPreview({ metadata, previewUri }: Props): ReactElement | null {
const PreviewAssetComponent = useMemo(() => getPreviewComponent(previewUri, metadata), [metadata, previewUri])
const type = useMemo(() => getType(metadata), [metadata])
return (
{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
)}
)
}