mirror of
https://github.com/element-hq/element-web
synced 2024-11-28 12:28:50 +03:00
Fix pinning of rooms without badges
Fixes https://github.com/vector-im/riot-web/issues/7723 This adds consideration for rooms that are "mentions only" (or "unread-muted" as internally referenced).
This commit is contained in:
parent
c06d42d560
commit
216fc6412a
1 changed files with 19 additions and 2 deletions
|
@ -300,6 +300,10 @@ class RoomListStore extends Store {
|
||||||
const ts = this._tsOfNewestEvent(room);
|
const ts = this._tsOfNewestEvent(room);
|
||||||
this._updateCachedRoomState(roomId, "timestamp", ts);
|
this._updateCachedRoomState(roomId, "timestamp", ts);
|
||||||
return ts;
|
return ts;
|
||||||
|
} else if (type === "unread-muted") {
|
||||||
|
const unread = Unread.doesRoomHaveUnreadMessages(room);
|
||||||
|
this._updateCachedRoomState(roomId, "unread-muted", unread);
|
||||||
|
return unread;
|
||||||
} else if (type === "unread") {
|
} else if (type === "unread") {
|
||||||
const unread = room.getUnreadNotificationCount() > 0;
|
const unread = room.getUnreadNotificationCount() > 0;
|
||||||
this._updateCachedRoomState(roomId, "unread", unread);
|
this._updateCachedRoomState(roomId, "unread", unread);
|
||||||
|
@ -358,8 +362,21 @@ class RoomListStore extends Store {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pinUnread) {
|
if (pinUnread) {
|
||||||
const unreadA = this._getRoomState(roomA, "unread");
|
let unreadA = this._getRoomState(roomA, "unread");
|
||||||
const unreadB = this._getRoomState(roomB, "unread");
|
let unreadB = this._getRoomState(roomB, "unread");
|
||||||
|
if (unreadA && !unreadB) return -1;
|
||||||
|
if (!unreadA && unreadB) return 1;
|
||||||
|
|
||||||
|
// If they both have unread messages, sort by timestamp
|
||||||
|
// If nether have unread message (the fourth check not shown
|
||||||
|
// here), then just sort by timestamp anyways.
|
||||||
|
if (unreadA && unreadB) return timestampDiff;
|
||||||
|
|
||||||
|
// Unread can also mean "unread without badge", which is
|
||||||
|
// different from what the above checks for. We're also
|
||||||
|
// going to sort those here.
|
||||||
|
unreadA = this._getRoomState(roomA, "unread-muted");
|
||||||
|
unreadB = this._getRoomState(roomB, "unread-muted");
|
||||||
if (unreadA && !unreadB) return -1;
|
if (unreadA && !unreadB) return -1;
|
||||||
if (!unreadA && unreadB) return 1;
|
if (!unreadA && unreadB) return 1;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue