refactor: Enhance error handling for file metadata fetching and parsing
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user