mirror of
https://github.com/matrix-org/dendrite.git
synced 2026-01-16 18:43:10 -06:00
Reassign Visibility after sorting
This commit is contained in:
parent
de98703e15
commit
9a868641e5
|
|
@ -274,13 +274,20 @@ func (p *PDUStreamProvider) addRoomDeltaToResponse(
|
||||||
recentStreamEvents := dbEvents[delta.RoomID].Events
|
recentStreamEvents := dbEvents[delta.RoomID].Events
|
||||||
limited := dbEvents[delta.RoomID].Limited
|
limited := dbEvents[delta.RoomID].Limited
|
||||||
|
|
||||||
|
hisVisMap := map[string]gomatrixserverlib.HistoryVisibility{}
|
||||||
|
for _, re := range recentStreamEvents {
|
||||||
|
hisVisMap[re.EventID()] = re.Visibility
|
||||||
|
}
|
||||||
recEvents := gomatrixserverlib.HeaderedReverseTopologicalOrdering(
|
recEvents := gomatrixserverlib.HeaderedReverseTopologicalOrdering(
|
||||||
toEvents(snapshot.StreamEventsToEvents(device, recentStreamEvents)),
|
toEvents(snapshot.StreamEventsToEvents(device, recentStreamEvents)),
|
||||||
gomatrixserverlib.TopologicalOrderByPrevEvents,
|
gomatrixserverlib.TopologicalOrderByPrevEvents,
|
||||||
)
|
)
|
||||||
recentEvents := make([]*rstypes.HeaderedEvent, len(recEvents))
|
recentEvents := make([]*rstypes.HeaderedEvent, len(recEvents))
|
||||||
for i := range recEvents {
|
for i := range recEvents {
|
||||||
recentEvents[i] = &rstypes.HeaderedEvent{Event: recEvents[i]}
|
recentEvents[i] = &rstypes.HeaderedEvent{
|
||||||
|
Event: recEvents[i],
|
||||||
|
Visibility: hisVisMap[recEvents[i].EventID()],
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we didn't return any events at all then don't bother doing anything else.
|
// If we didn't return any events at all then don't bother doing anything else.
|
||||||
|
|
@ -346,13 +353,20 @@ func (p *PDUStreamProvider) addRoomDeltaToResponse(
|
||||||
// Now that we've filtered the timeline, work out which state events are still
|
// Now that we've filtered the timeline, work out which state events are still
|
||||||
// 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".
|
||||||
|
hisVisMap = map[string]gomatrixserverlib.HistoryVisibility{}
|
||||||
|
for _, re := range delta.StateEvents {
|
||||||
|
hisVisMap[re.EventID()] = re.Visibility
|
||||||
|
}
|
||||||
sEvents := gomatrixserverlib.HeaderedReverseTopologicalOrdering(
|
sEvents := gomatrixserverlib.HeaderedReverseTopologicalOrdering(
|
||||||
toEvents(removeDuplicates(delta.StateEvents, events)),
|
toEvents(removeDuplicates(delta.StateEvents, events)),
|
||||||
gomatrixserverlib.TopologicalOrderByAuthEvents,
|
gomatrixserverlib.TopologicalOrderByAuthEvents,
|
||||||
)
|
)
|
||||||
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] = &rstypes.HeaderedEvent{Event: sEvents[i]}
|
delta.StateEvents[i] = &rstypes.HeaderedEvent{
|
||||||
|
Event: sEvents[i],
|
||||||
|
Visibility: hisVisMap[sEvents[i].EventID()],
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(delta.StateEvents) > 0 {
|
if len(delta.StateEvents) > 0 {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue