diff --git a/syncapi/streams/stream_pdu.go b/syncapi/streams/stream_pdu.go index f0629f683..b5fd5be8e 100644 --- a/syncapi/streams/stream_pdu.go +++ b/syncapi/streams/stream_pdu.go @@ -274,20 +274,13 @@ func (p *PDUStreamProvider) addRoomDeltaToResponse( recentStreamEvents := dbEvents[delta.RoomID].Events limited := dbEvents[delta.RoomID].Limited - hisVisMap := map[string]gomatrixserverlib.HistoryVisibility{} - for _, re := range recentStreamEvents { - hisVisMap[re.EventID()] = re.Visibility - } - recEvents := gomatrixserverlib.HeaderedReverseTopologicalOrdering( + recEvents := gomatrixserverlib.ReverseTopologicalOrdering( gomatrixserverlib.ToPDUs(snapshot.StreamEventsToEvents(device, recentStreamEvents)), gomatrixserverlib.TopologicalOrderByPrevEvents, ) recentEvents := make([]*rstypes.HeaderedEvent, len(recEvents)) for i := range recEvents { - recentEvents[i] = &rstypes.HeaderedEvent{ - Event: recEvents[i].(*gomatrixserverlib.Event), - Visibility: hisVisMap[recEvents[i].EventID()], - } + recentEvents[i] = recEvents[i].(*rstypes.HeaderedEvent) } // If we didn't return any events at all then don't bother doing anything else. @@ -353,20 +346,13 @@ func (p *PDUStreamProvider) addRoomDeltaToResponse( // 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 // "state" section and kept in "timeline". - hisVisMap = map[string]gomatrixserverlib.HistoryVisibility{} - for _, re := range delta.StateEvents { - hisVisMap[re.EventID()] = re.Visibility - } sEvents := gomatrixserverlib.HeaderedReverseTopologicalOrdering( gomatrixserverlib.ToPDUs(removeDuplicates(delta.StateEvents, events)), gomatrixserverlib.TopologicalOrderByAuthEvents, ) delta.StateEvents = make([]*rstypes.HeaderedEvent, len(sEvents)) for i := range sEvents { - delta.StateEvents[i] = &rstypes.HeaderedEvent{ - Event: sEvents[i].(*gomatrixserverlib.Event), - Visibility: hisVisMap[sEvents[i].EventID()], - } + delta.StateEvents[i] = sEvents[i].(*rstypes.HeaderedEvent) } if len(delta.StateEvents) > 0 {