Fix Firefox sorting room cards in the wrong direction (#261)
Room cards will now sort by room members descending (highest to lowest) as expected. Fix https://github.com/matrix-org/matrix-public-archive/issues/218 The `/publicRooms` (room directory) endpoint already returns rooms in the correct order which is why we didn't care about the order before but the different `[].sort(...)` implementations in browsers necessitates we be explicit about it. Ideally, we wouldn't have to use the `ObservableMap.sortValues()` method at all but it seems like one of the only ways to get the values out. In any case, maybe it's more clear what order things are in now. This bug stems from the fact that `[1, 2, 3, 4, 5].sort((a, b) => 1)` returns different results in Chrome vs Firefox (found from https://stackoverflow.com/questions/55039157/array-sort-behaves-differently-in-firefox-and-chrome-edge) - Chrome: `[1, 2, 3, 4, 5].sort((a, b) => 1)` -> `[1, 2, 3, 4, 5]` ✅ - Firefox: `[1, 2, 3, 4, 5].sort((a, b) => 1)` -> `[5, 4, 3, 2, 1]` ❌
This commit is contained in:
parent
dfeae90829
commit
c26bdc5ffb
|
@ -88,9 +88,15 @@ class RoomDirectoryViewModel extends ViewModel {
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
this._roomCardViewModelsFilterMap = new ApplyMap(this._roomCardViewModelsMap);
|
this._roomCardViewModelsFilterMap = new ApplyMap(this._roomCardViewModelsMap);
|
||||||
this._roomCardViewModels = this._roomCardViewModelsFilterMap.sortValues((/*a, b*/) => {
|
this._roomCardViewModels = this._roomCardViewModelsFilterMap.sortValues((a, b) => {
|
||||||
// Sort doesn't matter
|
// Sort by the number of joined members descending (highest to lowest)
|
||||||
return 1;
|
if (b.numJoinedMembers > a.numJoinedMembers) {
|
||||||
|
return 1;
|
||||||
|
} else if (b.numJoinedMembers < a.numJoinedMembers) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
});
|
});
|
||||||
|
|
||||||
this._safeSearchEnabled = true;
|
this._safeSearchEnabled = true;
|
||||||
|
|
Loading…
Reference in New Issue