From 537e843a49529488b8d735f6c28503dc676c5731 Mon Sep 17 00:00:00 2001 From: jurajmatus Date: Wed, 10 Aug 2022 18:31:04 +0200 Subject: [PATCH] Async buffer->BASE64 conversion (#1481) * Async buffer->BASE64 conversion * ESLint fixes --- src/structures/Message.js | 2 +- src/util/Injected.js | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) 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);