From 91bfdc46301207cbc5274308da6f39c7b4652c63 Mon Sep 17 00:00:00 2001 From: Leifer Mendez Date: Sat, 17 Dec 2022 14:01:32 +0100 Subject: [PATCH] fix(provider): :bug: qr code accurate --- packages/provider/src/baileys/index.js | 2 +- packages/provider/src/baileys/utils.js | 19 ++++++++++++---- packages/provider/src/venom/index.js | 4 ++-- packages/provider/src/venom/utils.js | 25 ++++++++++++--------- packages/provider/src/web-whatsapp/index.js | 4 ++-- packages/provider/src/web-whatsapp/utils.js | 19 ++++++++++++---- 6 files changed, 50 insertions(+), 23 deletions(-) diff --git a/packages/provider/src/baileys/index.js b/packages/provider/src/baileys/index.js index 8bd860e..3855043 100644 --- a/packages/provider/src/baileys/index.js +++ b/packages/provider/src/baileys/index.js @@ -70,7 +70,7 @@ class BaileysProvider extends ProviderClass { `Necesitas ayuda: https://link.codigoencasa.com/DISCORD`, ], }) - baileyGenerateImage(qr) + await baileyGenerateImage(qr) } if (lastDisconnect?.error) { diff --git a/packages/provider/src/baileys/utils.js b/packages/provider/src/baileys/utils.js index 2fc0779..40efa61 100644 --- a/packages/provider/src/baileys/utils.js +++ b/packages/provider/src/baileys/utils.js @@ -12,13 +12,24 @@ const baileyCleanNumber = (number, full = false) => { * Hace promesa el write * @param {*} base64 */ -const baileyGenerateImage = (base64) => { +const baileyGenerateImage = async (base64) => { const PATH_QR = `${process.cwd()}/qr.png` let qr_svg = qr.image(base64, { type: 'png', margin: 4 }) - qr_svg.pipe(createWriteStream(PATH_QR)) - combineImage([PATH_QR], { margin: 15, color: 0xffffffff }).then((img) => { - img.write(PATH_QR) + + const writeFilePromise = () => + new Promise((resolve, reject) => { + const file = qr_svg.pipe(createWriteStream(PATH_QR)) + file.on('finish', () => resolve(true)) + file.on('error', reject) + }) + + await writeFilePromise() + + const cleanImage = await combineImage([PATH_QR], { + margin: 15, + color: 0xffffffff, }) + cleanImage.write(PATH_QR) } const baileyIsValidNumber = (rawNumber) => { diff --git a/packages/provider/src/venom/index.js b/packages/provider/src/venom/index.js index bb167e4..1aafd80 100644 --- a/packages/provider/src/venom/index.js +++ b/packages/provider/src/venom/index.js @@ -49,7 +49,7 @@ class VenomProvider extends ProviderClass { /** * Generamos QR Code pra escanear con el Whatsapp */ - generateQr = (qr) => { + generateQr = async (qr) => { console.clear() this.emit('require_action', { instructions: [ @@ -58,7 +58,7 @@ class VenomProvider extends ProviderClass { `Necesitas ayuda: https://link.codigoencasa.com/DISCORD`, ], }) - venomGenerateImage(qr) + await venomGenerateImage(qr) } /** diff --git a/packages/provider/src/venom/utils.js b/packages/provider/src/venom/utils.js index ecbf497..ff1d733 100644 --- a/packages/provider/src/venom/utils.js +++ b/packages/provider/src/venom/utils.js @@ -7,7 +7,7 @@ const venomCleanNumber = (number, full = false) => { return number } -const venomGenerateImage = (base) => { +const venomGenerateImage = async (base) => { const PATH_QR = `${process.cwd()}/qr.png` const matches = base.match(/^data:([A-Za-z-+\/]+);base64,(.+)$/) if (matches.length !== 3) { @@ -18,16 +18,21 @@ const venomGenerateImage = (base) => { response.type = matches[1] response.data = new Buffer.from(matches[2], 'base64') - var imageBuffer = response - writeFile(PATH_QR, imageBuffer['data'], 'binary', (err) => { - if (err != null) throw new Error('ERROR_QR_GENERATE') - combineImage([PATH_QR], { margin: 15, color: 0xffffffff }).then( - (img) => { - img.write(PATH_QR) - } - ) - return + const writeFilePromise = () => + new Promise((resolve, reject) => { + writeFile(PATH_QR, response['data'], 'binary', (err) => { + if (err != null) reject('ERROR_QR_GENERATE') + resolve(true) + }) + }) + + await writeFilePromise() + + const cleanImage = await combineImage([PATH_QR], { + margin: 15, + color: 0xffffffff, }) + cleanImage.write(PATH_QR) } const venomisValidNumber = (rawNumber) => { diff --git a/packages/provider/src/web-whatsapp/index.js b/packages/provider/src/web-whatsapp/index.js index ae8747e..ef9427f 100644 --- a/packages/provider/src/web-whatsapp/index.js +++ b/packages/provider/src/web-whatsapp/index.js @@ -57,7 +57,7 @@ class WebWhatsappProvider extends ProviderClass { }, { event: 'qr', - func: (qr) => { + func: async (qr) => { this.emit('require_action', { instructions: [ `Debes escanear el QR Code para iniciar session reivsa qr.png`, @@ -65,7 +65,7 @@ class WebWhatsappProvider extends ProviderClass { `Necesitas ayuda: https://link.codigoencasa.com/DISCORD`, ], }) - wwebGenerateImage(qr) + await wwebGenerateImage(qr) }, }, { diff --git a/packages/provider/src/web-whatsapp/utils.js b/packages/provider/src/web-whatsapp/utils.js index 274ddd5..e70bd65 100644 --- a/packages/provider/src/web-whatsapp/utils.js +++ b/packages/provider/src/web-whatsapp/utils.js @@ -11,13 +11,24 @@ const wwebCleanNumber = (number, full = false) => { return number } -const wwebGenerateImage = (base64) => { +const wwebGenerateImage = async (base64) => { const PATH_QR = `${process.cwd()}/qr.png` let qr_svg = qr.image(base64, { type: 'png', margin: 4 }) - qr_svg.pipe(createWriteStream(PATH_QR)) - combineImage([PATH_QR], { margin: 15, color: 0xffffffff }).then((img) => { - img.write(PATH_QR) + + const writeFilePromise = () => + new Promise((resolve, reject) => { + const file = qr_svg.pipe(createWriteStream(PATH_QR)) + file.on('finish', () => resolve(true)) + file.on('error', reject) + }) + + await writeFilePromise() + + const cleanImage = await combineImage([PATH_QR], { + margin: 15, + color: 0xffffffff, }) + cleanImage.write(PATH_QR) } const wwebIsValidNumber = (rawNumber) => {