feat: getPollVotes (#3807)

* Add required module

* Add getPollVotes function

* Add getPollVotes function

* Add getPollVotes function

* Add Message.getPollVotes

* Add Message.getPollVotes
This commit is contained in:
BenyFilho 2025-10-07 16:24:05 -03:00 • committed by GitHub
commit 7c7851f4d4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 41 additions and 0 deletions

7
index.d.ts vendored
View file

@ -306,6 +306,9 @@ declare namespace WAWebJS {
*/
transferChannelOwnership(channelId: string, newOwnerId: string, options?: TransferChannelOwnershipOptions): Promise<boolean>;
/** Get Poll Votes */
getPollVotes(messageId: string): Promise<PollVote[]>
/** Generic event */
on(event: string, listener: (...args: any) => void): this
@ -1192,6 +1195,10 @@ declare namespace WAWebJS {
* Gets the payment details associated with a given message
*/
getPayment: () => Promise<Payment>,
/**
* Get Poll Votes associated with the given message
*/
getPollVotes: () => Promise<PollVote[]>,
/**
* Gets the reactions associated with the given message
*/

View file

@ -2414,6 +2414,32 @@ class Client extends EventEmitter {
return serialized;
}, userId);
}
/**
* Get Poll Votes
* @param {string} messageId
* @return {Promise<Array<PollVote>>}
*/
async getPollVotes(messageId) {
const msg = await this.getMessageById(messageId);
if (!msg) return [];
if (msg.type != 'poll_creation') throw 'Invalid usage! Can only be used with a pollCreation message';
const pollVotes = await this.pupPage.evaluate( async (msg) => {
const msgKey = window.Store.MsgKey.fromString(msg.id._serialized);
let pollVotes = await window.Store.PollsVotesSchema.getTable().equals(['parentMsgKey'], msgKey.toString());
return pollVotes.map(item => {
const typedArray = new Uint8Array(item.selectedOptionLocalIds);
return {
...item,
selectedOptionLocalIds: Array.from(typedArray)
};
});
}, msg);
return pollVotes.map((pollVote) => new PollVote(this.client, {...pollVote, parentMessage: msg}));
}
}
module.exports = Client;

View file

@ -742,6 +742,13 @@ class Message extends Base {
return edittedEventMsg && new Message(this.client, edittedEventMsg);
}
/**
* Returns the PollVote this poll message
* @returns {Promise<PollVote[]>}
*/
async getPollVotes() {
return await this.client.getPollVotes(this.id._serialized);
}
}
module.exports = Message;

View file

@ -103,6 +103,7 @@ exports.ExposeStore = () => {
window.Store.FindOrCreateChat = window.require('WAWebFindChatAction');
window.Store.CustomerNoteUtils = window.require('WAWebNoteAction');
window.Store.BusinessGatingUtils = window.require('WAWebBizGatingUtils');
window.Store.PollsVotesSchema = require('WAWebPollsVotesSchema');
window.Store.Settings = {
...window.require('WAWebUserPrefsGeneral'),