diff options
author | Matt Strapp <matt@mattstrapp.net> | 2023-09-27 16:16:10 -0500 |
---|---|---|
committer | Matt Strapp <matt@mattstrapp.net> | 2023-09-27 16:16:10 -0500 |
commit | 13d465c1c45e649a702457d67476694aeb553704 (patch) | |
tree | d0d3ba8ac0ff9546482b8f5e7294399613e6cb20 /app/src/lib/ts/download.ts | |
parent | Workspaces! (diff) | |
download | trinkets-13d465c1c45e649a702457d67476694aeb553704.tar trinkets-13d465c1c45e649a702457d67476694aeb553704.tar.gz trinkets-13d465c1c45e649a702457d67476694aeb553704.tar.bz2 trinkets-13d465c1c45e649a702457d67476694aeb553704.tar.lz trinkets-13d465c1c45e649a702457d67476694aeb553704.tar.xz trinkets-13d465c1c45e649a702457d67476694aeb553704.tar.zst trinkets-13d465c1c45e649a702457d67476694aeb553704.zip |
Get rid of crc32, truncate instead
Signed-off-by: Matt Strapp <matt@mattstrapp.net>
Diffstat (limited to 'app/src/lib/ts/download.ts')
-rw-r--r-- | app/src/lib/ts/download.ts | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/app/src/lib/ts/download.ts b/app/src/lib/ts/download.ts new file mode 100644 index 0000000..a6167d7 --- /dev/null +++ b/app/src/lib/ts/download.ts @@ -0,0 +1,33 @@ +// Yoinked from https://web.dev/patterns/files/save-a-file/ for the polyfill + +export default async function saveFile(blob: ArrayBuffer, suggestedName: string | undefined) { + const supportsFSAccess = 'showSaveFilePicker' in window && + (() => { + try { + return window.self === window.top; + } catch { + return false; + } + })(); + + if (supportsFSAccess) { + try { + const handle = await window.showSaveFilePicker({ + suggestedName: suggestedName, + }) + const writable = await handle.createWritable(); + await writable.write(blob); + await writable.close(); + } catch (err: unknown) { + // TypeScript + if ((err as Error)?.name !== 'AbortError') { + console.error(err); + } + } + } else { + const anchor = document.createElement('a'); + anchor.download = suggestedName ?? 'truncated'; + anchor.href = URL.createObjectURL(new Blob([blob])); + anchor.click(); + } +}
\ No newline at end of file |