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>;
|
transferChannelOwnership(channelId: string, newOwnerId: string, options?: TransferChannelOwnershipOptions): Promise<boolean>;
|
||||||
|
|
||||||
|
/** Get Poll Votes */
|
||||||
|
getPollVotes(messageId: string): Promise<PollVote[]>
|
||||||
|
|
||||||
/** Generic event */
|
/** Generic event */
|
||||||
on(event: string, listener: (...args: any) => void): this
|
on(event: string, listener: (...args: any) => void): this
|
||||||
|
|
||||||
|
|
@ -1192,6 +1195,10 @@ declare namespace WAWebJS {
|
||||||
* Gets the payment details associated with a given message
|
* Gets the payment details associated with a given message
|
||||||
*/
|
*/
|
||||||
getPayment: () => Promise<Payment>,
|
getPayment: () => Promise<Payment>,
|
||||||
|
/**
|
||||||
|
* Get Poll Votes associated with the given message
|
||||||
|
*/
|
||||||
|
getPollVotes: () => Promise<PollVote[]>,
|
||||||
/**
|
/**
|
||||||
* Gets the reactions associated with the given message
|
* Gets the reactions associated with the given message
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -2414,6 +2414,32 @@ class Client extends EventEmitter {
|
||||||
return serialized;
|
return serialized;
|
||||||
}, userId);
|
}, 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;
|
module.exports = Client;
|
||||||
|
|
|
||||||
|
|
@ -742,6 +742,13 @@ class Message extends Base {
|
||||||
|
|
||||||
return edittedEventMsg && new Message(this.client, edittedEventMsg);
|
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;
|
module.exports = Message;
|
||||||
|
|
|
||||||
|
|
@ -103,6 +103,7 @@ exports.ExposeStore = () => {
|
||||||
window.Store.FindOrCreateChat = window.require('WAWebFindChatAction');
|
window.Store.FindOrCreateChat = window.require('WAWebFindChatAction');
|
||||||
window.Store.CustomerNoteUtils = window.require('WAWebNoteAction');
|
window.Store.CustomerNoteUtils = window.require('WAWebNoteAction');
|
||||||
window.Store.BusinessGatingUtils = window.require('WAWebBizGatingUtils');
|
window.Store.BusinessGatingUtils = window.require('WAWebBizGatingUtils');
|
||||||
|
window.Store.PollsVotesSchema = require('WAWebPollsVotesSchema');
|
||||||
|
|
||||||
window.Store.Settings = {
|
window.Store.Settings = {
|
||||||
...window.require('WAWebUserPrefsGeneral'),
|
...window.require('WAWebUserPrefsGeneral'),
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue