refactor: Enhance error handling for file metadata fetching and parsing

This commit is contained in:
2025-10-16 13:38:20 +02:00
parent bc67634411
commit 841923c7ff

View File

@@ -100,17 +100,28 @@ export default function DownloadPage() {
try {
const metaRes = await fetch(`/api/file/${file_id}?token=${token}`);
if (!metaRes.ok) {
const err = await metaRes.json();
throw new Error(err.error || 'Failed to fetch file metadata.');
let metadata;
try {
metadata = await metaRes.json();
} catch (jsonError) {
console.error('Failed to parse metadata response as JSON:', jsonError);
throw new Error('Failed to parse file metadata.');
}
const metadata = await metaRes.json();
if (!metaRes.ok) {
throw new Error(metadata.error || 'Failed to fetch file metadata.');
}
setFilename(metadata.filename);
setTotalBytes(metadata.size);
setDownloadState('downloading');
const encryptedParts = new Array(metadata.num_parts);
if (!Array.isArray(metadata.parts)) {
throw new Error('Invalid metadata: parts is not an array.');
}
const downloadPromises = metadata.parts.map(async (part: MetadataPart) => {
const response = await fetchWithRetry(`/api/download-part/${file_id}/${part.part_index}`);
const buffer = await response.arrayBuffer();