mirror of https://github.com/vector-im/riot-web
Merge pull request #6595 from SimonBrandner/fix/rl-resort/110
Don't re-sort the room-list based on profile/status changespull/21833/head
commit
8fd44f0b5e
|
@ -20,6 +20,27 @@ import { IAlgorithm } from "./IAlgorithm";
|
||||||
import { MatrixClientPeg } from "../../../../MatrixClientPeg";
|
import { MatrixClientPeg } from "../../../../MatrixClientPeg";
|
||||||
import * as Unread from "../../../../Unread";
|
import * as Unread from "../../../../Unread";
|
||||||
import { EffectiveMembership, getEffectiveMembership } from "../../../../utils/membership";
|
import { EffectiveMembership, getEffectiveMembership } from "../../../../utils/membership";
|
||||||
|
import { EventType } from "matrix-js-sdk/src/@types/event";
|
||||||
|
import { MatrixEvent } from "matrix-js-sdk/src/models/event";
|
||||||
|
|
||||||
|
export function shouldCauseReorder(event: MatrixEvent): boolean {
|
||||||
|
const type = event.getType();
|
||||||
|
const content = event.getContent();
|
||||||
|
const prevContent = event.getPrevContent();
|
||||||
|
|
||||||
|
// Never ignore membership changes
|
||||||
|
if (type === EventType.RoomMember && prevContent.membership !== content.membership) return true;
|
||||||
|
|
||||||
|
// Ignore status changes
|
||||||
|
// XXX: This should be an enum
|
||||||
|
if (type === "im.vector.user_status") return false;
|
||||||
|
// Ignore display name changes
|
||||||
|
if (type === EventType.RoomMember && prevContent.displayname !== content.displayname) return false;
|
||||||
|
// Ignore avatar changes
|
||||||
|
if (type === EventType.RoomMember && prevContent.avatar_url !== content.avatar_url) return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
export const sortRooms = (rooms: Room[]): Room[] => {
|
export const sortRooms = (rooms: Room[]): Room[] => {
|
||||||
// We cache the timestamp lookup to avoid iterating forever on the timeline
|
// We cache the timestamp lookup to avoid iterating forever on the timeline
|
||||||
|
@ -68,7 +89,10 @@ export const sortRooms = (rooms: Room[]): Room[] => {
|
||||||
const ev = r.timeline[i];
|
const ev = r.timeline[i];
|
||||||
if (!ev.getTs()) continue; // skip events that don't have timestamps (tests only?)
|
if (!ev.getTs()) continue; // skip events that don't have timestamps (tests only?)
|
||||||
|
|
||||||
if (ev.getSender() === myUserId || Unread.eventTriggersUnreadCount(ev)) {
|
if (
|
||||||
|
(ev.getSender() === myUserId && shouldCauseReorder(ev)) ||
|
||||||
|
Unread.eventTriggersUnreadCount(ev)
|
||||||
|
) {
|
||||||
return ev.getTs();
|
return ev.getTs();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue