diff --git a/src/stores/room-list/RoomListStore.ts b/src/stores/room-list/RoomListStore.ts index e045166e7c9..470c2b685fe 100644 --- a/src/stores/room-list/RoomListStore.ts +++ b/src/stores/room-list/RoomListStore.ts @@ -387,8 +387,6 @@ export class RoomListStoreClass extends AsyncStoreWithClient<IState> 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<IState> 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<IState> 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 00000000000..04b99a80357 --- /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); + }); +});