diff --git a/assets/index.js b/assets/index.js index 4143021..24883a0 100644 --- a/assets/index.js +++ b/assets/index.js @@ -108,7 +108,7 @@ window.addEventListener("DOMContentLoaded", async () => { return; } - DATA = JSON.parse(atob($indexData.innerHTML)); + DATA = JSON.parse(decodeBase64($indexData.innerHTML)); DIR_EMPTY_NOTE = PARAMS.q ? 'No results' : DATA.dir_exists ? 'Empty folder' : 'Folder will be created when a file is uploaded'; await ready(); @@ -910,3 +910,22 @@ function getEncoding(contentType) { } return 'utf-8'; } + +// Parsing base64 strings with Unicode characters +function decodeBase64(base64String) { + const binString = atob(base64String); + const len = binString.length; + const bytes = new Uint8Array(len); + const arr = new Uint32Array(bytes.buffer, 0, Math.floor(len / 4)); + let i = 0; + for (; i < arr.length; i++) { + arr[i] = binString.charCodeAt(i * 4) | + (binString.charCodeAt(i * 4 + 1) << 8) | + (binString.charCodeAt(i * 4 + 2) << 16) | + (binString.charCodeAt(i * 4 + 3) << 24); + } + for (i = i * 4; i < len; i++) { + bytes[i] = binString.charCodeAt(i); + } + return new TextDecoder().decode(bytes); +}