diff --git a/src/structures/Message.js b/src/structures/Message.js index 7c1d3d0..dc4acaf 100644 --- a/src/structures/Message.js +++ b/src/structures/Message.js @@ -410,7 +410,7 @@ class Message extends Base { signal: (new AbortController).signal }); - const data = window.WWebJS.arrayBufferToBase64(decryptedMedia); + const data = await window.WWebJS.arrayBufferToBase64Async(decryptedMedia); return { data, diff --git a/src/util/Injected.js b/src/util/Injected.js index a5eeae3..b09b27e 100644 --- a/src/util/Injected.js +++ b/src/util/Injected.js @@ -480,6 +480,20 @@ exports.LoadUtils = () => { return window.btoa(binary); }; + window.WWebJS.arrayBufferToBase64Async = (arrayBuffer) => + new Promise((resolve, reject) => { + const blob = new Blob([arrayBuffer], { + type: 'application/octet-stream', + }); + const fileReader = new FileReader(); + fileReader.onload = () => { + const [, data] = fileReader.result.split(','); + resolve(data); + }; + fileReader.onerror = (e) => reject(e); + fileReader.readAsDataURL(blob); + }); + window.WWebJS.getFileHash = async (data) => { let buffer = await data.arrayBuffer(); const hashBuffer = await crypto.subtle.digest('SHA-256', buffer);