mirror of
https://github.com/matrix-org/dendrite.git
synced 2026-01-16 10:33:11 -06:00
Fix updating powerlevel events
This commit is contained in:
parent
5cfc6e03f5
commit
ef22fedfd6
|
|
@ -350,6 +350,7 @@ func (p *PDUStreamProvider) addRoomDeltaToResponse(
|
||||||
// left. Anything that appears in the filtered timeline will be removed from the
|
// left. Anything that appears in the filtered timeline will be removed from the
|
||||||
// "state" section and kept in "timeline".
|
// "state" section and kept in "timeline".
|
||||||
|
|
||||||
|
// update the powerlevel event for timeline events
|
||||||
for i, ev := range events {
|
for i, ev := range events {
|
||||||
if ev.Version() != gomatrixserverlib.RoomVersionPseudoIDs {
|
if ev.Version() != gomatrixserverlib.RoomVersionPseudoIDs {
|
||||||
continue
|
continue
|
||||||
|
|
@ -371,7 +372,17 @@ func (p *PDUStreamProvider) addRoomDeltaToResponse(
|
||||||
)
|
)
|
||||||
delta.StateEvents = make([]*rstypes.HeaderedEvent, len(sEvents))
|
delta.StateEvents = make([]*rstypes.HeaderedEvent, len(sEvents))
|
||||||
for i := range sEvents {
|
for i := range sEvents {
|
||||||
delta.StateEvents[i] = sEvents[i].(*rstypes.HeaderedEvent)
|
ev := sEvents[i]
|
||||||
|
delta.StateEvents[i] = ev.(*rstypes.HeaderedEvent)
|
||||||
|
// update the powerlevel event for state events
|
||||||
|
if ev.Version() == gomatrixserverlib.RoomVersionPseudoIDs && ev.Type() == spec.MRoomPowerLevels && ev.StateKeyEquals("") {
|
||||||
|
var newEvent gomatrixserverlib.PDU
|
||||||
|
newEvent, err = p.updatePowerLevelEvent(ctx, ev.(*rstypes.HeaderedEvent))
|
||||||
|
if err != nil {
|
||||||
|
return r.From, err
|
||||||
|
}
|
||||||
|
delta.StateEvents[i] = newEvent.(*rstypes.HeaderedEvent)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(delta.StateEvents) > 0 {
|
if len(delta.StateEvents) > 0 {
|
||||||
|
|
@ -652,6 +663,7 @@ func (p *PDUStreamProvider) getJoinResponseForCompleteSync(
|
||||||
prevBatch.Decrement()
|
prevBatch.Decrement()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update powerlevel events for timeline events
|
||||||
for i, ev := range events {
|
for i, ev := range events {
|
||||||
if ev.Version() != gomatrixserverlib.RoomVersionPseudoIDs {
|
if ev.Version() != gomatrixserverlib.RoomVersionPseudoIDs {
|
||||||
continue
|
continue
|
||||||
|
|
@ -665,6 +677,20 @@ func (p *PDUStreamProvider) getJoinResponseForCompleteSync(
|
||||||
}
|
}
|
||||||
events[i] = &rstypes.HeaderedEvent{PDU: newEvent}
|
events[i] = &rstypes.HeaderedEvent{PDU: newEvent}
|
||||||
}
|
}
|
||||||
|
// Update powerlevel events for state events
|
||||||
|
for i, ev := range stateEvents {
|
||||||
|
if ev.Version() != gomatrixserverlib.RoomVersionPseudoIDs {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if ev.Type() != spec.MRoomPowerLevels || !ev.StateKeyEquals("") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
newEvent, err := p.updatePowerLevelEvent(ctx, ev)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
stateEvents[i] = &rstypes.HeaderedEvent{PDU: newEvent}
|
||||||
|
}
|
||||||
|
|
||||||
jr.Timeline.PrevBatch = prevBatch
|
jr.Timeline.PrevBatch = prevBatch
|
||||||
jr.Timeline.Events = synctypes.ToClientEvents(gomatrixserverlib.ToPDUs(events), synctypes.FormatSync, func(roomID spec.RoomID, senderID spec.SenderID) (*spec.UserID, error) {
|
jr.Timeline.Events = synctypes.ToClientEvents(gomatrixserverlib.ToPDUs(events), synctypes.FormatSync, func(roomID spec.RoomID, senderID spec.SenderID) (*spec.UserID, error) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue