Skip to content

Commit d5cecea

Browse files
authored
types: add join approval mode to group info structs (#546)
1 parent 705b718 commit d5cecea

File tree

3 files changed

+17
-1
lines changed

3 files changed

+17
-1
lines changed

group.go

+10-1
Original file line numberDiff line numberDiff line change
@@ -439,6 +439,10 @@ func (cli *Client) JoinGroupWithLink(code string) (types.JID, error) {
439439
} else if err != nil {
440440
return types.EmptyJID, err
441441
}
442+
membershipApprovalModeNode, ok := resp.GetOptionalChildByTag("membership_approval_request")
443+
if ok {
444+
return membershipApprovalModeNode.AttrGetter().JID("jid"), nil
445+
}
442446
groupNode, ok := resp.GetOptionalChildByTag("group")
443447
if !ok {
444448
return types.EmptyJID, &ElementMissingError{Tag: "group", In: "response to group link join query"}
@@ -640,7 +644,8 @@ func (cli *Client) parseGroupNode(groupNode *waBinary.Node) (*types.GroupInfo, e
640644
group.DefaultMembershipApprovalMode = childAG.OptionalString("default_membership_approval_mode")
641645
case "incognito":
642646
group.IsIncognito = true
643-
// TODO: membership_approval_mode
647+
case "membership_approval_mode":
648+
group.IsJoinApprovalRequired = true
644649
default:
645650
cli.Log.Debugf("Unknown element in group node %s: %s", group.JID.String(), child.XMLString())
646651
}
@@ -810,6 +815,10 @@ func (cli *Client) parseGroupChange(node *waBinary.Node) (*events.GroupInfo, err
810815
if err != nil {
811816
return nil, fmt.Errorf("failed to parse group unlink node in group change: %w", err)
812817
}
818+
case "membership_approval_mode":
819+
evt.MembershipApprovalMode = &types.GroupMembershipApprovalMode{
820+
IsJoinApprovalRequired: true,
821+
}
813822
default:
814823
evt.UnknownChanges = append(evt.UnknownChanges, &child)
815824
}

types/events/events.go

+2
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,8 @@ type GroupInfo struct {
433433
Announce *types.GroupAnnounce // Group announce status change (can only admins send messages?)
434434
Ephemeral *types.GroupEphemeral // Disappearing messages change
435435

436+
MembershipApprovalMode *types.GroupMembershipApprovalMode // Membership approval mode change
437+
436438
Delete *types.GroupDelete
437439

438440
Link *types.GroupLinkChange

types/group.go

+5
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ type GroupInfo struct {
3232
GroupParent
3333
GroupLinkedParent
3434
GroupIsDefaultSub
35+
GroupMembershipApprovalMode
3536

3637
GroupCreated time.Time
3738

@@ -41,6 +42,10 @@ type GroupInfo struct {
4142
MemberAddMode GroupMemberAddMode
4243
}
4344

45+
type GroupMembershipApprovalMode struct {
46+
IsJoinApprovalRequired bool
47+
}
48+
4449
type GroupParent struct {
4550
IsParent bool
4651
DefaultMembershipApprovalMode string // request_required

0 commit comments

Comments
 (0)