diff --git a/cope2n-fe/src/pages/reports/report_detail/index.tsx b/cope2n-fe/src/pages/reports/report_detail/index.tsx index 87951bb..d6ae296 100644 --- a/cope2n-fe/src/pages/reports/report_detail/index.tsx +++ b/cope2n-fe/src/pages/reports/report_detail/index.tsx @@ -33,6 +33,7 @@ const HeaderContainer = styled(Space)` `; const ReportDetail = () => { + const [error, setError] = useState(null); const [fileObject, setFileObject] = useState(null); const [pagination, setPagination] = useState({ page: 1, @@ -60,14 +61,22 @@ const ReportDetail = () => { // Download and show report useEffect(() => { - downloadReport(id, (fileDetails) => { - var blob = new Blob( - [fileDetails.file], - {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,"} - ); - let blobUrl = URL.createObjectURL(blob); - setFileObject(blobUrl); - }); + try { + downloadReport(id, (fileDetails) => { + if (!fileDetails?.file) { + setError("The report has not been ready to preview."); + } + var blob = new Blob( + [fileDetails.file], + {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,"} + ); + let blobUrl = URL.createObjectURL(blob); + setFileObject(blobUrl); + }); + } catch (error) { + setError("The report has not been ready to preview."); + console.log(error); + } }, []); const handleBack = () => { @@ -129,7 +138,9 @@ const ReportDetail = () => { </Typography.Title> </HeaderContainer> <ReportContainer> - {fileObject && <SheetViewer file={fileObject} />} + {(fileObject && !error) && <SheetViewer file={fileObject} />} + {(!fileObject && !error) && <Typography.Title level={5}>Loading...</Typography.Title>} + {error && <Typography.Title level={5}>{error}</Typography.Title>} </ReportContainer> </> ); diff --git a/cope2n-fe/src/request/report.ts b/cope2n-fe/src/request/report.ts index 614a39c..591ff38 100644 --- a/cope2n-fe/src/request/report.ts +++ b/cope2n-fe/src/request/report.ts @@ -113,6 +113,10 @@ export async function downloadReport(report_id: string, downloadFinishedCallback filename: filename, } } catch (error) { + downloadFinishedCallback && downloadFinishedCallback({ + file: null, + filename: null, + }); notification.error({ message: `${error?.message}`, });