diff --git a/src/controllers/sessionController.js b/src/controllers/sessionController.js index 6e37b6e..b392646 100644 --- a/src/controllers/sessionController.js +++ b/src/controllers/sessionController.js @@ -363,9 +363,10 @@ const requestPairingCode = async (req, res) => { }, } */ + const sessionId = req.params.sessionId try { const { phoneNumber, showNotification = true } = req.body - const client = sessions.get(req.params.sessionId) + const client = sessions.get(sessionId) if (!client) { return res.json({ success: false, message: 'session_not_found' }) } @@ -374,37 +375,11 @@ const requestPairingCode = async (req, res) => { client.emit('code', code) return code }) - - // WhatsApp Web may initially expose only the QR flow. Switch the page to - // phone-number login before invoking the internal pairing API. - await client.pupPage.evaluate(() => { - const labels = [ - 'Log in with phone number', - 'Inloggen met telefoonnummer', - ] - const element = [...document.querySelectorAll('div,button,a,span')].find((node) => - labels.includes(node.textContent.trim()), - ) - if (element) element.click() - }) - await new Promise((resolve) => setTimeout(resolve, 500)) - - // Drive the WhatsApp Web module directly in this Puppeteer page. This is - // intentionally kept here until the public wrapper handles this flow reliably. - const result = await client.pupPage.evaluate( - async (phoneNumber, showNotification) => { - const api = window.require('WAWebAltDeviceLinkingApi') - api.setPairingType('ALT_DEVICE_LINKING') - await api.initializeAltDeviceLinking() - return api.startAltLinkingFlow(phoneNumber, showNotification) - }, - phoneNumber, - showNotification, - ) + const result = await client.requestPairingCode(phoneNumber, showNotification) res.json({ success: true, result }) } catch (error) { - logger.error({ sessionId: req.params.sessionId, err: error }, 'Failed to request pairing code') - sendErrorResponse(res, 500, error.message) + logger.error({ sessionId, err: error }, 'Failed to request pairing code') + res.status(500).json({ success: false, error: error.message }) } }