diff --git a/package-lock.json b/package-lock.json index 33650ca..54689ad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "qr-image": "^3.2.0", "qrcode-terminal": "^0.12.0", "swagger-ui-express": "^5.0.1", - "whatsapp-web.js": "^1.32.0", + "whatsapp-web.js": "^1.33.0", "ws": "^8.18.2" }, "devDependencies": { @@ -8177,9 +8177,9 @@ "license": "BSD-2-Clause" }, "node_modules/whatsapp-web.js": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/whatsapp-web.js/-/whatsapp-web.js-1.32.0.tgz", - "integrity": "sha512-uXBT2WtUxUUZpOIevy/x+9JlIU7MSnPniqZC0NJq7k5VTjkI1GYWJZlDJSSYTvnw3JOZMn1wSizHqb9g/q5eew==", + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/whatsapp-web.js/-/whatsapp-web.js-1.33.0.tgz", + "integrity": "sha512-WyyOl0Xh2C1o7/pnZJ64evbkJL6t/BjN0adeIBP0QUiWS+nuv35iAg5tZWBPZEa1S1oFjX8ZXmSFBdUSjr5lQw==", "license": "Apache-2.0", "dependencies": { "@pedroslopez/moduleraid": "^5.0.2", diff --git a/package.json b/package.json index 39c10d0..d0073dd 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "qr-image": "^3.2.0", "qrcode-terminal": "^0.12.0", "swagger-ui-express": "^5.0.1", - "whatsapp-web.js": "^1.32.0", + "whatsapp-web.js": "^1.33.0", "ws": "^8.18.2" }, "devDependencies": { diff --git a/src/controllers/channelController.js b/src/controllers/channelController.js index db92ebd..e9f7c7b 100644 --- a/src/controllers/channelController.js +++ b/src/controllers/channelController.js @@ -106,6 +106,7 @@ const sendMessage = async (req, res) => { try { const { chatId, content, contentType, options, mediaFromURLOptions = {} } = req.body + const sendOptions = { waitUntilMsgSent: true, ...options } const client = sessions.get(req.params.sessionId) const chat = await client.getChatById(chatId) if (!chat) { @@ -119,16 +120,16 @@ const sendMessage = async (req, res) => { let messageOut switch (contentType) { case 'string': - messageOut = await chat.sendMessage(content, options) + messageOut = await chat.sendMessage(content, sendOptions) break case 'MessageMediaFromURL': { const messageMediaFromURL = await MessageMedia.fromUrl(content, { unsafeMime: true, ...mediaFromURLOptions }) - messageOut = await chat.sendMessage(messageMediaFromURL, options) + messageOut = await chat.sendMessage(messageMediaFromURL, sendOptions) break } case 'MessageMedia': { const messageMedia = new MessageMedia(content.mimetype, content.data, content.filename, content.filesize) - messageOut = await chat.sendMessage(messageMedia, options) + messageOut = await chat.sendMessage(messageMedia, sendOptions) break } default: diff --git a/src/controllers/clientController.js b/src/controllers/clientController.js index e11722a..4fd25ae 100644 --- a/src/controllers/clientController.js +++ b/src/controllers/clientController.js @@ -64,47 +64,46 @@ const sendMessage = async (req, res) => { */ try { - const { chatId, content, contentType, options, mediaFromURLOptions = {} } = req.body + const { chatId, content, contentType, options = {}, mediaFromURLOptions = {} } = req.body const client = sessions.get(req.params.sessionId) + const sendOptions = { waitUntilMsgSent: true, ...options } let messageOut switch (contentType) { case 'string': - if (options?.media) { - const { mimetype, data, filename = null, filesize = null } = options.media + if (sendOptions?.media) { + const { mimetype, data, filename = null, filesize = null } = sendOptions.media if (!mimetype || !data) { return sendErrorResponse(res, 400, 'invalid media options') } - options.media = new MessageMedia(mimetype, data, filename, filesize) + sendOptions.media = new MessageMedia(mimetype, data, filename, filesize) } - messageOut = await client.sendMessage(chatId, content, options) + messageOut = await client.sendMessage(chatId, content, sendOptions) break case 'MessageMediaFromURL': { const messageMediaFromURL = await MessageMedia.fromUrl(content, { unsafeMime: true, ...mediaFromURLOptions }) - messageOut = await client.sendMessage(chatId, messageMediaFromURL, options) + messageOut = await client.sendMessage(chatId, messageMediaFromURL, sendOptions) break } case 'MessageMedia': { const messageMedia = new MessageMedia(content.mimetype, content.data, content.filename, content.filesize) - messageOut = await client.sendMessage(chatId, messageMedia, options) + messageOut = await client.sendMessage(chatId, messageMedia, sendOptions) break } case 'Location': { const location = new Location(content.latitude, content.longitude, content.description) - messageOut = await client.sendMessage(chatId, location, options) + messageOut = await client.sendMessage(chatId, location, sendOptions) break } case 'Contact': { const contactId = content.contactId.endsWith('@c.us') ? content.contactId : `${content.contactId}@c.us` const contact = await client.getContactById(contactId) - messageOut = await client.sendMessage(chatId, contact, options) + messageOut = await client.sendMessage(chatId, contact, sendOptions) break } case 'Poll': { const poll = new Poll(content.pollName, content.pollOptions, content.options) - messageOut = await client.sendMessage(chatId, poll, options) - // fix for poll events not being triggered (open the chat that you sent the poll) - await client.interface.openChatWindow(chatId) + messageOut = await client.sendMessage(chatId, poll, sendOptions) break } default: