feat: event message_ciphertext (#2292)

* add option cipherMsg

* add event  message_ciphertext

* example

* remove option cipherMsg

* removing unlinked code

* Update Client.js

---------

Co-authored-by: Shir Serlui <70711723+shirser121@users.noreply.github.com>
Co-authored-by: alechkos <93551621+alechkos@users.noreply.github.com>
This commit is contained in:
tofers 2023-12-16 19:10:26 +03:00 • committed by GitHub
commit 1dd35be834
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 28 additions and 0 deletions

View file

@ -386,6 +386,14 @@ client.on('message_create', (msg) => {
} }
}); });
client.on('message_ciphertext', (msg) => {
// Receiving new incoming messages that have been encrypted
// msg.type === 'ciphertext'
msg.body = 'Waiting for this message. Check your phone.';
// do stuff here
});
client.on('message_revoke_everyone', async (after, before) => { client.on('message_revoke_everyone', async (after, before) => {
// Fired whenever a message is deleted by anyone (including you) // Fired whenever a message is deleted by anyone (including you)
console.log(after); // message after it was deleted. console.log(after); // message after it was deleted.

7
index.d.ts vendored
View file

@ -304,6 +304,12 @@ declare namespace WAWebJS {
/** The message that was created */ /** The message that was created */
message: Message message: Message
) => void): this ) => void): this
/** Emitted when a new message ciphertext is received */
on(event: 'message_ciphertext', listener: (
/** The message that was ciphertext */
message: Message
) => void): this
/** Emitted when a message is deleted for everyone in the chat */ /** Emitted when a message is deleted for everyone in the chat */
on(event: 'message_revoke_everyone', listener: ( on(event: 'message_revoke_everyone', listener: (
@ -647,6 +653,7 @@ declare namespace WAWebJS {
AUTHENTICATION_FAILURE = 'auth_failure', AUTHENTICATION_FAILURE = 'auth_failure',
READY = 'ready', READY = 'ready',
MESSAGE_RECEIVED = 'message', MESSAGE_RECEIVED = 'message',
MESSAGE_CIPHERTEXT = 'message_ciphertext',
MESSAGE_CREATE = 'message_create', MESSAGE_CREATE = 'message_create',
MESSAGE_REVOKED_EVERYONE = 'message_revoke_everyone', MESSAGE_REVOKED_EVERYONE = 'message_revoke_everyone',
MESSAGE_REVOKED_ME = 'message_revoke_me', MESSAGE_REVOKED_ME = 'message_revoke_me',

View file

@ -43,6 +43,7 @@ const NoAuth = require('./authStrategies/NoAuth');
* @fires Client#message_create * @fires Client#message_create
* @fires Client#message_revoke_me * @fires Client#message_revoke_me
* @fires Client#message_revoke_everyone * @fires Client#message_revoke_everyone
* @fires Client#message_ciphertext
* @fires Client#message_edit * @fires Client#message_edit
* @fires Client#media_uploaded * @fires Client#media_uploaded
* @fires Client#group_join * @fires Client#group_join
@ -659,6 +660,16 @@ class Client extends EventEmitter {
*/ */
this.emit(Events.MESSAGE_EDIT, new Message(this, msg), newBody, prevBody); this.emit(Events.MESSAGE_EDIT, new Message(this, msg), newBody, prevBody);
}); });
await page.exposeFunction('onAddMessageCiphertextEvent', msg => {
/**
* Emitted when messages are edited
* @event Client#message_ciphertext
* @param {Message} message
*/
this.emit(Events.MESSAGE_CIPHERTEXT, new Message(this, msg));
});
await page.evaluate(() => { await page.evaluate(() => {
window.Store.Msg.on('change', (msg) => { window.onChangeMessageEvent(window.WWebJS.getMessageModel(msg)); }); window.Store.Msg.on('change', (msg) => { window.onChangeMessageEvent(window.WWebJS.getMessageModel(msg)); });
@ -677,6 +688,7 @@ class Client extends EventEmitter {
if(msg.type === 'ciphertext') { if(msg.type === 'ciphertext') {
// defer message event until ciphertext is resolved (type changed) // defer message event until ciphertext is resolved (type changed)
msg.once('change:type', (_msg) => window.onAddMessageEvent(window.WWebJS.getMessageModel(_msg))); msg.once('change:type', (_msg) => window.onAddMessageEvent(window.WWebJS.getMessageModel(_msg)));
window.onAddMessageCiphertextEvent(window.WWebJS.getMessageModel(msg));
} else { } else {
window.onAddMessageEvent(window.WWebJS.getMessageModel(msg)); window.onAddMessageEvent(window.WWebJS.getMessageModel(msg));
} }

View file

@ -44,6 +44,7 @@ exports.Events = {
CHAT_REMOVED: 'chat_removed', CHAT_REMOVED: 'chat_removed',
CHAT_ARCHIVED: 'chat_archived', CHAT_ARCHIVED: 'chat_archived',
MESSAGE_RECEIVED: 'message', MESSAGE_RECEIVED: 'message',
MESSAGE_CIPHERTEXT: 'message_ciphertext',
MESSAGE_CREATE: 'message_create', MESSAGE_CREATE: 'message_create',
MESSAGE_REVOKED_EVERYONE: 'message_revoke_everyone', MESSAGE_REVOKED_EVERYONE: 'message_revoke_everyone',
MESSAGE_REVOKED_ME: 'message_revoke_me', MESSAGE_REVOKED_ME: 'message_revoke_me',