diff --git a/packages/webamp/js/aniParser.ts b/packages/webamp/js/aniParser.ts index dc43150e..dd08c153 100644 --- a/packages/webamp/js/aniParser.ts +++ b/packages/webamp/js/aniParser.ts @@ -1,4 +1,5 @@ import { RIFFFile } from "riff-file"; +import * as Utils from "./utils"; import { unpackArray } from "byte-data"; type Chunk = { @@ -75,12 +76,8 @@ function parseMetadata(chunkData: Uint8Array) { }; } -function base64(u8: Uint8Array): string { - return window.btoa(String.fromCharCode.apply(null, u8)); -} - function urlFromData(arr: Uint8Array): string { - const arrBase64 = base64(arr); + const arrBase64 = Utils.base64FromDataArray(arr); return `data:image/x-win-bitmap;base64,${arrBase64}`; } diff --git a/packages/webamp/js/utils.ts b/packages/webamp/js/utils.ts index 8ef394ea..61a1d370 100644 --- a/packages/webamp/js/utils.ts +++ b/packages/webamp/js/utils.ts @@ -129,9 +129,12 @@ export const parseIni = (text: string): IniData => { export const clamp = (value: number, min: number, max: number): number => Math.min(Math.max(value, min), max); +export const base64FromDataArray = (dataArray: Uint8Array): string => { + return window.btoa(String.fromCharCode(...dataArray)); +}; + export const base64FromArrayBuffer = (arrayBuffer: ArrayBuffer): string => { - const dataView = new Uint8Array(arrayBuffer); - return window.btoa(String.fromCharCode(...dataView)); + return base64FromDataArray(new Uint8Array(arrayBuffer)); }; // https://stackoverflow.com/a/15832662/1263117