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:
tofers
2023-04-01 17:03:21 +03:00
committed by GitHub
parent c44af204a1
commit 780005a81a
2 changed files with 60 additions and 1 deletions

View File

@@ -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;