mirror of https://github.com/vector-im/riot-web
Avoid hitting the SettingsStore thousands of times when generating room lists
Should fix https://github.com/vector-im/riot-web/issues/7646 to some degreepull/21833/head
parent
57b99893e5
commit
5558b7a3b2
|
@ -217,11 +217,16 @@ class RoomListStore extends Store {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Note: we check the settings up here instead of in the forEach or
|
||||||
|
// in the _recentsComparator to avoid hitting the SettingsStore a few
|
||||||
|
// thousand times.
|
||||||
|
const pinUnread = SettingsStore.getValue("pinUnreadRooms");
|
||||||
|
const pinMentioned = SettingsStore.getValue("pinMentionedRooms");
|
||||||
Object.keys(lists).forEach((listKey) => {
|
Object.keys(lists).forEach((listKey) => {
|
||||||
let comparator;
|
let comparator;
|
||||||
switch (RoomListStore._listOrders[listKey]) {
|
switch (RoomListStore._listOrders[listKey]) {
|
||||||
case "recent":
|
case "recent":
|
||||||
comparator = this._recentsComparator;
|
comparator = (roomA, roomB) => this._recentsComparator(roomA, roomB, pinUnread, pinMentioned);
|
||||||
break;
|
break;
|
||||||
case "manual":
|
case "manual":
|
||||||
default:
|
default:
|
||||||
|
@ -262,10 +267,7 @@ class RoomListStore extends Store {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_recentsComparator(roomA, roomB) {
|
_recentsComparator(roomA, roomB, pinUnread, pinMentioned) {
|
||||||
const pinUnread = SettingsStore.getValue("pinUnreadRooms");
|
|
||||||
const pinMentioned = SettingsStore.getValue("pinMentionedRooms");
|
|
||||||
|
|
||||||
// We try and set the ordering to be Mentioned > Unread > Recent
|
// We try and set the ordering to be Mentioned > Unread > Recent
|
||||||
// assuming the user has the right settings, of course
|
// assuming the user has the right settings, of course
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue