Skip to content

Commit

Permalink
feat(feature/poll-v3): initial/final commit (#957)
Browse files Browse the repository at this point in the history
  • Loading branch information
purpshell authored Aug 14, 2024
1 parent 07742e6 commit e915010
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 1 deletion.
1 change: 1 addition & 0 deletions src/Types/Message.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ export type PollMessageOptions = {
values: string[]
/** 32 byte message secret to encrypt poll selections */
messageSecret?: Uint8Array
toAnnouncementGroup?: boolean
}

type SharePhoneNumber = {
Expand Down
16 changes: 15 additions & 1 deletion src/Utils/messages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -435,6 +435,7 @@ export const generateWAMessageContent = async(
m.listResponseMessage = { ...message.listReply }
} else if('poll' in message) {
message.poll.selectableCount ||= 0
message.poll.toAnnouncementGroup ||= false

if(!Array.isArray(message.poll.values)) {
throw new Boom('Invalid poll values', { statusCode: 400 })
Expand All @@ -455,11 +456,24 @@ export const generateWAMessageContent = async(
messageSecret: message.poll.messageSecret || randomBytes(32),
}

m.pollCreationMessage = {
const pollCreationMessage = {
name: message.poll.name,
selectableOptionsCount: message.poll.selectableCount,
options: message.poll.values.map(optionName => ({ optionName })),
}

if (message.poll.toAnnouncementGroup) {
// poll v2 is for community announcement groups (single select and multiple)
m.pollCreationMessageV2 = pollCreationMessage
} else {
if(message.poll.selectableCount > 0) {
//poll v3 is for single select polls
m.pollCreationMessageV3 = pollCreationMessage
} else {
// poll v3 for multiple choice polls
m.pollCreationMessage = pollCreationMessage
}
}
} else if('sharePhoneNumber' in message) {
m.protocolMessage = {
type: proto.Message.ProtocolMessage.Type.SHARE_PHONE_NUMBER
Expand Down

0 comments on commit e915010

Please sign in to comment.