From 8541e1c4b5fe62142a0e8cf8a2c292cfd0927575 Mon Sep 17 00:00:00 2001 From: Germain Date: Mon, 19 Dec 2022 10:42:58 +0000 Subject: [PATCH] Change room list sorting to activity and unread first by default (#9773) --- src/stores/room-list/RoomListStore.ts | 6 ++-- test/stores/room-list/RoomListStore-test.ts | 35 +++++++++++++++++++++ 2 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 test/stores/room-list/RoomListStore-test.ts diff --git a/src/stores/room-list/RoomListStore.ts b/src/stores/room-list/RoomListStore.ts index e045166e7c..470c2b685f 100644 --- a/src/stores/room-list/RoomListStore.ts +++ b/src/stores/room-list/RoomListStore.ts @@ -387,8 +387,6 @@ export class RoomListStoreClass extends AsyncStoreWithClient implements // logic must match calculateListOrder private calculateTagSorting(tagId: TagID): SortAlgorithm { - const isDefaultRecent = tagId === DefaultTagID.Invite || tagId === DefaultTagID.DM; - const defaultSort = isDefaultRecent ? SortAlgorithm.Recent : SortAlgorithm.Alphabetic; const settingAlphabetical = SettingsStore.getValue("RoomList.orderAlphabetically", null, true); const definedSort = this.getTagSorting(tagId); const storedSort = this.getStoredTagSorting(tagId); @@ -396,7 +394,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient implements // We use the following order to determine which of the 4 flags to use: // Stored > Settings > Defined > Default - let tagSort = defaultSort; + let tagSort = SortAlgorithm.Recent; if (storedSort) { tagSort = storedSort; } else if (!isNullOrUndefined(settingAlphabetical)) { @@ -431,7 +429,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient implements // logic must match calculateTagSorting private calculateListOrder(tagId: TagID): ListAlgorithm { - const defaultOrder = ListAlgorithm.Natural; + const defaultOrder = ListAlgorithm.Importance; const settingImportance = SettingsStore.getValue("RoomList.orderByImportance", null, true); const definedOrder = this.getListOrder(tagId); const storedOrder = this.getStoredListOrder(tagId); diff --git a/test/stores/room-list/RoomListStore-test.ts b/test/stores/room-list/RoomListStore-test.ts new file mode 100644 index 0000000000..04b99a8035 --- /dev/null +++ b/test/stores/room-list/RoomListStore-test.ts @@ -0,0 +1,35 @@ +/* +Copyright 2022 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import { ListAlgorithm, SortAlgorithm } from "../../../src/stores/room-list/algorithms/models"; +import { OrderedDefaultTagIDs } from "../../../src/stores/room-list/models"; +import RoomListStore, { RoomListStoreClass } from "../../../src/stores/room-list/RoomListStore"; +import { stubClient } from "../../test-utils"; + +describe("RoomListStore", () => { + beforeAll(async () => { + const client = stubClient(); + await (RoomListStore.instance as RoomListStoreClass).makeReady(client); + }); + + it.each(OrderedDefaultTagIDs)("defaults to importance ordering for %s=", (tagId) => { + expect(RoomListStore.instance.getTagSorting(tagId)).toBe(SortAlgorithm.Recent); + }); + + it.each(OrderedDefaultTagIDs)("defaults to activity ordering for %s=", (tagId) => { + expect(RoomListStore.instance.getListOrder(tagId)).toBe(ListAlgorithm.Importance); + }); +});