diff --git a/frontend/src/FileCard.jsx b/frontend/src/FileCard.jsx index fb084a3..ebc5839 100644 --- a/frontend/src/FileCard.jsx +++ b/frontend/src/FileCard.jsx @@ -4,10 +4,11 @@ import { File as FileIcon, CircleNotch, DownloadSimple } from '@phosphor-icons/r import { fetchJobStatus, downloadUrl } from './api.js'; import { formatBytes } from './utils/formatBytes.js'; -export function FileCard({ fileName, fileSize, jobId, initialError }) { +export function FileCard({ fileName, fileSize, targetFormat, jobId, initialError }) { const { t } = useTranslation(); const [status, setStatus] = useState(initialError ? 'failed' : 'pending'); const [errorMessage, setErrorMessage] = useState(initialError ?? null); + const [outputSize, setOutputSize] = useState(null); useEffect(() => { if (!jobId || initialError) return undefined; @@ -18,6 +19,7 @@ export function FileCard({ fileName, fileSize, jobId, initialError }) { if (cancelled) return; setStatus(job.status); if (job.status === 'failed') setErrorMessage(job.errorMessage); + if (job.status === 'done') setOutputSize(job.outputSizeBytes); if (job.status === 'done' || job.status === 'failed') clearInterval(interval); }, 1500); @@ -32,6 +34,7 @@ export function FileCard({ fileName, fileSize, jobId, initialError }) {
{fileName} + {targetFormat && {targetFormat.toUpperCase()}} {formatBytes(fileSize)}
{(status === 'pending' || status === 'processing') && ( @@ -43,7 +46,7 @@ export function FileCard({ fileName, fileSize, jobId, initialError }) { {status === 'done' && ( - {t('job.download')} ({formatBytes(fileSize)}) + {t('job.download')} ({formatBytes(outputSize)}) )} {status === 'failed' && {errorMessage}} diff --git a/frontend/src/pages/HomePage.jsx b/frontend/src/pages/HomePage.jsx index 9922b32..235c0ab 100644 --- a/frontend/src/pages/HomePage.jsx +++ b/frontend/src/pages/HomePage.jsx @@ -80,7 +80,11 @@ export function HomePage() { async function handleConvert() { const validItems = pendingFiles.filter((item) => item.targetFormat); const jobs = await uploadFiles(validItems); - const jobsWithSize = jobs.map((job, i) => ({ ...job, size: validItems[i].file.size })); + const jobsWithSize = jobs.map((job, i) => ({ + ...job, + size: validItems[i].file.size, + targetFormat: validItems[i].targetFormat, + })); setSubmittedJobs((current) => [...current, ...jobsWithSize]); setPendingFiles([]); } @@ -117,9 +121,21 @@ export function HomePage() {