diff --git a/src/pages/download.tsx b/src/pages/download.tsx index f10fec4..ffc64e9 100644 --- a/src/pages/download.tsx +++ b/src/pages/download.tsx @@ -11,7 +11,7 @@ export const download = new Elysia() .use(userService) .get( "/download/:userId/:jobId/:fileName", - async ({ params, redirect, user }) => { + async ({ params, redirect, set, user }) => { const userId = user.id; const job = await db .query("SELECT * FROM jobs WHERE user_id = ? AND id = ?") @@ -25,7 +25,13 @@ export const download = new Elysia() const fileName = sanitize(decodeURIComponent(params.fileName)); const filePath = `${outputDir}${userId}/${jobId}/${fileName}`; - return Bun.file(filePath); + const file = Bun.file(filePath); + if (!(await file.exists())) { + set.status = 404; + return { message: "Converted file not found." }; + } + + return file; }, { auth: true, diff --git a/src/pages/results.tsx b/src/pages/results.tsx index 64dd221..a9809f6 100644 --- a/src/pages/results.tsx +++ b/src/pages/results.tsx @@ -96,35 +96,47 @@ function ResultsArticle({ - {files.map((file) => ( - - - {file.output_file_name} - - {file.status} - - - - - - - - - - ))} + {files.map((file) => { + const conversionFailed = ["Failed, check logs", "File type not supported"].includes( + file.status, + ); + + return ( + + + {file.output_file_name} + + {file.status} + + {conversionFailed ? ( + Unavailable + ) : ( + <> + + + + + + + + )} + + + ); + })}