mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-07 06:53:09 -06:00
Rearrange pseudoID power_levels user logic
This commit is contained in:
parent
1d992aea75
commit
3df55333b7
|
|
@ -347,25 +347,29 @@ func updatePowerLevelEvent(userIDForSender spec.UserIDForSender, se gomatrixserv
|
||||||
return se, nil
|
return se, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
pls, err := gomatrixserverlib.NewPowerLevelContentFromEvent(se)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
newPls := make(map[string]int64)
|
|
||||||
var userID *spec.UserID
|
|
||||||
for user, level := range pls.Users {
|
|
||||||
if eventFormat != FormatSyncFederation {
|
|
||||||
userID, err = userIDForSender(se.RoomID(), spec.SenderID(user))
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
user = userID.String()
|
|
||||||
}
|
|
||||||
newPls[user] = level
|
|
||||||
}
|
|
||||||
var newPlBytes []byte
|
|
||||||
newEv := se.JSON()
|
newEv := se.JSON()
|
||||||
if len(pls.Users) > 0 {
|
|
||||||
|
usersField := gjson.GetBytes(se.JSON(), "content.users")
|
||||||
|
if usersField.Exists() {
|
||||||
|
pls, err := gomatrixserverlib.NewPowerLevelContentFromEvent(se)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
newPls := make(map[string]int64)
|
||||||
|
var userID *spec.UserID
|
||||||
|
for user, level := range pls.Users {
|
||||||
|
if eventFormat != FormatSyncFederation {
|
||||||
|
userID, err = userIDForSender(se.RoomID(), spec.SenderID(user))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
user = userID.String()
|
||||||
|
}
|
||||||
|
newPls[user] = level
|
||||||
|
}
|
||||||
|
|
||||||
|
var newPlBytes []byte
|
||||||
newPlBytes, err = json.Marshal(newPls)
|
newPlBytes, err = json.Marshal(newPls)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
@ -377,34 +381,36 @@ func updatePowerLevelEvent(userIDForSender spec.UserIDForSender, se gomatrixserv
|
||||||
}
|
}
|
||||||
|
|
||||||
// do the same for prev content
|
// do the same for prev content
|
||||||
prevContent := gjson.GetBytes(se.JSON(), "unsigned.prev_content")
|
prevUsersField := gjson.GetBytes(se.JSON(), "unsigned.prev_content.users")
|
||||||
if !prevContent.Exists() {
|
if prevUsersField.Exists() {
|
||||||
var evNew gomatrixserverlib.PDU
|
prevContent := gjson.GetBytes(se.JSON(), "unsigned.prev_content")
|
||||||
evNew, err = gomatrixserverlib.MustGetRoomVersion(se.Version()).NewEventFromTrustedJSON(newEv, false)
|
if !prevContent.Exists() {
|
||||||
|
evNew, err := gomatrixserverlib.MustGetRoomVersion(se.Version()).NewEventFromTrustedJSON(newEv, false)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return evNew, err
|
||||||
|
}
|
||||||
|
pls := gomatrixserverlib.PowerLevelContent{}
|
||||||
|
err := json.Unmarshal([]byte(prevContent.Raw), &pls)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return evNew, err
|
newPls := make(map[string]int64)
|
||||||
}
|
for user, level := range pls.Users {
|
||||||
pls = gomatrixserverlib.PowerLevelContent{}
|
if eventFormat != FormatSyncFederation {
|
||||||
err = json.Unmarshal([]byte(prevContent.Raw), &pls)
|
userID, err := userIDForSender(se.RoomID(), spec.SenderID(user))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
user = userID.String()
|
||||||
newPls = make(map[string]int64)
|
|
||||||
for user, level := range pls.Users {
|
|
||||||
if eventFormat != FormatSyncFederation {
|
|
||||||
userID, err = userIDForSender(se.RoomID(), spec.SenderID(user))
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
}
|
||||||
user = userID.String()
|
newPls[user] = level
|
||||||
}
|
}
|
||||||
newPls[user] = level
|
|
||||||
}
|
var newPlBytes []byte
|
||||||
if len(pls.Users) > 0 {
|
|
||||||
newPlBytes, err = json.Marshal(newPls)
|
newPlBytes, err = json.Marshal(newPls)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
@ -415,8 +421,7 @@ func updatePowerLevelEvent(userIDForSender spec.UserIDForSender, se gomatrixserv
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var evNew gomatrixserverlib.PDU
|
evNew, err := gomatrixserverlib.MustGetRoomVersion(se.Version()).NewEventFromTrustedJSONWithEventID(se.EventID(), newEv, false)
|
||||||
evNew, err = gomatrixserverlib.MustGetRoomVersion(se.Version()).NewEventFromTrustedJSONWithEventID(se.EventID(), newEv, false)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue