Skip to content

Commit

Permalink
parse notification levels
Browse files Browse the repository at this point in the history
  • Loading branch information
Pestdoktor committed Oct 2, 2020
1 parent 9ebd74e commit 8fe5323
Showing 1 changed file with 22 additions and 9 deletions.
31 changes: 22 additions & 9 deletions eventcontent.go
Original file line number Diff line number Diff line change
Expand Up @@ -332,6 +332,11 @@ func (c *PowerLevelContent) Defaults() {
// https://github.com/matrix-org/synapse/blob/v0.18.5/synapse/api/auth.py#L991
c.EventsDefault = 0
c.StateDefault = 50
// Default room notification level is 50
// https://matrix.org/docs/spec/client_server/r0.6.1#m-room-power-levels
c.Notifications = map[string]int64{
"room": 50,
}

}

Expand All @@ -343,15 +348,16 @@ func NewPowerLevelContentFromEvent(event Event) (c PowerLevelContent, err error)
// We can't extract the JSON directly to the powerLevelContent because we
// need to convert string values to int values.
var content struct {
InviteLevel levelJSONValue `json:"invite"`
BanLevel levelJSONValue `json:"ban"`
KickLevel levelJSONValue `json:"kick"`
RedactLevel levelJSONValue `json:"redact"`
UserLevels map[string]levelJSONValue `json:"users"`
UsersDefaultLevel levelJSONValue `json:"users_default"`
EventLevels map[string]levelJSONValue `json:"events"`
StateDefaultLevel levelJSONValue `json:"state_default"`
EventDefaultLevel levelJSONValue `json:"event_default"`
InviteLevel levelJSONValue `json:"invite"`
BanLevel levelJSONValue `json:"ban"`
KickLevel levelJSONValue `json:"kick"`
RedactLevel levelJSONValue `json:"redact"`
UserLevels map[string]levelJSONValue `json:"users"`
UsersDefaultLevel levelJSONValue `json:"users_default"`
EventLevels map[string]levelJSONValue `json:"events"`
StateDefaultLevel levelJSONValue `json:"state_default"`
EventDefaultLevel levelJSONValue `json:"event_default"`
NotificationLevels map[string]levelJSONValue `json:"notifications"`
}
if err = json.Unmarshal(event.Content(), &content); err != nil {
err = errorf("unparsable power_levels event content: %s", err.Error())
Expand Down Expand Up @@ -381,6 +387,13 @@ func NewPowerLevelContentFromEvent(event Event) (c PowerLevelContent, err error)
c.Events[k] = v.value
}

for k, v := range content.NotificationLevels {
if c.Notifications == nil {
c.Notifications = make(map[string]int64)
}
c.Notifications[k] = v.value
}

return
}

Expand Down

0 comments on commit 8fe5323

Please sign in to comment.