mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-23 14:53:10 -06:00
Don't apply his vis checks on shared rooms
This commit is contained in:
parent
190778c49b
commit
7b47e8456e
|
|
@ -274,17 +274,19 @@ func (r *messagesReq) filterHistoryVisible(events []gomatrixserverlib.HeaderedEv
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var result []gomatrixserverlib.HeaderedEvent
|
||||||
var eventsToCheck []gomatrixserverlib.HeaderedEvent
|
var eventsToCheck []gomatrixserverlib.HeaderedEvent
|
||||||
if joinEventIndex != -1 {
|
if joinEventIndex != -1 {
|
||||||
if r.backwardOrdering {
|
if r.backwardOrdering {
|
||||||
events = events[:joinEventIndex+1]
|
result = events[:joinEventIndex+1]
|
||||||
eventsToCheck = append(eventsToCheck, events[0])
|
eventsToCheck = append(eventsToCheck, result[0])
|
||||||
} else {
|
} else {
|
||||||
events = events[joinEventIndex:]
|
result = events[joinEventIndex:]
|
||||||
eventsToCheck = append(eventsToCheck, events[len(events)-1])
|
eventsToCheck = append(eventsToCheck, result[len(result)-1])
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
eventsToCheck = []gomatrixserverlib.HeaderedEvent{events[0], events[len(events)-1]}
|
eventsToCheck = []gomatrixserverlib.HeaderedEvent{events[0], events[len(events)-1]}
|
||||||
|
result = events
|
||||||
}
|
}
|
||||||
// make sure the user was in the room for both the earliest and latest events, we need this because
|
// make sure the user was in the room for both the earliest and latest events, we need this because
|
||||||
// some backpagination results will not have the join event (e.g if they hit /messages at the join event itself)
|
// some backpagination results will not have the join event (e.g if they hit /messages at the join event itself)
|
||||||
|
|
@ -296,6 +298,7 @@ func (r *messagesReq) filterHistoryVisible(events []gomatrixserverlib.HeaderedEv
|
||||||
PrevEventIDs: ev.PrevEventIDs(),
|
PrevEventIDs: ev.PrevEventIDs(),
|
||||||
StateToFetch: []gomatrixserverlib.StateKeyTuple{
|
StateToFetch: []gomatrixserverlib.StateKeyTuple{
|
||||||
{EventType: gomatrixserverlib.MRoomMember, StateKey: r.device.UserID},
|
{EventType: gomatrixserverlib.MRoomMember, StateKey: r.device.UserID},
|
||||||
|
{EventType: gomatrixserverlib.MRoomHistoryVisibility, StateKey: ""},
|
||||||
},
|
},
|
||||||
}, &queryRes)
|
}, &queryRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -306,7 +309,27 @@ func (r *messagesReq) filterHistoryVisible(events []gomatrixserverlib.HeaderedEv
|
||||||
wasJoined = false
|
wasJoined = false
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
membership, err := queryRes.StateEvents[0].Membership()
|
var hisVisEvent, membershipEvent *gomatrixserverlib.HeaderedEvent
|
||||||
|
for i := range queryRes.StateEvents {
|
||||||
|
switch queryRes.StateEvents[i].Type() {
|
||||||
|
case gomatrixserverlib.MRoomMember:
|
||||||
|
membershipEvent = &queryRes.StateEvents[i]
|
||||||
|
case gomatrixserverlib.MRoomHistoryVisibility:
|
||||||
|
hisVisEvent = &queryRes.StateEvents[i]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if membershipEvent == nil {
|
||||||
|
wasJoined = false
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if hisVisEvent == nil {
|
||||||
|
return events // apply no filtering as it defaults to Shared.
|
||||||
|
}
|
||||||
|
hisVis, _ := hisVisEvent.HistoryVisibility()
|
||||||
|
if hisVis == "shared" {
|
||||||
|
return events // apply no filtering
|
||||||
|
}
|
||||||
|
membership, err := membershipEvent.Membership()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
wasJoined = false
|
wasJoined = false
|
||||||
break
|
break
|
||||||
|
|
@ -320,7 +343,7 @@ func (r *messagesReq) filterHistoryVisible(events []gomatrixserverlib.HeaderedEv
|
||||||
util.GetLogger(r.ctx).WithField("num_events", len(events)).Warnf("%s was not joined to room during these events, omitting them", r.device.UserID)
|
util.GetLogger(r.ctx).WithField("num_events", len(events)).Warnf("%s was not joined to room during these events, omitting them", r.device.UserID)
|
||||||
return []gomatrixserverlib.HeaderedEvent{}
|
return []gomatrixserverlib.HeaderedEvent{}
|
||||||
}
|
}
|
||||||
return events
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *messagesReq) getStartEnd(events []gomatrixserverlib.HeaderedEvent) (start, end types.TopologyToken, err error) {
|
func (r *messagesReq) getStartEnd(events []gomatrixserverlib.HeaderedEvent) (start, end types.TopologyToken, err error) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue