import { useEffect, useState } from 'react' import { getDownloadFile } from '@/rtk/helpers/apiService' import { Modal, Text, Box, Loader, Paper, Button, Group } from '@mantine/core' import FileViewer from 'react-file-viewer' import { IconDownload } from '@tabler/icons-react' import { downloadFile } from '@/api/Admin' type MProps = { opened: boolean close: () => void selectDataRow: any setSelectDataRow: any } interface TDocumentFile { uri: string fileType: string } const ModalFileDocument = ({ opened, close, selectDataRow, setSelectDataRow, }: MProps) => { const [fileDoc, setFileDoc] = useState() const [loader, setLoader] = useState(false) useEffect(() => { getFile() }, []) const getFile = async () => { try { setLoader(true) const params = {} const fileUri = selectDataRow?.uri.replace('storage/uploads/', '') const res = await getDownloadFile(`${downloadFile}/${fileUri}`, params) setFileDoc({ uri: URL.createObjectURL(res.data), fileType: getFileType(selectDataRow?.uri) || 'default', }) } catch (error: any) { console.log(error) } finally { setLoader(false) } } const supportedFileTypes = ['pdf', 'xlsx', 'xls', 'docx', 'doc'] const getFileType = (fileName: string) => { const extension = fileName.split('.').pop()?.toLowerCase() return supportedFileTypes.includes(extension!) ? extension : 'default' } return ( { close() setSelectDataRow({}) }} size="65%" title={ File Detail: {selectDataRow?.title} } > {loader ? ( ) : ( )} ) } export default ModalFileDocument