Skip to content

Commit

Permalink
types: add join approval mode to group info structs (#546)
Browse files Browse the repository at this point in the history
  • Loading branch information
viniciusgdr authored Sep 24, 2024
1 parent 705b718 commit d5cecea
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 1 deletion.
11 changes: 10 additions & 1 deletion group.go
Original file line number Diff line number Diff line change
Expand Up @@ -439,6 +439,10 @@ func (cli *Client) JoinGroupWithLink(code string) (types.JID, error) {
} else if err != nil {
return types.EmptyJID, err
}
membershipApprovalModeNode, ok := resp.GetOptionalChildByTag("membership_approval_request")
if ok {
return membershipApprovalModeNode.AttrGetter().JID("jid"), nil
}
groupNode, ok := resp.GetOptionalChildByTag("group")
if !ok {
return types.EmptyJID, &ElementMissingError{Tag: "group", In: "response to group link join query"}
Expand Down Expand Up @@ -640,7 +644,8 @@ func (cli *Client) parseGroupNode(groupNode *waBinary.Node) (*types.GroupInfo, e
group.DefaultMembershipApprovalMode = childAG.OptionalString("default_membership_approval_mode")
case "incognito":
group.IsIncognito = true
// TODO: membership_approval_mode
case "membership_approval_mode":
group.IsJoinApprovalRequired = true
default:
cli.Log.Debugf("Unknown element in group node %s: %s", group.JID.String(), child.XMLString())
}
Expand Down Expand Up @@ -810,6 +815,10 @@ func (cli *Client) parseGroupChange(node *waBinary.Node) (*events.GroupInfo, err
if err != nil {
return nil, fmt.Errorf("failed to parse group unlink node in group change: %w", err)
}
case "membership_approval_mode":
evt.MembershipApprovalMode = &types.GroupMembershipApprovalMode{
IsJoinApprovalRequired: true,
}
default:
evt.UnknownChanges = append(evt.UnknownChanges, &child)
}
Expand Down
2 changes: 2 additions & 0 deletions types/events/events.go
Original file line number Diff line number Diff line change
Expand Up @@ -433,6 +433,8 @@ type GroupInfo struct {
Announce *types.GroupAnnounce // Group announce status change (can only admins send messages?)
Ephemeral *types.GroupEphemeral // Disappearing messages change

MembershipApprovalMode *types.GroupMembershipApprovalMode // Membership approval mode change

Delete *types.GroupDelete

Link *types.GroupLinkChange
Expand Down
5 changes: 5 additions & 0 deletions types/group.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ type GroupInfo struct {
GroupParent
GroupLinkedParent
GroupIsDefaultSub
GroupMembershipApprovalMode

GroupCreated time.Time

Expand All @@ -41,6 +42,10 @@ type GroupInfo struct {
MemberAddMode GroupMemberAddMode
}

type GroupMembershipApprovalMode struct {
IsJoinApprovalRequired bool
}

type GroupParent struct {
IsParent bool
DefaultMembershipApprovalMode string // request_required
Expand Down

0 comments on commit d5cecea

Please sign in to comment.