fix: requestPairingCode method

This commit is contained in:
Anton Voylenko 2025-08-25 11:20:57 +03:00
commit 532b236442
2 changed files with 18 additions and 2 deletions

View file

@ -1,6 +1,6 @@
const qr = require('qr-image') const qr = require('qr-image')
const { setupSession, deleteSession, reloadSession, validateSession, flushSessions, destroySession, sessions } = require('../sessions') const { setupSession, deleteSession, reloadSession, validateSession, flushSessions, destroySession, sessions } = require('../sessions')
const { sendErrorResponse, waitForNestedObject } = require('../utils') const { sendErrorResponse, waitForNestedObject, exposeFunctionIfAbsent } = require('../utils')
const { logger } = require('../logger') const { logger } = require('../logger')
/** /**
@ -369,6 +369,11 @@ const requestPairingCode = async (req, res) => {
if (!client) { if (!client) {
return res.json({ success: false, message: 'session_not_found' }) return res.json({ success: false, message: 'session_not_found' })
} }
// hotfix https://github.com/pedroslopez/whatsapp-web.js/pull/3706
await exposeFunctionIfAbsent(client.pupPage, 'onCodeReceivedEvent', async (code) => {
client.emit('code', code)
return code
})
const result = await client.requestPairingCode(phoneNumber, showNotification) const result = await client.requestPairingCode(phoneNumber, showNotification)
res.json({ success: true, result }) res.json({ success: true, result })
} catch (error) { } catch (error) {

View file

@ -63,6 +63,16 @@ const sleep = function (ms) {
return new Promise(resolve => setTimeout(resolve, ms)) return new Promise(resolve => setTimeout(resolve, ms))
} }
const exposeFunctionIfAbsent = async (page, name, fn) => {
const exist = await page.evaluate((name) => {
return !!window[name]
}, name)
if (exist) {
return
}
await page.exposeFunction(name, fn)
}
module.exports = { module.exports = {
triggerWebhook, triggerWebhook,
sendErrorResponse, sendErrorResponse,
@ -70,5 +80,6 @@ module.exports = {
isEventEnabled, isEventEnabled,
sendMessageSeenStatus, sendMessageSeenStatus,
decodeBase64, decodeBase64,
sleep sleep,
exposeFunctionIfAbsent
} }