88 "go.mau.fi/util/jsontime"
99 "go.mau.fi/util/ptr"
1010 "maunium.net/go/mautrix/bridgev2"
11+ "maunium.net/go/mautrix/bridgev2/database"
1112 "maunium.net/go/mautrix/event"
1213
1314 "go.mau.fi/mautrix-whatsapp/pkg/waid"
@@ -161,6 +162,16 @@ var whatsappCaps = &event.RoomFeatures{
161162 MaxSize : WAMaxFileSize ,
162163 },
163164 },
165+ State : event.StateFeatureMap {
166+ event .StateRoomName .Type : event .CapLevelFullySupported ,
167+ event .StateRoomAvatar .Type : event .CapLevelFullySupported ,
168+ event .StateTopic .Type : event .CapLevelFullySupported ,
169+ },
170+ MemberActions : event.MemberFeatureMap {
171+ event .MemberActionInvite : event .CapLevelFullySupported ,
172+ event .MemberActionKick : event .CapLevelFullySupported ,
173+ event .MemberActionLeave : event .CapLevelFullySupported ,
174+ },
164175 MaxTextLength : MaxTextLength ,
165176 LocationMessage : event .CapLevelFullySupported ,
166177 Poll : event .CapLevelFullySupported ,
@@ -179,9 +190,16 @@ var whatsappCaps = &event.RoomFeatures{
179190 DeleteChat : true ,
180191}
181192
193+ var whatsappDMCaps * event.RoomFeatures
182194var whatsappCAGCaps * event.RoomFeatures
183195
184196func init () {
197+ whatsappDMCaps = ptr .Clone (whatsappCaps )
198+ whatsappDMCaps .ID = capID () + "+dm"
199+ whatsappDMCaps .State = event.StateFeatureMap {
200+ event .StateBeeperDisappearingTimer .Type : event .CapLevelFullySupported ,
201+ }
202+ whatsappDMCaps .MemberActions = nil
185203 whatsappCAGCaps = ptr .Clone (whatsappCaps )
186204 whatsappCAGCaps .ID = capID () + "+cag"
187205 whatsappCAGCaps .Reply = event .CapLevelUnsupported
@@ -191,6 +209,8 @@ func init() {
191209func (wa * WhatsAppClient ) GetCapabilities (ctx context.Context , portal * bridgev2.Portal ) * event.RoomFeatures {
192210 if portal .Metadata .(* waid.PortalMetadata ).CommunityAnnouncementGroup {
193211 return whatsappCAGCaps
212+ } else if portal .RoomType == database .RoomTypeDM {
213+ return whatsappDMCaps
194214 }
195215 return whatsappCaps
196216}
0 commit comments