mirror of
https://github.com/soconnor0919/beenvoice.git
synced 2025-12-13 01:24:44 -05:00
Improve PDF export error handling and logging
Add detailed logging for file-saver failures and fallback download attempts. Wrap fallback logic in try-catch to handle edge cases where manual download also fails, providing better debugging and user-facing error messages.
This commit is contained in:
@@ -21,24 +21,36 @@ function downloadBlob(blob: Blob, filename: string): void {
|
|||||||
// First try using file-saver
|
// First try using file-saver
|
||||||
saveAs(blob, filename);
|
saveAs(blob, filename);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// Fallback to manual download
|
console.warn("file-saver failed, using fallback method:", error);
|
||||||
const url = URL.createObjectURL(blob);
|
|
||||||
const link = document.createElement("a");
|
|
||||||
link.href = url;
|
|
||||||
link.download = filename;
|
|
||||||
link.style.display = "none";
|
|
||||||
|
|
||||||
// Add MIME type hint to link
|
try {
|
||||||
if (blob.type) {
|
// Fallback to manual download
|
||||||
link.type = blob.type;
|
const url = URL.createObjectURL(blob);
|
||||||
|
const link = document.createElement("a");
|
||||||
|
link.href = url;
|
||||||
|
link.download = filename;
|
||||||
|
link.style.display = "none";
|
||||||
|
|
||||||
|
// Add MIME type hint to link
|
||||||
|
if (blob.type) {
|
||||||
|
link.type = blob.type;
|
||||||
|
}
|
||||||
|
|
||||||
|
document.body.appendChild(link);
|
||||||
|
link.click();
|
||||||
|
document.body.removeChild(link);
|
||||||
|
|
||||||
|
console.log("PDF download initiated successfully via fallback method");
|
||||||
|
|
||||||
|
// Clean up the object URL
|
||||||
|
setTimeout(() => {
|
||||||
|
URL.revokeObjectURL(url);
|
||||||
|
console.log("Object URL cleaned up");
|
||||||
|
}, 1000);
|
||||||
|
} catch (fallbackError) {
|
||||||
|
console.error("Both download methods failed:", fallbackError);
|
||||||
|
throw new Error("Unable to download PDF file");
|
||||||
}
|
}
|
||||||
|
|
||||||
document.body.appendChild(link);
|
|
||||||
link.click();
|
|
||||||
document.body.removeChild(link);
|
|
||||||
|
|
||||||
// Clean up the object URL
|
|
||||||
setTimeout(() => URL.revokeObjectURL(url), 1000);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user