From 2af351efa85264da5abeee27fbd091d4ce637041 Mon Sep 17 00:00:00 2001 From: doprz <52579214+doprz@users.noreply.github.com> Date: Thu, 21 Mar 2024 10:20:52 -0500 Subject: [PATCH] feat: add downloadBlob util --- src/shared/util/downloadBlob.ts | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/shared/util/downloadBlob.ts diff --git a/src/shared/util/downloadBlob.ts b/src/shared/util/downloadBlob.ts new file mode 100644 index 00000000..9cb424d2 --- /dev/null +++ b/src/shared/util/downloadBlob.ts @@ -0,0 +1,25 @@ +/** + * Downloads a blob as a file. + * @param {Blob} blob - The blob to download. + * @param {string} fileName - The name of the file to be downloaded. + * @returns {Promise} - A promise that resolves when the download is complete. + */ +export default function downloadBlob(blob: Blob, fileName: string): Promise { + return new Promise((resolve, reject) => { + const url = URL.createObjectURL(blob); + const link = document.createElement('a'); + + link.href = url; + link.download = fileName; + + link.addEventListener('click', () => { + URL.revokeObjectURL(url); + resolve(); + }); + link.addEventListener('error', () => { + URL.revokeObjectURL(url); + reject(new Error('Download failed')); + }); + link.click(); + }); +}