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) => {
// Fired whenever a message is deleted by anyone (including you)
console.log(after); // message after it was deleted.

7
index.d.ts vendored
View file

@ -305,6 +305,12 @@ declare namespace WAWebJS {
message: Message
) => 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 */
on(event: 'message_revoke_everyone', listener: (
/** The message that was revoked, in its current state. It will not contain the original message's data */
@ -647,6 +653,7 @@ declare namespace WAWebJS {
AUTHENTICATION_FAILURE = 'auth_failure',
READY = 'ready',
MESSAGE_RECEIVED = 'message',
MESSAGE_CIPHERTEXT = 'message_ciphertext',
MESSAGE_CREATE = 'message_create',
MESSAGE_REVOKED_EVERYONE = 'message_revoke_everyone',
MESSAGE_REVOKED_ME = 'message_revoke_me',

View file

@ -43,6 +43,7 @@ const NoAuth = require('./authStrategies/NoAuth');
* @fires Client#message_create
* @fires Client#message_revoke_me
* @fires Client#message_revoke_everyone
* @fires Client#message_ciphertext
* @fires Client#message_edit
* @fires Client#media_uploaded
* @fires Client#group_join
@ -660,6 +661,16 @@ class Client extends EventEmitter {
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(() => {
window.Store.Msg.on('change', (msg) => { window.onChangeMessageEvent(window.WWebJS.getMessageModel(msg)); });
window.Store.Msg.on('change:type', (msg) => { window.onChangeMessageTypeEvent(window.WWebJS.getMessageModel(msg)); });
@ -677,6 +688,7 @@ class Client extends EventEmitter {
if(msg.type === 'ciphertext') {
// defer message event until ciphertext is resolved (type changed)
msg.once('change:type', (_msg) => window.onAddMessageEvent(window.WWebJS.getMessageModel(_msg)));
window.onAddMessageCiphertextEvent(window.WWebJS.getMessageModel(msg));
} else {
window.onAddMessageEvent(window.WWebJS.getMessageModel(msg));
}

View file

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