Skip to content
This repository was archived by the owner on Sep 11, 2024. It is now read-only.

Commit 8fd44f0

Browse files
authored
Merge pull request #6595 from SimonBrandner/fix/rl-resort/110
Don't re-sort the room-list based on profile/status changes
2 parents aa0a753 + 7856268 commit 8fd44f0

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

src/stores/room-list/algorithms/tag-sorting/RecentAlgorithm.ts

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,27 @@ import { IAlgorithm } from "./IAlgorithm";
2020
import { MatrixClientPeg } from "../../../../MatrixClientPeg";
2121
import * as Unread from "../../../../Unread";
2222
import { EffectiveMembership, getEffectiveMembership } from "../../../../utils/membership";
23+
import { EventType } from "matrix-js-sdk/src/@types/event";
24+
import { MatrixEvent } from "matrix-js-sdk/src/models/event";
25+
26+
export function shouldCauseReorder(event: MatrixEvent): boolean {
27+
const type = event.getType();
28+
const content = event.getContent();
29+
const prevContent = event.getPrevContent();
30+
31+
// Never ignore membership changes
32+
if (type === EventType.RoomMember && prevContent.membership !== content.membership) return true;
33+
34+
// Ignore status changes
35+
// XXX: This should be an enum
36+
if (type === "im.vector.user_status") return false;
37+
// Ignore display name changes
38+
if (type === EventType.RoomMember && prevContent.displayname !== content.displayname) return false;
39+
// Ignore avatar changes
40+
if (type === EventType.RoomMember && prevContent.avatar_url !== content.avatar_url) return false;
41+
42+
return true;
43+
}
2344

2445
export const sortRooms = (rooms: Room[]): Room[] => {
2546
// We cache the timestamp lookup to avoid iterating forever on the timeline
@@ -68,7 +89,10 @@ export const sortRooms = (rooms: Room[]): Room[] => {
6889
const ev = r.timeline[i];
6990
if (!ev.getTs()) continue; // skip events that don't have timestamps (tests only?)
7091

71-
if (ev.getSender() === myUserId || Unread.eventTriggersUnreadCount(ev)) {
92+
if (
93+
(ev.getSender() === myUserId && shouldCauseReorder(ev)) ||
94+
Unread.eventTriggersUnreadCount(ev)
95+
) {
7296
return ev.getTs();
7397
}
7498
}

0 commit comments

Comments
 (0)