diff options
author | crupest <crupest@outlook.com> | 2023-07-24 00:31:02 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2023-07-24 00:31:02 +0800 |
commit | c7934c59cb17a4266ea882cdb40be79f22043d10 (patch) | |
tree | ff368fe5611014cd20db5a1f53d4dcbd5fdabf9f /FrontEnd/src/utilities | |
parent | ae1b296b5e967d1e329f5a1e6165ca0f05dce0cb (diff) | |
download | timeline-c7934c59cb17a4266ea882cdb40be79f22043d10.tar.gz timeline-c7934c59cb17a4266ea882cdb40be79f22043d10.tar.bz2 timeline-c7934c59cb17a4266ea882cdb40be79f22043d10.zip |
...
Diffstat (limited to 'FrontEnd/src/utilities')
-rw-r--r-- | FrontEnd/src/utilities/base64.ts | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/FrontEnd/src/utilities/base64.ts b/FrontEnd/src/utilities/base64.ts index 59de7512..6eece979 100644 --- a/FrontEnd/src/utilities/base64.ts +++ b/FrontEnd/src/utilities/base64.ts @@ -1,8 +1,19 @@ -import { Base64 } from "js-base64"; +function bytesToBase64(bytes: Uint8Array): string { + const binString = Array.from(bytes, (x) => String.fromCodePoint(x)).join(""); + return btoa(binString); +} + +export default function base64( + data: Blob | Uint8Array | string, +): Promise<string> { + if (typeof data === "string") { + // From https://developer.mozilla.org/en-US/docs/Glossary/Base64#the_unicode_problem + const binString = new TextEncoder().encode(data); + return Promise.resolve(bytesToBase64(binString)); + } -export default function base64(blob: Blob | string): Promise<string> { - if (typeof blob === "string") { - return Promise.resolve(Base64.encode(blob)); + if (data instanceof Uint8Array) { + return Promise.resolve(bytesToBase64(data)); } return new Promise<string>((resolve) => { @@ -10,6 +21,6 @@ export default function base64(blob: Blob | string): Promise<string> { reader.onload = function () { resolve((reader.result as string).replace(/^data:.*;base64,/, "")); }; - reader.readAsDataURL(blob); + reader.readAsDataURL(data); }); } |