mirror of
https://github.com/mautrix/whatsapp.git
synced 2026-11-13 01:29:18 -05:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b744b1f7e3 | ||
|
|
63b2466b24 |
1 changed files with 16 additions and 10 deletions
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"maps"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/rs/zerolog"
|
"github.com/rs/zerolog"
|
||||||
|
|
@ -244,6 +245,13 @@ const (
|
||||||
defaultPL = 0
|
defaultPL = 0
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var alwaysAllowedGroupEvents = map[event.Type]int{
|
||||||
|
event.EventEncrypted: defaultPL, // Need to always allow encrypted events for poll responses
|
||||||
|
event.EventReaction: defaultPL,
|
||||||
|
event.EventRedaction: defaultPL,
|
||||||
|
event.EventUnstablePollResponse: defaultPL,
|
||||||
|
}
|
||||||
|
|
||||||
func setDefaultSubGroupFlag(isCommunityAnnouncementGroup bool) bridgev2.ExtraUpdater[*bridgev2.Portal] {
|
func setDefaultSubGroupFlag(isCommunityAnnouncementGroup bool) bridgev2.ExtraUpdater[*bridgev2.Portal] {
|
||||||
return func(_ context.Context, portal *bridgev2.Portal) bool {
|
return func(_ context.Context, portal *bridgev2.Portal) bool {
|
||||||
meta := portal.Metadata.(*waid.PortalMetadata)
|
meta := portal.Metadata.(*waid.PortalMetadata)
|
||||||
|
|
@ -311,10 +319,6 @@ func (wa *WhatsAppClient) wrapGroupInfo(ctx context.Context, info *types.GroupIn
|
||||||
event.StateRoomName: metaChangePL,
|
event.StateRoomName: metaChangePL,
|
||||||
event.StateRoomAvatar: metaChangePL,
|
event.StateRoomAvatar: metaChangePL,
|
||||||
event.StateTopic: metaChangePL,
|
event.StateTopic: metaChangePL,
|
||||||
event.EventEncrypted: defaultPL, // Need to always allow encrypted events for poll responses
|
|
||||||
event.EventReaction: defaultPL,
|
|
||||||
event.EventRedaction: defaultPL,
|
|
||||||
event.EventUnstablePollResponse: defaultPL,
|
|
||||||
event.StateBeeperDisappearingTimer: metaChangePL,
|
event.StateBeeperDisappearingTimer: metaChangePL,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
@ -326,6 +330,7 @@ func (wa *WhatsAppClient) wrapGroupInfo(ctx context.Context, info *types.GroupIn
|
||||||
},
|
},
|
||||||
ExtraUpdates: extraUpdater,
|
ExtraUpdates: extraUpdater,
|
||||||
}
|
}
|
||||||
|
maps.Copy(wrapped.Members.PowerLevels.Events, alwaysAllowedGroupEvents)
|
||||||
var hasSelf bool
|
var hasSelf bool
|
||||||
for _, pcp := range info.Participants {
|
for _, pcp := range info.Participants {
|
||||||
member := bridgev2.ChatMember{
|
member := bridgev2.ChatMember{
|
||||||
|
|
@ -436,24 +441,25 @@ func (wa *WhatsAppClient) wrapGroupInfoChange(ctx context.Context, evt *events.G
|
||||||
if memberChanges == nil {
|
if memberChanges == nil {
|
||||||
memberChanges = &bridgev2.ChatMemberList{}
|
memberChanges = &bridgev2.ChatMemberList{}
|
||||||
}
|
}
|
||||||
memberChanges.PowerLevels = &bridgev2.PowerLevelOverrides{}
|
memberChanges.PowerLevels = &bridgev2.PowerLevelOverrides{
|
||||||
|
Events: make(map[event.Type]int),
|
||||||
|
}
|
||||||
if evt.Announce != nil {
|
if evt.Announce != nil {
|
||||||
if evt.Announce.IsAnnounce {
|
if evt.Announce.IsAnnounce {
|
||||||
memberChanges.PowerLevels.EventsDefault = ptr.Ptr(adminPL)
|
memberChanges.PowerLevels.EventsDefault = ptr.Ptr(adminPL)
|
||||||
} else {
|
} else {
|
||||||
memberChanges.PowerLevels.EventsDefault = ptr.Ptr(defaultPL)
|
memberChanges.PowerLevels.EventsDefault = ptr.Ptr(defaultPL)
|
||||||
}
|
}
|
||||||
|
maps.Copy(memberChanges.PowerLevels.Events, alwaysAllowedGroupEvents)
|
||||||
}
|
}
|
||||||
if evt.Locked != nil {
|
if evt.Locked != nil {
|
||||||
metaChangePL := defaultPL
|
metaChangePL := defaultPL
|
||||||
if evt.Locked.IsLocked {
|
if evt.Locked.IsLocked {
|
||||||
metaChangePL = adminPL
|
metaChangePL = adminPL
|
||||||
}
|
}
|
||||||
memberChanges.PowerLevels.Events = map[event.Type]int{
|
memberChanges.PowerLevels.Events[event.StateRoomName] = metaChangePL
|
||||||
event.StateRoomName: metaChangePL,
|
memberChanges.PowerLevels.Events[event.StateRoomAvatar] = metaChangePL
|
||||||
event.StateRoomAvatar: metaChangePL,
|
memberChanges.PowerLevels.Events[event.StateTopic] = metaChangePL
|
||||||
event.StateTopic: metaChangePL,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return &bridgev2.ChatInfoChange{
|
return &bridgev2.ChatInfoChange{
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue