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:
parent
87a310a2de
commit
7c7851f4d4
4 changed files with 41 additions and 0 deletions
7
index.d.ts
vendored
7
index.d.ts
vendored
|
|
@ -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
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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'),
|
||||
|
|
|
|||
Loading…
Reference in a new issue