From 3efd3e00ca64b795a6e1f7581aaf260880a09202 Mon Sep 17 00:00:00 2001 From: Bob <115008575+bobslavtriev@users.noreply.github.com> Date: Fri, 19 Jan 2024 12:59:57 -0300 Subject: [PATCH] feat: memberAddMode and joinApprovalMode in groups.update (#532) * feat: memberAddMode and joinApprovalMode * feat: memberAddMode and joinApprovalMode * Update process-message.ts * fix lint * Update messages-recv.ts * Update GroupMetadata.ts * Update messages-recv.ts * Update messages-recv.ts * chore: fix linting and code efficiency * fix lint * Fix lint * Update process-message.ts * Update process-message.ts --------- Co-authored-by: Bob <115008575+FortisEtMagnus@users.noreply.github.com> Co-authored-by: Bob <115008575+bobpetrov@users.noreply.github.com> Co-authored-by: Rajeh Taher --- src/Socket/messages-recv.ts | 16 ++++++++++++++++ src/Types/GroupMetadata.ts | 2 ++ src/Utils/process-message.ts | 8 ++++++++ 3 files changed, 26 insertions(+) diff --git a/src/Socket/messages-recv.ts b/src/Socket/messages-recv.ts index 50e1644..e9c4cfa 100644 --- a/src/Socket/messages-recv.ts +++ b/src/Socket/messages-recv.ts @@ -299,6 +299,22 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => { case 'invite': msg.messageStubType = WAMessageStubType.GROUP_CHANGE_INVITE_LINK msg.messageStubParameters = [ child.attrs.code ] + break + case 'member_add_mode': + const addMode = child.content + if(addMode) { + msg.messageStubType = WAMessageStubType.GROUP_MEMBER_ADD_MODE + msg.messageStubParameters = [ addMode.toString() ] + } + + break + case 'membership_approval_mode': + const approvalMode: any = getBinaryNodeChild(child, 'group_join') + if(approvalMode) { + msg.messageStubType = WAMessageStubType.GROUP_MEMBERSHIP_JOIN_APPROVAL_MODE + msg.messageStubParameters = [ approvalMode.attrs.state ] + } + break } } diff --git a/src/Types/GroupMetadata.ts b/src/Types/GroupMetadata.ts index bcb8f4a..d5b870c 100644 --- a/src/Types/GroupMetadata.ts +++ b/src/Types/GroupMetadata.ts @@ -34,6 +34,8 @@ export interface GroupMetadata { inviteCode?: string /** the person who added you */ author?: string + /** if approval is needed to join the group */ + joinApprovalMode?: boolean } diff --git a/src/Utils/process-message.ts b/src/Utils/process-message.ts index b666fbf..1d2ecf5 100644 --- a/src/Utils/process-message.ts +++ b/src/Utils/process-message.ts @@ -349,6 +349,14 @@ const processMessage = async( const code = message.messageStubParameters?.[0] emitGroupUpdate({ inviteCode: code }) break + case WAMessageStubType.GROUP_MEMBER_ADD_MODE: + const memberAddValue = message.messageStubParameters?.[0] + emitGroupUpdate({ memberAddMode: memberAddValue === 'all_member_add' }) + break + case WAMessageStubType.GROUP_MEMBERSHIP_JOIN_APPROVAL_MODE: + const approvalMode = message.messageStubParameters?.[0] + emitGroupUpdate({ joinApprovalMode: approvalMode === 'on' }) + break } } else if(content?.pollUpdateMessage) { const creationMsgKey = content.pollUpdateMessage.pollCreationMessageKey!