fix: revoke object URL on download completion

This commit is contained in:
2026-08-18 15:55:48 +08:00
parent a072edd6d1
commit 4d7ff1a0e7
+13 -2
View File
@@ -33,6 +33,17 @@ async function generatePdf(data) {
const url = URL.createObjectURL(blob);
const name = (data.header && data.header.fullName) || 'Student';
const filename = 'Study Load - ' + name + '.pdf';
await browser.downloads.download({ url, filename, saveAs: true });
setTimeout(() => URL.revokeObjectURL(url), 10000);
try {
const id = await browser.downloads.download({ url, filename, saveAs: true });
const onChanged = (delta) => {
if (delta.id === id && delta.state && (delta.state.current === 'complete' || delta.state.current === 'interrupted')) {
browser.downloads.onChanged.removeListener(onChanged);
URL.revokeObjectURL(url);
}
};
browser.downloads.onChanged.addListener(onChanged);
} catch (err) {
URL.revokeObjectURL(url);
throw err;
}
}