mirror of
https://github.com/cheveguerra/whatsapp-web.js.git
synced 2026-04-18 03:29:14 +00:00
feat: load reactions in message (#1897)
* msg find reactions * reaction list * return hasReaction only true or false --------- Co-authored-by: Rajeh Taher <rajeh@reforward.dev>
This commit is contained in:
@@ -5,7 +5,8 @@ const MessageMedia = require('./MessageMedia');
|
||||
const Location = require('./Location');
|
||||
const Order = require('./Order');
|
||||
const Payment = require('./Payment');
|
||||
const { MessageTypes } = require('../util/Constants');
|
||||
const Reaction = require('./Reaction');
|
||||
const {MessageTypes} = require('../util/Constants');
|
||||
|
||||
/**
|
||||
* Represents a Message on WhatsApp
|
||||
@@ -134,6 +135,12 @@ class Message extends Base {
|
||||
*/
|
||||
this.hasQuotedMsg = data.quotedMsg ? true : false;
|
||||
|
||||
/**
|
||||
* Indicates whether there are reactions to the message
|
||||
* @type {boolean}
|
||||
*/
|
||||
this.hasReaction = data.hasReaction ? true : false;
|
||||
|
||||
/**
|
||||
* Indicates the duration of the message in seconds
|
||||
* @type {string}
|
||||
@@ -529,6 +536,44 @@ class Message extends Base {
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Reaction List
|
||||
* @typedef {Object} ReactionList
|
||||
* @property {string} id Original emoji
|
||||
* @property {string} aggregateEmoji aggregate emoji
|
||||
* @property {boolean} hasReactionByMe Flag who sent the reaction
|
||||
* @property {Array<Reaction>} senders Reaction senders, to this message
|
||||
*/
|
||||
|
||||
/**
|
||||
* Gets the reactions associated with the given message
|
||||
* @return {Promise<ReactionList[]>}
|
||||
*/
|
||||
async getReactions() {
|
||||
if (!this.hasReaction) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const reactions = await this.client.pupPage.evaluate(async (msgId) => {
|
||||
const msgReactions = await window.Store.Reactions.find(msgId);
|
||||
if (!msgReactions || !msgReactions.reactions.length) return null;
|
||||
return msgReactions.reactions.serialize();
|
||||
}, this.id._serialized);
|
||||
|
||||
if (!reactions) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
return reactions.map(reaction => {
|
||||
reaction.senders = reaction.senders.map(sender => {
|
||||
sender.timestamp = Math.round(sender.timestamp / 1000);
|
||||
return new Reaction(this.client, sender);
|
||||
});
|
||||
return reaction;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Message;
|
||||
|
||||
Reference in New Issue
Block a user