From b3c8f89d0d8d46afb32624da80e5e186ae77d7f8 Mon Sep 17 00:00:00 2001 From: Eric Eastwood Date: Fri, 2 Jun 2023 16:57:56 -0500 Subject: [PATCH] Fix Firefox sorting room cards in the wrong direction Fix https://github.com/matrix-org/matrix-public-archive/issues/218 This 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 ]` --- shared/viewmodels/RoomDirectoryViewModel.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/shared/viewmodels/RoomDirectoryViewModel.js b/shared/viewmodels/RoomDirectoryViewModel.js index 1b28022..312a82c 100644 --- a/shared/viewmodels/RoomDirectoryViewModel.js +++ b/shared/viewmodels/RoomDirectoryViewModel.js @@ -88,9 +88,14 @@ class RoomDirectoryViewModel extends ViewModel { ); }); this._roomCardViewModelsFilterMap = new ApplyMap(this._roomCardViewModelsMap); - this._roomCardViewModels = this._roomCardViewModelsFilterMap.sortValues((/*a, b*/) => { - // Sort doesn't matter - return 1; + this._roomCardViewModels = this._roomCardViewModelsFilterMap.sortValues((a, b) => { + if (b.numJoinedMembers > a.numJoinedMembers) { + return 1; + } else if (b.numJoinedMembers < a.numJoinedMembers) { + return -1; + } + + return 0; }); this._safeSearchEnabled = true;