import { useCallback } from 'react' import { useParams } from 'react-router-dom' import { Button } from '@chakra-ui/react' import cx from 'classnames' import { Helmet } from 'react-helmet-async' import FileAPI, { File } from '@/client/api/file' import DrawerContent from '@/components/viewer/drawer/drawer-content' import ViewerAudio from '@/components/viewer/viewer-audio' import ViewerImage from '@/components/viewer/viewer-image' import ViewerPDF from '@/components/viewer/viewer-pdf' import ViewerVideo from '@/components/viewer/viewer-video' import downloadFile from '@/helpers/download-file' import { isAudio, isImage, isPDF, isVideo } from '@/helpers/file-extension' import { IconDownload, Drawer, Spinner } from '@/lib' const FileViewerPage = () => { const { id } = useParams() const { data: file } = FileAPI.useGetById(id) const renderViewer = useCallback((file: File) => { if ( (file.original && isPDF(file.original.extension)) || (file.preview && isPDF(file.preview.extension)) ) { return } else if (file.original && isImage(file.original.extension)) { return } else if (file.original && isVideo(file.original.extension)) { return } else if (file.original && isAudio(file.original.extension)) { return } else { return (
Cannot preview this file.
) } }, []) return ( <> {file ? ( <> {file.name}
{file.name}
{renderViewer(file)}
) : (
)} ) } export default FileViewerPage