@@ -439,6 +439,10 @@ func (cli *Client) JoinGroupWithLink(code string) (types.JID, error) {
439
439
} else if err != nil {
440
440
return types .EmptyJID , err
441
441
}
442
+ membershipApprovalModeNode , ok := resp .GetOptionalChildByTag ("membership_approval_request" )
443
+ if ok {
444
+ return membershipApprovalModeNode .AttrGetter ().JID ("jid" ), nil
445
+ }
442
446
groupNode , ok := resp .GetOptionalChildByTag ("group" )
443
447
if ! ok {
444
448
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
640
644
group .DefaultMembershipApprovalMode = childAG .OptionalString ("default_membership_approval_mode" )
641
645
case "incognito" :
642
646
group .IsIncognito = true
643
- // TODO: membership_approval_mode
647
+ case "membership_approval_mode" :
648
+ group .IsJoinApprovalRequired = true
644
649
default :
645
650
cli .Log .Debugf ("Unknown element in group node %s: %s" , group .JID .String (), child .XMLString ())
646
651
}
@@ -810,6 +815,10 @@ func (cli *Client) parseGroupChange(node *waBinary.Node) (*events.GroupInfo, err
810
815
if err != nil {
811
816
return nil , fmt .Errorf ("failed to parse group unlink node in group change: %w" , err )
812
817
}
818
+ case "membership_approval_mode" :
819
+ evt .MembershipApprovalMode = & types.GroupMembershipApprovalMode {
820
+ IsJoinApprovalRequired : true ,
821
+ }
813
822
default :
814
823
evt .UnknownChanges = append (evt .UnknownChanges , & child )
815
824
}
0 commit comments