Introduce Membership type

This commit is contained in:
Stanislav Demydiuk
2024-03-18 14:43:08 +00:00
committed by Andy Balaam
parent 3c6fd58628
commit da99bad7b9
115 changed files with 582 additions and 526 deletions
+9 -5
View File
@@ -1824,7 +1824,7 @@ class TimelinePanel extends React.Component<IProps, IState> {
// that the event belongs to, and traversing the timeline looking for
// that event, while keeping track of the user's membership
let i = events.length - 1;
let userMembership = "leave";
let userMembership = Membership.Leave;
for (; i >= 0; i--) {
const timeline = this.props.timelineSet.getTimelineForEvent(events[i].getId()!);
if (!timeline) {
@@ -1837,14 +1837,15 @@ class TimelinePanel extends React.Component<IProps, IState> {
continue;
}
userMembership = timeline.getState(EventTimeline.FORWARDS)?.getMember(userId)?.membership ?? "leave";
userMembership =
timeline.getState(EventTimeline.FORWARDS)?.getMember(userId)?.membership ?? Membership.Leave;
const timelineEvents = timeline.getEvents();
for (let j = timelineEvents.length - 1; j >= 0; j--) {
const event = timelineEvents[j];
if (event.getId() === events[i].getId()) {
break;
} else if (event.getStateKey() === userId && event.getType() === EventType.RoomMember) {
userMembership = event.getPrevContent().membership || "leave";
userMembership = event.getPrevContent().membership || Membership.Leave;
}
}
break;
@@ -1855,8 +1856,11 @@ class TimelinePanel extends React.Component<IProps, IState> {
for (; i >= 0; i--) {
const event = events[i];
if (event.getStateKey() === userId && event.getType() === EventType.RoomMember) {
userMembership = event.getPrevContent().membership || "leave";
} else if (userMembership === "leave" && (event.isDecryptionFailure() || event.isBeingDecrypted())) {
userMembership = event.getPrevContent().membership || Membership.Leave;
} else if (
userMembership === Membership.Leave &&
(event.isDecryptionFailure() || event.isBeingDecrypted())
) {
// reached an undecryptable message when the user wasn't in the room -- don't try to load any more
// Note: for now, we assume that events that are being decrypted are
// not decryptable - we will be called once more when it is decrypted.