Merge pull request #232 from rreuvekamp/fix_228

Set RestrictMessageSending in portal create+update
This commit is contained in:
Tulir Asokan 2020-10-24 16:53:46 +03:00 committed by GitHub
commit cccaa62a20
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 3 deletions

View file

@ -514,6 +514,9 @@ func (portal *Portal) UpdateMetadata(user *User) bool {
update := false
update = portal.UpdateName(metadata.Name, metadata.NameSetBy, false) || update
update = portal.UpdateTopic(metadata.Topic, metadata.TopicSetBy, false) || update
portal.RestrictMessageSending(metadata.Announce)
return update
}
@ -640,11 +643,17 @@ func (portal *Portal) RestrictMessageSending(restrict bool) {
if err != nil {
levels = portal.GetBasePowerLevels()
}
newLevel := 0
if restrict {
levels.EventsDefault = 50
} else {
levels.EventsDefault = 0
newLevel = 50
}
if levels.EventsDefault == newLevel {
return
}
levels.EventsDefault = newLevel
_, err = portal.MainIntent().SetPowerLevels(portal.MXID, levels)
if err != nil {
portal.log.Errorln("Failed to change power levels:", err)
@ -954,6 +963,7 @@ func (portal *Portal) CreateMatrixRoom(user *User) error {
}
bridgeInfoStateKey, bridgeInfo := portal.getBridgeInfo()
initialState := []*event.Event{{
Type: event.StatePowerLevels,
Content: event.Content{
@ -1021,6 +1031,9 @@ func (portal *Portal) CreateMatrixRoom(user *User) error {
if metadata != nil {
portal.SyncParticipants(metadata)
if metadata.Announce {
portal.RestrictMessageSending(metadata.Announce)
}
} else {
customPuppet := portal.bridge.GetPuppetByCustomMXID(user.MXID)
if customPuppet != nil && customPuppet.CustomIntent() != nil {

View file

@ -84,6 +84,8 @@ type GroupInfo struct {
NameSetTime int64 `json:"subjectTime"`
NameSetBy string `json:"subjectOwner"`
Announce bool `json:"announce"` // Can only admins send messages?
Topic string `json:"desc"`
TopicID string `json:"descId"`
TopicSetAt int64 `json:"descTime"`