diff --git a/apps/web/src/actions/RoomListActions.ts b/apps/web/src/actions/RoomListActions.ts index 255518a7dc..14343b5bf8 100644 --- a/apps/web/src/actions/RoomListActions.ts +++ b/apps/web/src/actions/RoomListActions.ts @@ -17,7 +17,7 @@ import { _t } from "../languageHandler"; import { type AsyncActionPayload } from "../dispatcher/payloads"; import RoomListStore from "../stores/room-list/RoomListStore"; import { SortAlgorithm } from "../stores/room-list/algorithms/models"; -import { DefaultTagID, type TagID } from "../stores/room-list/models"; +import { DefaultTagID, type TagID } from "../stores/room-list-v3/skip-list/tag"; import ErrorDialog from "../components/views/dialogs/ErrorDialog"; export default class RoomListActions { diff --git a/apps/web/src/components/structures/LoggedInView.tsx b/apps/web/src/components/structures/LoggedInView.tsx index 03927a5689..49cabc44e3 100644 --- a/apps/web/src/components/structures/LoggedInView.tsx +++ b/apps/web/src/components/structures/LoggedInView.tsx @@ -33,7 +33,7 @@ import { SettingLevel } from "../../settings/SettingLevel"; import ResizeHandle from "../views/elements/ResizeHandle"; import { CollapseDistributor, Resizer } from "../../resizer"; import PlatformPeg from "../../PlatformPeg"; -import { DefaultTagID } from "../../stores/room-list/models"; +import { DefaultTagID } from "../../stores/room-list-v3/skip-list/tag"; import { hideToast as hideServerLimitToast, showToast as showServerLimitToast } from "../../toasts/ServerLimitToast"; import { Action } from "../../dispatcher/actions"; import LeftPanel from "./LeftPanel"; diff --git a/apps/web/src/components/viewmodels/avatars/RoomAvatarViewModel.tsx b/apps/web/src/components/viewmodels/avatars/RoomAvatarViewModel.tsx index 3832616a9c..93d231aaf2 100644 --- a/apps/web/src/components/viewmodels/avatars/RoomAvatarViewModel.tsx +++ b/apps/web/src/components/viewmodels/avatars/RoomAvatarViewModel.tsx @@ -10,7 +10,7 @@ import { useEffect, useState } from "react"; import { useTypedEventEmitter } from "../../../hooks/useEventEmitter"; import { useDmMember, usePresence, type Presence } from "../../views/avatars/WithPresenceIndicator"; -import { DefaultTagID } from "../../../stores/room-list/models"; +import { DefaultTagID } from "../../../stores/room-list-v3/skip-list/tag"; export enum AvatarBadgeDecoration { LowPriority = "LowPriority", diff --git a/apps/web/src/components/viewmodels/right_panel/RoomSummaryCardViewModel.tsx b/apps/web/src/components/viewmodels/right_panel/RoomSummaryCardViewModel.tsx index db3bdb51ac..1106fa7e86 100644 --- a/apps/web/src/components/viewmodels/right_panel/RoomSummaryCardViewModel.tsx +++ b/apps/web/src/components/viewmodels/right_panel/RoomSummaryCardViewModel.tsx @@ -19,7 +19,7 @@ import defaultDispatcher from "../../../dispatcher/dispatcher"; import { Action } from "../../../dispatcher/actions"; import RoomListStore, { LISTS_UPDATE_EVENT } from "../../../stores/room-list/RoomListStore"; import { canInviteTo } from "../../../utils/room/canInviteTo"; -import { DefaultTagID } from "../../../stores/room-list/models"; +import { DefaultTagID } from "../../../stores/room-list-v3/skip-list/tag"; import { useEventEmitterState } from "../../../hooks/useEventEmitter"; import RightPanelStore from "../../../stores/right-panel/RightPanelStore"; import { RightPanelPhases } from "../../../stores/right-panel/RightPanelStorePhases"; diff --git a/apps/web/src/components/views/context_menus/RoomGeneralContextMenu.tsx b/apps/web/src/components/views/context_menus/RoomGeneralContextMenu.tsx index fdfabdeee9..3f5bfd4a3f 100644 --- a/apps/web/src/components/views/context_menus/RoomGeneralContextMenu.tsx +++ b/apps/web/src/components/views/context_menus/RoomGeneralContextMenu.tsx @@ -29,7 +29,7 @@ import { useUnreadNotifications } from "../../../hooks/useUnreadNotifications"; import { getKeyBindingsManager } from "../../../KeyBindingsManager"; import { _t } from "../../../languageHandler"; import { NotificationLevel } from "../../../stores/notifications/NotificationLevel"; -import { DefaultTagID, type TagID } from "../../../stores/room-list/models"; +import { DefaultTagID, type TagID } from "../../../stores/room-list-v3/skip-list/tag"; import RoomListStore, { LISTS_UPDATE_EVENT } from "../../../stores/room-list/RoomListStore"; import DMRoomMap from "../../../utils/DMRoomMap"; import { clearRoomNotification, setMarkedUnreadState } from "../../../utils/notifications"; diff --git a/apps/web/src/components/views/dialogs/InviteDialog.tsx b/apps/web/src/components/views/dialogs/InviteDialog.tsx index dd29dbddce..a15df77335 100644 --- a/apps/web/src/components/views/dialogs/InviteDialog.tsx +++ b/apps/web/src/components/views/dialogs/InviteDialog.tsx @@ -27,7 +27,7 @@ import { abbreviateUrl } from "../../../utils/UrlUtils"; import IdentityAuthClient from "../../../IdentityAuthClient"; import { type IInviteResult, inviteMultipleToRoom, showAnyInviteErrors } from "../../../RoomInvite"; import { Action } from "../../../dispatcher/actions"; -import { DefaultTagID } from "../../../stores/room-list/models"; +import { DefaultTagID } from "../../../stores/room-list-v3/skip-list/tag"; import RoomListStore from "../../../stores/room-list/RoomListStore"; import SettingsStore from "../../../settings/SettingsStore"; import { UIFeature } from "../../../settings/UIFeature"; diff --git a/apps/web/src/components/views/rooms/LegacyRoomList.tsx b/apps/web/src/components/views/rooms/LegacyRoomList.tsx index 0876d6ae99..9b156f8cb9 100644 --- a/apps/web/src/components/views/rooms/LegacyRoomList.tsx +++ b/apps/web/src/components/views/rooms/LegacyRoomList.tsx @@ -34,7 +34,7 @@ import { useFeatureEnabled } from "../../../hooks/useSettings.ts"; import { UIComponent } from "../../../settings/UIFeature.ts"; import { RoomNotificationStateStore } from "../../../stores/notifications/RoomNotificationStateStore.ts"; import { type ITagMap } from "../../../stores/room-list/algorithms/models.ts"; -import { DefaultTagID, type TagID } from "../../../stores/room-list/models.ts"; +import { DefaultTagID, type TagID } from "../../../stores/room-list-v3/skip-list/tag"; import { UPDATE_EVENT } from "../../../stores/AsyncStore.ts"; import RoomListStore, { LISTS_UPDATE_EVENT } from "../../../stores/room-list/RoomListStore.ts"; import { diff --git a/apps/web/src/components/views/rooms/RoomSublist.tsx b/apps/web/src/components/views/rooms/RoomSublist.tsx index 049cb8e764..602793a559 100644 --- a/apps/web/src/components/views/rooms/RoomSublist.tsx +++ b/apps/web/src/components/views/rooms/RoomSublist.tsx @@ -33,7 +33,7 @@ import { type ListNotificationState } from "../../../stores/notifications/ListNo import { RoomNotificationStateStore } from "../../../stores/notifications/RoomNotificationStateStore"; import { ListAlgorithm, SortAlgorithm } from "../../../stores/room-list/algorithms/models"; import { type ListLayout } from "../../../stores/room-list/ListLayout"; -import { DefaultTagID, type TagID } from "../../../stores/room-list/models"; +import { DefaultTagID, type TagID } from "../../../stores/room-list-v3/skip-list/tag"; import RoomListLayoutStore from "../../../stores/room-list/RoomListLayoutStore"; import RoomListStore, { LISTS_UPDATE_EVENT, LISTS_LOADING_EVENT } from "../../../stores/room-list/RoomListStore"; import { arrayFastClone, arrayHasOrderChange } from "../../../utils/arrays"; diff --git a/apps/web/src/components/views/rooms/RoomTile.tsx b/apps/web/src/components/views/rooms/RoomTile.tsx index 8d019a705f..6f771206cb 100644 --- a/apps/web/src/components/views/rooms/RoomTile.tsx +++ b/apps/web/src/components/views/rooms/RoomTile.tsx @@ -20,7 +20,7 @@ import defaultDispatcher from "../../../dispatcher/dispatcher"; import { Action } from "../../../dispatcher/actions"; import { _t } from "../../../languageHandler"; import { ChevronFace, ContextMenuTooltipButton, type MenuProps } from "../../structures/ContextMenu"; -import { DefaultTagID, type TagID } from "../../../stores/room-list/models"; +import { DefaultTagID, type TagID } from "../../../stores/room-list-v3/skip-list/tag"; import { type MessagePreview, MessagePreviewStore } from "../../../stores/room-list/MessagePreviewStore"; import DecoratedRoomAvatar from "../avatars/DecoratedRoomAvatar"; import { RoomNotifState } from "../../../RoomNotifs"; diff --git a/apps/web/src/components/views/spaces/threads-activity-centre/useUnreadThreadRooms.ts b/apps/web/src/components/views/spaces/threads-activity-centre/useUnreadThreadRooms.ts index 966e223df6..d7058f18e8 100644 --- a/apps/web/src/components/views/spaces/threads-activity-centre/useUnreadThreadRooms.ts +++ b/apps/web/src/components/views/spaces/threads-activity-centre/useUnreadThreadRooms.ts @@ -16,7 +16,7 @@ import { getThreadNotificationLevel } from "../../../../utils/notifications"; import { useSettingValue } from "../../../../hooks/useSettings"; import { useMatrixClientContext } from "../../../../contexts/MatrixClientContext"; import { useEventEmitter } from "../../../../hooks/useEventEmitter"; -import { VisibilityProvider } from "../../../../stores/room-list/filters/VisibilityProvider"; +import { isRoomVisible } from "../../../../stores/room-list-v3/isRoomVisible"; const MIN_UPDATE_INTERVAL_MS = 500; @@ -86,7 +86,7 @@ function computeUnreadThreadRooms( for (const room of visibleRooms) { // We only care about rooms with unread threads - if (VisibilityProvider.instance.isRoomVisible(room) && doesRoomHaveUnreadThreads(room)) { + if (isRoomVisible(room) && doesRoomHaveUnreadThreads(room)) { // Get the greatest notification level of all threads const notificationLevel = getThreadNotificationLevel(room); diff --git a/apps/web/src/stores/notifications/RoomNotificationStateStore.ts b/apps/web/src/stores/notifications/RoomNotificationStateStore.ts index 12447a3983..2ab82cf8ba 100644 --- a/apps/web/src/stores/notifications/RoomNotificationStateStore.ts +++ b/apps/web/src/stores/notifications/RoomNotificationStateStore.ts @@ -11,11 +11,11 @@ import { type Room, ClientEvent, SyncState, type EmptyObject } from "matrix-js-s import { type ActionPayload } from "../../dispatcher/payloads"; import { AsyncStoreWithClient } from "../AsyncStoreWithClient"; import defaultDispatcher, { type MatrixDispatcher } from "../../dispatcher/dispatcher"; -import { DefaultTagID, type TagID } from "../room-list/models"; +import { DefaultTagID, type TagID } from "../room-list-v3/skip-list/tag"; import { type FetchRoomFn, ListNotificationState } from "./ListNotificationState"; import { RoomNotificationState } from "./RoomNotificationState"; import { SummarizedNotificationState } from "./SummarizedNotificationState"; -import { VisibilityProvider } from "../room-list/filters/VisibilityProvider"; +import { isRoomVisible } from "../room-list-v3/isRoomVisible"; import { PosthogAnalytics } from "../../PosthogAnalytics"; import SettingsStore from "../../settings/SettingsStore"; @@ -116,7 +116,7 @@ export class RoomNotificationStateStore extends AsyncStoreWithClient { */ public getRooms(): Room[] { let rooms = this.matrixClient?.getVisibleRooms(this.msc3946ProcessDynamicPredecessor) ?? []; - rooms = rooms.filter((r) => VisibilityProvider.instance.isRoomVisible(r)); + rooms = rooms.filter((r) => isRoomVisible(r)); return rooms; } @@ -356,7 +356,7 @@ export class RoomListStoreV3Class extends AsyncStoreWithClient { private addRoomAndEmit(room: Room, isNewRoom = false): void { if (!this.roomSkipList) throw new Error("roomSkipList hasn't been created yet!"); if (isNewRoom) { - if (!VisibilityProvider.instance.isRoomVisible(room)) { + if (!isRoomVisible(room)) { logger.info( `RoomListStoreV3: Refusing to add new room ${room.roomId} because isRoomVisible returned false.`, ); diff --git a/apps/web/src/stores/room-list-v3/isRoomVisible.ts b/apps/web/src/stores/room-list-v3/isRoomVisible.ts new file mode 100644 index 0000000000..f122be3b23 --- /dev/null +++ b/apps/web/src/stores/room-list-v3/isRoomVisible.ts @@ -0,0 +1,29 @@ +/* + * Copyright 2026 Element Creations Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +import { type Room } from "matrix-js-sdk/src/matrix"; + +import { isLocalRoom } from "../../utils/localRoom/isLocalRoom"; +import { RoomListCustomisations } from "../../customisations/RoomList"; + +/** + * Determines whether a room should be visible in the room list + * @param room - The room to check for visibility + */ +export function isRoomVisible(room?: Room): boolean { + if (!room) return false; + + // hide space rooms as they'll be shown in the SpacePanel + if (room.isSpaceRoom()) return false; + + // local rooms shouldn't show up anywhere + if (isLocalRoom(room)) return false; + + if (RoomListCustomisations.isRoomVisible) return RoomListCustomisations.isRoomVisible(room); + + return true; // default +} diff --git a/apps/web/src/stores/room-list-v3/skip-list/filters/FavouriteFilter.ts b/apps/web/src/stores/room-list-v3/skip-list/filters/FavouriteFilter.ts index 6af657b81e..4dafcb21d8 100644 --- a/apps/web/src/stores/room-list-v3/skip-list/filters/FavouriteFilter.ts +++ b/apps/web/src/stores/room-list-v3/skip-list/filters/FavouriteFilter.ts @@ -7,7 +7,7 @@ Please see LICENSE files in the repository root for full details. import type { Room } from "matrix-js-sdk/src/matrix"; import type { Filter } from "."; import { FilterKey } from "."; -import { DefaultTagID } from "../../../room-list/models"; +import { DefaultTagID } from "../tag"; export class FavouriteFilter implements Filter { public matches(room: Room): boolean { diff --git a/apps/web/src/stores/room-list-v3/skip-list/filters/LowPriorityFilter.ts b/apps/web/src/stores/room-list-v3/skip-list/filters/LowPriorityFilter.ts index da47761d6e..861d18fa50 100644 --- a/apps/web/src/stores/room-list-v3/skip-list/filters/LowPriorityFilter.ts +++ b/apps/web/src/stores/room-list-v3/skip-list/filters/LowPriorityFilter.ts @@ -7,7 +7,7 @@ Please see LICENSE files in the repository root for full details. import type { Room } from "matrix-js-sdk/src/matrix"; import type { Filter } from "."; import { FilterKey } from "."; -import { DefaultTagID } from "../../../room-list/models"; +import { DefaultTagID } from "../tag"; export class LowPriorityFilter implements Filter { public matches(room: Room): boolean { diff --git a/apps/web/src/stores/room-list-v3/skip-list/sorters/RecencySorter.ts b/apps/web/src/stores/room-list-v3/skip-list/sorters/RecencySorter.ts index 4f5889f132..04b8f4a0ed 100644 --- a/apps/web/src/stores/room-list-v3/skip-list/sorters/RecencySorter.ts +++ b/apps/web/src/stores/room-list-v3/skip-list/sorters/RecencySorter.ts @@ -8,8 +8,8 @@ Please see LICENSE files in the repository root for full details. import type { Room } from "matrix-js-sdk/src/matrix"; import { type Sorter, SortingAlgorithm } from "."; import { RoomNotificationStateStore } from "../../../notifications/RoomNotificationStateStore"; -import { DefaultTagID } from "../../../room-list/models"; import { BaseRecencySorter } from "./BaseRecencySorter"; +import { DefaultTagID } from "../tag"; export class RecencySorter extends BaseRecencySorter implements Sorter { public get type(): SortingAlgorithm.Recency { diff --git a/apps/web/src/stores/room-list-v3/skip-list/sorters/UnreadSorter.ts b/apps/web/src/stores/room-list-v3/skip-list/sorters/UnreadSorter.ts index 3d919b8251..c590d1d573 100644 --- a/apps/web/src/stores/room-list-v3/skip-list/sorters/UnreadSorter.ts +++ b/apps/web/src/stores/room-list-v3/skip-list/sorters/UnreadSorter.ts @@ -9,10 +9,10 @@ import { KnownMembership, RoomType, type Room } from "matrix-js-sdk/src/matrix"; import { type Sorter, SortingAlgorithm } from "."; import { RoomNotificationStateStore } from "../../../notifications/RoomNotificationStateStore"; -import { DefaultTagID } from "../../../room-list/models"; import { CallStore } from "../../../CallStore"; import { getMarkedUnreadState } from "../../../../utils/notifications"; import { BaseRecencySorter } from "./BaseRecencySorter"; +import { DefaultTagID } from "../tag"; /** * Similar to RecencySorter but with the following special order: diff --git a/apps/web/src/stores/room-list-v3/skip-list/tag.ts b/apps/web/src/stores/room-list-v3/skip-list/tag.ts new file mode 100644 index 0000000000..03a9315fc7 --- /dev/null +++ b/apps/web/src/stores/room-list-v3/skip-list/tag.ts @@ -0,0 +1,26 @@ +/* + * Copyright 2026 Element Creations Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +/** + * Default tags that are used for rooms that don't have a user defined tag. These are used to determine where a room should be placed in the room list and how it should be sorted. + */ +export enum DefaultTagID { + Invite = "im.vector.fake.invite", + Untagged = "im.vector.fake.recent", // legacy: used to just be 'recent rooms' but now it's all untagged rooms + Archived = "im.vector.fake.archived", + LowPriority = "m.lowpriority", + Favourite = "m.favourite", + DM = "im.vector.fake.direct", + Conference = "im.vector.fake.conferences", + ServerNotice = "m.server_notice", + Suggested = "im.vector.fake.suggested", +} + +/** + * A tag ID is either a user defined tag (which is just a string) or one of the default tags defined in DefaultTagID. + */ +export type TagID = string | DefaultTagID; diff --git a/apps/web/src/stores/room-list/utils/roomMute.ts b/apps/web/src/stores/room-list-v3/utils.ts similarity index 88% rename from apps/web/src/stores/room-list/utils/roomMute.ts rename to apps/web/src/stores/room-list-v3/utils.ts index 47135edcba..614368b36d 100644 --- a/apps/web/src/stores/room-list/utils/roomMute.ts +++ b/apps/web/src/stores/room-list-v3/utils.ts @@ -8,9 +8,9 @@ Please see LICENSE files in the repository root for full details. import { type MatrixEvent, EventType, type IPushRules } from "matrix-js-sdk/src/matrix"; -import { type ActionPayload } from "../../../dispatcher/payloads"; -import { isRuleMaybeRoomMuteRule } from "../../../RoomNotifs"; -import { arrayDiff } from "../../../utils/arrays"; +import { type ActionPayload } from "../../dispatcher/payloads"; +import { isRuleMaybeRoomMuteRule } from "../../RoomNotifs"; +import { arrayDiff } from "../../utils/arrays"; /** * Gets any changed push rules that are room specific overrides diff --git a/apps/web/src/stores/room-list/Interface.ts b/apps/web/src/stores/room-list/Interface.ts index f913f7e7ed..6e06ccdc25 100644 --- a/apps/web/src/stores/room-list/Interface.ts +++ b/apps/web/src/stores/room-list/Interface.ts @@ -9,7 +9,8 @@ Please see LICENSE files in the repository root for full details. import type { Room } from "matrix-js-sdk/src/matrix"; import type { EventEmitter } from "events"; import { type ITagMap, type ListAlgorithm, type SortAlgorithm } from "./algorithms/models"; -import { type RoomUpdateCause, type TagID } from "./models"; +import { type RoomUpdateCause } from "./models"; +import { type TagID } from "../room-list-v3/skip-list/tag"; import { type IFilterCondition } from "./filters/IFilterCondition"; export enum RoomListStoreEvent { diff --git a/apps/web/src/stores/room-list/ListLayout.ts b/apps/web/src/stores/room-list/ListLayout.ts index a4468dfffe..1723bc5c32 100644 --- a/apps/web/src/stores/room-list/ListLayout.ts +++ b/apps/web/src/stores/room-list/ListLayout.ts @@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Com Please see LICENSE files in the repository root for full details. */ -import { type TagID } from "./models"; +import { type TagID } from "../room-list-v3/skip-list/tag"; const TILE_HEIGHT_PX = 44; diff --git a/apps/web/src/stores/room-list/MessagePreviewStore.ts b/apps/web/src/stores/room-list/MessagePreviewStore.ts index e626bca50c..70db1f6cbd 100644 --- a/apps/web/src/stores/room-list/MessagePreviewStore.ts +++ b/apps/web/src/stores/room-list/MessagePreviewStore.ts @@ -22,7 +22,7 @@ import { AsyncStoreWithClient } from "../AsyncStoreWithClient"; import defaultDispatcher from "../../dispatcher/dispatcher"; import { MessageEventPreview } from "./previews/MessageEventPreview"; import { PollStartEventPreview } from "./previews/PollStartEventPreview"; -import { type TagID } from "./models"; +import { type TagID } from "../room-list-v3/skip-list/tag"; import { LegacyCallInviteEventPreview } from "./previews/LegacyCallInviteEventPreview"; import { LegacyCallAnswerEventPreview } from "./previews/LegacyCallAnswerEventPreview"; import { LegacyCallHangupEvent } from "./previews/LegacyCallHangupEvent"; diff --git a/apps/web/src/stores/room-list/RoomListLayoutStore.ts b/apps/web/src/stores/room-list/RoomListLayoutStore.ts index c7b2b7f31e..16c7fba070 100644 --- a/apps/web/src/stores/room-list/RoomListLayoutStore.ts +++ b/apps/web/src/stores/room-list/RoomListLayoutStore.ts @@ -9,7 +9,7 @@ Please see LICENSE files in the repository root for full details. import { logger } from "matrix-js-sdk/src/logger"; import { type EmptyObject } from "matrix-js-sdk/src/matrix"; -import { type TagID } from "./models"; +import { type TagID } from "../room-list-v3/skip-list/tag"; import { ListLayout } from "./ListLayout"; import { AsyncStoreWithClient } from "../AsyncStoreWithClient"; import defaultDispatcher from "../../dispatcher/dispatcher"; diff --git a/apps/web/src/stores/room-list/RoomListStore.ts b/apps/web/src/stores/room-list/RoomListStore.ts index c6675d7aa5..da3cff0887 100644 --- a/apps/web/src/stores/room-list/RoomListStore.ts +++ b/apps/web/src/stores/room-list/RoomListStore.ts @@ -10,7 +10,7 @@ import { type MatrixClient, type Room, EventType, type EmptyObject } from "matri import { logger } from "matrix-js-sdk/src/logger"; import SettingsStore from "../../settings/SettingsStore"; -import { DefaultTagID, OrderedDefaultTagIDs, RoomUpdateCause, type TagID } from "./models"; +import { OrderedDefaultTagIDs, RoomUpdateCause } from "./models"; import { type IListOrderingMap, type ITagMap, @@ -28,13 +28,14 @@ import RoomListLayoutStore from "./RoomListLayoutStore"; import { MarkedExecution } from "../../utils/MarkedExecution"; import { AsyncStoreWithClient } from "../AsyncStoreWithClient"; import { RoomNotificationStateStore } from "../notifications/RoomNotificationStateStore"; -import { VisibilityProvider } from "./filters/VisibilityProvider"; +import { isRoomVisible } from "../room-list-v3/isRoomVisible"; import { SpaceWatcher } from "./SpaceWatcher"; import { type IRoomTimelineActionPayload } from "../../actions/MatrixActionCreators"; import { type RoomListStore as Interface, RoomListStoreEvent } from "./Interface"; import { UPDATE_EVENT } from "../AsyncStore"; import { SdkContextClass } from "../../contexts/SDKContext"; -import { getChangedOverrideRoomMutePushRules } from "./utils/roomMute"; +import { getChangedOverrideRoomMutePushRules } from "../room-list-v3/utils"; +import { DefaultTagID, type TagID } from "../room-list-v3/skip-list/tag"; export const LISTS_UPDATE_EVENT = RoomListStoreEvent.ListsUpdate; export const LISTS_LOADING_EVENT = RoomListStoreEvent.ListsLoading; // unused; used by SlidingRoomListStore @@ -346,7 +347,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient implem } private async handleRoomUpdate(room: Room, cause: RoomUpdateCause): Promise { - if (!VisibilityProvider.instance.isRoomVisible(room)) { + if (!isRoomVisible(room)) { return; // don't do anything on rooms that aren't visible } @@ -514,7 +515,7 @@ export class RoomListStoreClass extends AsyncStoreWithClient implem if (!this.matrixClient) return []; let rooms = this.matrixClient.getVisibleRooms(this.msc3946ProcessDynamicPredecessor); - rooms = rooms.filter((r) => VisibilityProvider.instance.isRoomVisible(r)); + rooms = rooms.filter((r) => isRoomVisible(r)); if (this.prefilterConditions.length > 0) { rooms = rooms.filter((r) => { diff --git a/apps/web/src/stores/room-list/algorithms/Algorithm.ts b/apps/web/src/stores/room-list/algorithms/Algorithm.ts index 5419a6e47c..a30555cdd5 100644 --- a/apps/web/src/stores/room-list/algorithms/Algorithm.ts +++ b/apps/web/src/stores/room-list/algorithms/Algorithm.ts @@ -14,7 +14,8 @@ import { logger } from "matrix-js-sdk/src/logger"; import DMRoomMap from "../../../utils/DMRoomMap"; import { arrayDiff, arrayHasDiff } from "../../../utils/arrays"; -import { DefaultTagID, RoomUpdateCause, type TagID } from "../models"; +import { DefaultTagID, type TagID } from "../../room-list-v3/skip-list/tag"; +import { RoomUpdateCause } from "../models"; import { type IListOrderingMap, type IOrderingAlgorithmMap, @@ -31,7 +32,7 @@ import { } from "../../../utils/membership"; import { type OrderingAlgorithm } from "./list-ordering/OrderingAlgorithm"; import { getListAlgorithmInstance } from "./list-ordering"; -import { VisibilityProvider } from "../filters/VisibilityProvider"; +import { isRoomVisible } from "../../room-list-v3/isRoomVisible"; import { CallStore, CallStoreEvent } from "../../CallStore"; /** @@ -170,7 +171,7 @@ export class Algorithm extends EventEmitter { val = null; } - if (val && !VisibilityProvider.instance.isRoomVisible(val)) { + if (val && !isRoomVisible(val)) { val = null; // the room isn't visible - lie to the rest of this function } diff --git a/apps/web/src/stores/room-list/algorithms/list-ordering/ImportanceAlgorithm.ts b/apps/web/src/stores/room-list/algorithms/list-ordering/ImportanceAlgorithm.ts index 5bd26c273f..77b3662d55 100644 --- a/apps/web/src/stores/room-list/algorithms/list-ordering/ImportanceAlgorithm.ts +++ b/apps/web/src/stores/room-list/algorithms/list-ordering/ImportanceAlgorithm.ts @@ -10,7 +10,8 @@ Please see LICENSE files in the repository root for full details. import { type Room } from "matrix-js-sdk/src/matrix"; import { logger } from "matrix-js-sdk/src/logger"; -import { RoomUpdateCause, type TagID } from "../../models"; +import { type TagID } from "../../../room-list-v3/skip-list/tag"; +import { RoomUpdateCause } from "../../models"; import { SortAlgorithm } from "../models"; import { sortRoomsWithAlgorithm } from "../tag-sorting"; import { OrderingAlgorithm } from "./OrderingAlgorithm"; diff --git a/apps/web/src/stores/room-list/algorithms/list-ordering/NaturalAlgorithm.ts b/apps/web/src/stores/room-list/algorithms/list-ordering/NaturalAlgorithm.ts index 08014822ea..ce15aaff1c 100644 --- a/apps/web/src/stores/room-list/algorithms/list-ordering/NaturalAlgorithm.ts +++ b/apps/web/src/stores/room-list/algorithms/list-ordering/NaturalAlgorithm.ts @@ -12,7 +12,8 @@ import { logger } from "matrix-js-sdk/src/logger"; import { type SortAlgorithm } from "../models"; import { sortRoomsWithAlgorithm } from "../tag-sorting"; import { OrderingAlgorithm } from "./OrderingAlgorithm"; -import { RoomUpdateCause, type TagID } from "../../models"; +import { type TagID } from "../../../room-list-v3/skip-list/tag"; +import { RoomUpdateCause } from "../../models"; import { RoomNotificationStateStore } from "../../../notifications/RoomNotificationStateStore"; type NaturalCategorizedRoomMap = { diff --git a/apps/web/src/stores/room-list/algorithms/list-ordering/OrderingAlgorithm.ts b/apps/web/src/stores/room-list/algorithms/list-ordering/OrderingAlgorithm.ts index 0f95fe78c2..6cb4473524 100644 --- a/apps/web/src/stores/room-list/algorithms/list-ordering/OrderingAlgorithm.ts +++ b/apps/web/src/stores/room-list/algorithms/list-ordering/OrderingAlgorithm.ts @@ -9,7 +9,8 @@ Please see LICENSE files in the repository root for full details. import { type Room } from "matrix-js-sdk/src/matrix"; import { logger } from "matrix-js-sdk/src/logger"; -import { type RoomUpdateCause, type TagID } from "../../models"; +import { type RoomUpdateCause } from "../../models"; +import { type TagID } from "../../../room-list-v3/skip-list/tag"; import { SortAlgorithm } from "../models"; /** diff --git a/apps/web/src/stores/room-list/algorithms/list-ordering/index.ts b/apps/web/src/stores/room-list/algorithms/list-ordering/index.ts index c492ddf4a9..50110cda5d 100644 --- a/apps/web/src/stores/room-list/algorithms/list-ordering/index.ts +++ b/apps/web/src/stores/room-list/algorithms/list-ordering/index.ts @@ -9,7 +9,7 @@ Please see LICENSE files in the repository root for full details. import { ImportanceAlgorithm } from "./ImportanceAlgorithm"; import { ListAlgorithm, type SortAlgorithm } from "../models"; import { NaturalAlgorithm } from "./NaturalAlgorithm"; -import { type TagID } from "../../models"; +import { type TagID } from "../../../room-list-v3/skip-list/tag"; import { type OrderingAlgorithm } from "./OrderingAlgorithm"; interface AlgorithmFactory { diff --git a/apps/web/src/stores/room-list/algorithms/models.ts b/apps/web/src/stores/room-list/algorithms/models.ts index 710c4f15a8..7000be601b 100644 --- a/apps/web/src/stores/room-list/algorithms/models.ts +++ b/apps/web/src/stores/room-list/algorithms/models.ts @@ -8,7 +8,7 @@ Please see LICENSE files in the repository root for full details. import { type Room } from "matrix-js-sdk/src/matrix"; -import { type TagID } from "../models"; +import { type TagID } from "../../room-list-v3/skip-list/tag"; import { type OrderingAlgorithm } from "./list-ordering/OrderingAlgorithm"; export enum SortAlgorithm { diff --git a/apps/web/src/stores/room-list/algorithms/tag-sorting/AlphabeticAlgorithm.ts b/apps/web/src/stores/room-list/algorithms/tag-sorting/AlphabeticAlgorithm.ts index 759d578c96..2f1bbbfa9f 100644 --- a/apps/web/src/stores/room-list/algorithms/tag-sorting/AlphabeticAlgorithm.ts +++ b/apps/web/src/stores/room-list/algorithms/tag-sorting/AlphabeticAlgorithm.ts @@ -8,7 +8,7 @@ Please see LICENSE files in the repository root for full details. import { type Room } from "matrix-js-sdk/src/matrix"; -import { type TagID } from "../../models"; +import { type TagID } from "../../../room-list-v3/skip-list/tag"; import { type IAlgorithm } from "./IAlgorithm"; /** diff --git a/apps/web/src/stores/room-list/algorithms/tag-sorting/IAlgorithm.ts b/apps/web/src/stores/room-list/algorithms/tag-sorting/IAlgorithm.ts index cc0d0b5cc7..69f3222c9b 100644 --- a/apps/web/src/stores/room-list/algorithms/tag-sorting/IAlgorithm.ts +++ b/apps/web/src/stores/room-list/algorithms/tag-sorting/IAlgorithm.ts @@ -8,7 +8,7 @@ Please see LICENSE files in the repository root for full details. import { type Room } from "matrix-js-sdk/src/matrix"; -import { type TagID } from "../../models"; +import { type TagID } from "../../../room-list-v3/skip-list/tag"; /** * Represents a tag sorting algorithm. diff --git a/apps/web/src/stores/room-list/algorithms/tag-sorting/ManualAlgorithm.ts b/apps/web/src/stores/room-list/algorithms/tag-sorting/ManualAlgorithm.ts index b880b6baaf..940fa7fd4e 100644 --- a/apps/web/src/stores/room-list/algorithms/tag-sorting/ManualAlgorithm.ts +++ b/apps/web/src/stores/room-list/algorithms/tag-sorting/ManualAlgorithm.ts @@ -8,7 +8,7 @@ Please see LICENSE files in the repository root for full details. import { type Room } from "matrix-js-sdk/src/matrix"; -import { type TagID } from "../../models"; +import { type TagID } from "../../../room-list-v3/skip-list/tag"; import { type IAlgorithm } from "./IAlgorithm"; /** diff --git a/apps/web/src/stores/room-list/algorithms/tag-sorting/RecentAlgorithm.ts b/apps/web/src/stores/room-list/algorithms/tag-sorting/RecentAlgorithm.ts index e41eeee816..eacb4e5253 100644 --- a/apps/web/src/stores/room-list/algorithms/tag-sorting/RecentAlgorithm.ts +++ b/apps/web/src/stores/room-list/algorithms/tag-sorting/RecentAlgorithm.ts @@ -8,7 +8,7 @@ Please see LICENSE files in the repository root for full details. import { type Room, type MatrixEvent, EventType } from "matrix-js-sdk/src/matrix"; -import { type TagID } from "../../models"; +import { type TagID } from "../../../room-list-v3/skip-list/tag"; import { type IAlgorithm } from "./IAlgorithm"; import { MatrixClientPeg } from "../../../../MatrixClientPeg"; import * as Unread from "../../../../Unread"; diff --git a/apps/web/src/stores/room-list/algorithms/tag-sorting/index.ts b/apps/web/src/stores/room-list/algorithms/tag-sorting/index.ts index bd728c821b..edf308fb39 100644 --- a/apps/web/src/stores/room-list/algorithms/tag-sorting/index.ts +++ b/apps/web/src/stores/room-list/algorithms/tag-sorting/index.ts @@ -11,7 +11,7 @@ import { type Room } from "matrix-js-sdk/src/matrix"; import { SortAlgorithm } from "../models"; import { ManualAlgorithm } from "./ManualAlgorithm"; import { type IAlgorithm } from "./IAlgorithm"; -import { type TagID } from "../../models"; +import { type TagID } from "../../../room-list-v3/skip-list/tag"; import { RecentAlgorithm } from "./RecentAlgorithm"; import { AlphabeticAlgorithm } from "./AlphabeticAlgorithm"; diff --git a/apps/web/src/stores/room-list/filters/VisibilityProvider.ts b/apps/web/src/stores/room-list/filters/VisibilityProvider.ts deleted file mode 100644 index 443c679db8..0000000000 --- a/apps/web/src/stores/room-list/filters/VisibilityProvider.ts +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2024 New Vector Ltd. - * Copyright 2020 The Matrix.org Foundation C.I.C. - * - * SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial - * Please see LICENSE files in the repository root for full details. - */ - -import { type Room } from "matrix-js-sdk/src/matrix"; - -import { RoomListCustomisations } from "../../../customisations/RoomList"; -import { isLocalRoom } from "../../../utils/localRoom/isLocalRoom"; - -export class VisibilityProvider { - private static internalInstance: VisibilityProvider; - - private constructor() {} - - public static get instance(): VisibilityProvider { - if (!VisibilityProvider.internalInstance) { - VisibilityProvider.internalInstance = new VisibilityProvider(); - } - return VisibilityProvider.internalInstance; - } - - public isRoomVisible(room?: Room): boolean { - if (!room) { - return false; - } - - // hide space rooms as they'll be shown in the SpacePanel - if (room.isSpaceRoom()) { - return false; - } - - if (isLocalRoom(room)) { - // local rooms shouldn't show up anywhere - return false; - } - - if (RoomListCustomisations.isRoomVisible) { - return RoomListCustomisations.isRoomVisible(room); - } - - return true; // default - } -} diff --git a/apps/web/src/stores/room-list/models.ts b/apps/web/src/stores/room-list/models.ts index 78823cbc42..90c721a9e2 100644 --- a/apps/web/src/stores/room-list/models.ts +++ b/apps/web/src/stores/room-list/models.ts @@ -6,17 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Com Please see LICENSE files in the repository root for full details. */ -export enum DefaultTagID { - Invite = "im.vector.fake.invite", - Untagged = "im.vector.fake.recent", // legacy: used to just be 'recent rooms' but now it's all untagged rooms - Archived = "im.vector.fake.archived", - LowPriority = "m.lowpriority", - Favourite = "m.favourite", - DM = "im.vector.fake.direct", - Conference = "im.vector.fake.conferences", - ServerNotice = "m.server_notice", - Suggested = "im.vector.fake.suggested", -} +import { DefaultTagID } from "../room-list-v3/skip-list/tag"; export const OrderedDefaultTagIDs = [ DefaultTagID.Invite, @@ -30,8 +20,6 @@ export const OrderedDefaultTagIDs = [ DefaultTagID.Archived, ]; -export type TagID = string | DefaultTagID; - export enum RoomUpdateCause { Timeline = "TIMELINE", PossibleTagChange = "POSSIBLE_TAG_CHANGE", diff --git a/apps/web/src/stores/room-list/previews/IPreview.ts b/apps/web/src/stores/room-list/previews/IPreview.ts index bdc5912821..3601831980 100644 --- a/apps/web/src/stores/room-list/previews/IPreview.ts +++ b/apps/web/src/stores/room-list/previews/IPreview.ts @@ -8,7 +8,7 @@ Please see LICENSE files in the repository root for full details. import { type MatrixEvent } from "matrix-js-sdk/src/matrix"; -import { type TagID } from "../models"; +import { type TagID } from "../../room-list-v3/skip-list/tag"; /** * Represents an event preview. diff --git a/apps/web/src/stores/room-list/previews/LegacyCallAnswerEventPreview.ts b/apps/web/src/stores/room-list/previews/LegacyCallAnswerEventPreview.ts index 8dda1f64bb..3c2f28b20c 100644 --- a/apps/web/src/stores/room-list/previews/LegacyCallAnswerEventPreview.ts +++ b/apps/web/src/stores/room-list/previews/LegacyCallAnswerEventPreview.ts @@ -9,7 +9,7 @@ Please see LICENSE files in the repository root for full details. import { type MatrixEvent } from "matrix-js-sdk/src/matrix"; import { type IPreview } from "./IPreview"; -import { type TagID } from "../models"; +import { type TagID } from "../../room-list-v3/skip-list/tag"; import { getSenderName, isSelf, shouldPrefixMessagesIn } from "./utils"; import { _t } from "../../../languageHandler"; diff --git a/apps/web/src/stores/room-list/previews/LegacyCallHangupEvent.ts b/apps/web/src/stores/room-list/previews/LegacyCallHangupEvent.ts index 3088c9590c..bceb017ffc 100644 --- a/apps/web/src/stores/room-list/previews/LegacyCallHangupEvent.ts +++ b/apps/web/src/stores/room-list/previews/LegacyCallHangupEvent.ts @@ -9,7 +9,7 @@ Please see LICENSE files in the repository root for full details. import { type MatrixEvent } from "matrix-js-sdk/src/matrix"; import { type IPreview } from "./IPreview"; -import { type TagID } from "../models"; +import { type TagID } from "../../room-list-v3/skip-list/tag"; import { getSenderName, isSelf, shouldPrefixMessagesIn } from "./utils"; import { _t } from "../../../languageHandler"; diff --git a/apps/web/src/stores/room-list/previews/LegacyCallInviteEventPreview.ts b/apps/web/src/stores/room-list/previews/LegacyCallInviteEventPreview.ts index 14ff23456e..427785c38e 100644 --- a/apps/web/src/stores/room-list/previews/LegacyCallInviteEventPreview.ts +++ b/apps/web/src/stores/room-list/previews/LegacyCallInviteEventPreview.ts @@ -9,7 +9,7 @@ Please see LICENSE files in the repository root for full details. import { type MatrixEvent } from "matrix-js-sdk/src/matrix"; import { type IPreview } from "./IPreview"; -import { type TagID } from "../models"; +import { type TagID } from "../../room-list-v3/skip-list/tag"; import { getSenderName, isSelf, shouldPrefixMessagesIn } from "./utils"; import { _t } from "../../../languageHandler"; diff --git a/apps/web/src/stores/room-list/previews/MessageEventPreview.ts b/apps/web/src/stores/room-list/previews/MessageEventPreview.ts index cf69e6903d..a5d58b3fb2 100644 --- a/apps/web/src/stores/room-list/previews/MessageEventPreview.ts +++ b/apps/web/src/stores/room-list/previews/MessageEventPreview.ts @@ -9,7 +9,7 @@ Please see LICENSE files in the repository root for full details. import { type MatrixEvent, MsgType, RelationType } from "matrix-js-sdk/src/matrix"; import { type IPreview } from "./IPreview"; -import { type TagID } from "../models"; +import { type TagID } from "../../room-list-v3/skip-list/tag"; import { _t, sanitizeForTranslation } from "../../../languageHandler"; import { getSenderName, isSelf, shouldPrefixMessagesIn } from "./utils"; import { getHtmlText } from "../../../HtmlUtils"; diff --git a/apps/web/src/stores/room-list/previews/PollStartEventPreview.ts b/apps/web/src/stores/room-list/previews/PollStartEventPreview.ts index d614e736a3..17bd5ffdf0 100644 --- a/apps/web/src/stores/room-list/previews/PollStartEventPreview.ts +++ b/apps/web/src/stores/room-list/previews/PollStartEventPreview.ts @@ -11,7 +11,7 @@ import { InvalidEventError } from "matrix-js-sdk/src/extensible_events_v1/Invali import { PollStartEvent } from "matrix-js-sdk/src/extensible_events_v1/PollStartEvent"; import { type IPreview } from "./IPreview"; -import { type TagID } from "../models"; +import { type TagID } from "../../room-list-v3/skip-list/tag"; import { _t, sanitizeForTranslation } from "../../../languageHandler"; import { getSenderName, isSelf, shouldPrefixMessagesIn } from "./utils"; import MatrixClientContext from "../../../contexts/MatrixClientContext"; diff --git a/apps/web/src/stores/room-list/previews/ReactionEventPreview.ts b/apps/web/src/stores/room-list/previews/ReactionEventPreview.ts index 15cb0c3489..c43666f019 100644 --- a/apps/web/src/stores/room-list/previews/ReactionEventPreview.ts +++ b/apps/web/src/stores/room-list/previews/ReactionEventPreview.ts @@ -9,7 +9,7 @@ Please see LICENSE files in the repository root for full details. import { type MatrixEvent } from "matrix-js-sdk/src/matrix"; import { type IPreview } from "./IPreview"; -import { type TagID } from "../models"; +import { type TagID } from "../../room-list-v3/skip-list/tag"; import { getSenderName, isSelf } from "./utils"; import { _t } from "../../../languageHandler"; import { MatrixClientPeg } from "../../../MatrixClientPeg"; diff --git a/apps/web/src/stores/room-list/previews/StickerEventPreview.ts b/apps/web/src/stores/room-list/previews/StickerEventPreview.ts index 701b97ffc8..3e1342faad 100644 --- a/apps/web/src/stores/room-list/previews/StickerEventPreview.ts +++ b/apps/web/src/stores/room-list/previews/StickerEventPreview.ts @@ -9,7 +9,7 @@ Please see LICENSE files in the repository root for full details. import { type MatrixEvent } from "matrix-js-sdk/src/matrix"; import { type IPreview } from "./IPreview"; -import { type TagID } from "../models"; +import { type TagID } from "../../room-list-v3/skip-list/tag"; import { getSenderName, isSelf, shouldPrefixMessagesIn } from "./utils"; import { _t } from "../../../languageHandler"; diff --git a/apps/web/src/stores/room-list/previews/utils.ts b/apps/web/src/stores/room-list/previews/utils.ts index d9ce0512de..2928e5e90a 100644 --- a/apps/web/src/stores/room-list/previews/utils.ts +++ b/apps/web/src/stores/room-list/previews/utils.ts @@ -9,7 +9,7 @@ Please see LICENSE files in the repository root for full details. import { type MatrixEvent } from "matrix-js-sdk/src/matrix"; import { MatrixClientPeg } from "../../../MatrixClientPeg"; -import { DefaultTagID, type TagID } from "../models"; +import { DefaultTagID, type TagID } from "../../room-list-v3/skip-list/tag"; export function isSelf(event: MatrixEvent): boolean { const selfUserId = MatrixClientPeg.safeGet().getSafeUserId(); diff --git a/apps/web/src/stores/spaces/SpaceStore.ts b/apps/web/src/stores/spaces/SpaceStore.ts index 98006ac905..2ccbb750a6 100644 --- a/apps/web/src/stores/spaces/SpaceStore.ts +++ b/apps/web/src/stores/spaces/SpaceStore.ts @@ -29,7 +29,7 @@ import SettingsStore from "../../settings/SettingsStore"; import DMRoomMap from "../../utils/DMRoomMap"; import { SpaceNotificationState } from "../notifications/SpaceNotificationState"; import { RoomNotificationStateStore } from "../notifications/RoomNotificationStateStore"; -import { DefaultTagID } from "../room-list/models"; +import { DefaultTagID } from "../room-list-v3/skip-list/tag"; import { EnhancedMap, mapDiff } from "../../utils/maps"; import { setDiff, setHasDiff } from "../../utils/sets"; import { Action } from "../../dispatcher/actions"; diff --git a/apps/web/src/utils/room/tagRoom.ts b/apps/web/src/utils/room/tagRoom.ts index 716dd959a8..9731c72bb4 100644 --- a/apps/web/src/utils/room/tagRoom.ts +++ b/apps/web/src/utils/room/tagRoom.ts @@ -10,7 +10,7 @@ import { type Room } from "matrix-js-sdk/src/matrix"; import { logger } from "matrix-js-sdk/src/logger"; import RoomListStore from "../../stores/room-list/RoomListStore"; -import { DefaultTagID, type TagID } from "../../stores/room-list/models"; +import { DefaultTagID, type TagID } from "../../stores/room-list-v3/skip-list/tag"; import RoomListActions from "../../actions/RoomListActions"; import dis from "../../dispatcher/dispatcher"; diff --git a/apps/web/src/viewmodels/room-list/RoomListItemViewModel.ts b/apps/web/src/viewmodels/room-list/RoomListItemViewModel.ts index 54a3ce965b..aad87b2837 100644 --- a/apps/web/src/viewmodels/room-list/RoomListItemViewModel.ts +++ b/apps/web/src/viewmodels/room-list/RoomListItemViewModel.ts @@ -20,7 +20,7 @@ import { RoomNotificationStateStore } from "../../stores/notifications/RoomNotif import { NotificationStateEvents } from "../../stores/notifications/NotificationState"; import { MessagePreviewStore } from "../../stores/room-list/MessagePreviewStore"; import { UPDATE_EVENT } from "../../stores/AsyncStore"; -import { DefaultTagID } from "../../stores/room-list/models"; +import { DefaultTagID } from "../../stores/room-list-v3/skip-list/tag"; import DMRoomMap from "../../utils/DMRoomMap"; import SettingsStore from "../../settings/SettingsStore"; import { NotificationLevel } from "../../stores/notifications/NotificationLevel"; diff --git a/apps/web/test/unit-tests/components/viewmodels/avatars/RoomAvatarViewModel-test.tsx b/apps/web/test/unit-tests/components/viewmodels/avatars/RoomAvatarViewModel-test.tsx index d046307d92..a0ed6d6f26 100644 --- a/apps/web/test/unit-tests/components/viewmodels/avatars/RoomAvatarViewModel-test.tsx +++ b/apps/web/test/unit-tests/components/viewmodels/avatars/RoomAvatarViewModel-test.tsx @@ -15,7 +15,7 @@ import { import { createTestClient, mkStubRoom } from "../../../../test-utils"; import DMRoomMap from "../../../../../src/utils/DMRoomMap"; import * as PresenceIndicatorModule from "../../../../../src/components/views/avatars/WithPresenceIndicator"; -import { DefaultTagID } from "../../../../../src/stores/room-list/models"; +import { DefaultTagID } from "../../../../../src/stores/room-list-v3/skip-list/tag"; jest.mock("../../../../../src/utils/room/getJoinedNonFunctionalMembers", () => ({ getJoinedNonFunctionalMembers: jest.fn().mockReturnValue([]), diff --git a/apps/web/test/unit-tests/components/viewmodels/right_panel/RoomSummaryCardViewModel-test.tsx b/apps/web/test/unit-tests/components/viewmodels/right_panel/RoomSummaryCardViewModel-test.tsx index 0c5745a086..331f11b51f 100644 --- a/apps/web/test/unit-tests/components/viewmodels/right_panel/RoomSummaryCardViewModel-test.tsx +++ b/apps/web/test/unit-tests/components/viewmodels/right_panel/RoomSummaryCardViewModel-test.tsx @@ -12,7 +12,7 @@ import { useRoomSummaryCardViewModel } from "../../../../../src/components/viewm import { mkStubRoom, stubClient, withClientContextRenderOptions } from "../../../../test-utils"; import defaultDispatcher from "../../../../../src/dispatcher/dispatcher"; import RoomListStore from "../../../../../src/stores/room-list/RoomListStore"; -import { DefaultTagID } from "../../../../../src/stores/room-list/models"; +import { DefaultTagID } from "../../../../../src/stores/room-list-v3/skip-list/tag"; import RightPanelStore from "../../../../../src/stores/right-panel/RightPanelStore"; import { RightPanelPhases } from "../../../../../src/stores/right-panel/RightPanelStorePhases"; import Modal from "../../../../../src/Modal"; diff --git a/apps/web/test/unit-tests/components/views/context_menus/RoomGeneralContextMenu-test.tsx b/apps/web/test/unit-tests/components/views/context_menus/RoomGeneralContextMenu-test.tsx index 6c71acc09e..9b65ac0346 100644 --- a/apps/web/test/unit-tests/components/views/context_menus/RoomGeneralContextMenu-test.tsx +++ b/apps/web/test/unit-tests/components/views/context_menus/RoomGeneralContextMenu-test.tsx @@ -21,7 +21,7 @@ import { } from "../../../../../src/components/views/context_menus/RoomGeneralContextMenu"; import MatrixClientContext from "../../../../../src/contexts/MatrixClientContext"; import { MatrixClientPeg } from "../../../../../src/MatrixClientPeg"; -import { DefaultTagID } from "../../../../../src/stores/room-list/models"; +import { DefaultTagID } from "../../../../../src/stores/room-list-v3/skip-list/tag"; import RoomListStore from "../../../../../src/stores/room-list/RoomListStore"; import DMRoomMap from "../../../../../src/utils/DMRoomMap"; import { mkMessage, stubClient } from "../../../../test-utils/test-utils"; diff --git a/apps/web/test/unit-tests/components/views/rooms/LegacyRoomList-test.tsx b/apps/web/test/unit-tests/components/views/rooms/LegacyRoomList-test.tsx index 7e9751631b..b043e6d590 100644 --- a/apps/web/test/unit-tests/components/views/rooms/LegacyRoomList-test.tsx +++ b/apps/web/test/unit-tests/components/views/rooms/LegacyRoomList-test.tsx @@ -27,7 +27,7 @@ import SpaceStore from "../../../../../src/stores/spaces/SpaceStore"; import DMRoomMap from "../../../../../src/utils/DMRoomMap"; import RoomListStore from "../../../../../src/stores/room-list/RoomListStore"; import { type ITagMap } from "../../../../../src/stores/room-list/algorithms/models"; -import { DefaultTagID } from "../../../../../src/stores/room-list/models"; +import { DefaultTagID } from "../../../../../src/stores/room-list-v3/skip-list/tag"; jest.mock("../../../../../src/customisations/helpers/UIComponents", () => ({ shouldShowComponent: jest.fn(), diff --git a/apps/web/test/unit-tests/components/views/rooms/RoomTile-test.tsx b/apps/web/test/unit-tests/components/views/rooms/RoomTile-test.tsx index f093840f1a..54fcc93f23 100644 --- a/apps/web/test/unit-tests/components/views/rooms/RoomTile-test.tsx +++ b/apps/web/test/unit-tests/components/views/rooms/RoomTile-test.tsx @@ -33,7 +33,7 @@ import { } from "../../../../test-utils"; import { CallStore } from "../../../../../src/stores/CallStore"; import RoomTile from "../../../../../src/components/views/rooms/RoomTile"; -import { DefaultTagID } from "../../../../../src/stores/room-list/models"; +import { DefaultTagID } from "../../../../../src/stores/room-list-v3/skip-list/tag"; import DMRoomMap from "../../../../../src/utils/DMRoomMap"; import PlatformPeg from "../../../../../src/PlatformPeg"; import type BasePlatform from "../../../../../src/BasePlatform"; diff --git a/apps/web/test/unit-tests/stores/SpaceStore-test.ts b/apps/web/test/unit-tests/stores/SpaceStore-test.ts index fc05cf5fed..2058edaa4a 100644 --- a/apps/web/test/unit-tests/stores/SpaceStore-test.ts +++ b/apps/web/test/unit-tests/stores/SpaceStore-test.ts @@ -38,7 +38,7 @@ import { SettingLevel } from "../../../src/settings/SettingLevel"; import { Action } from "../../../src/dispatcher/actions"; import { MatrixClientPeg } from "../../../src/MatrixClientPeg"; import RoomListStore from "../../../src/stores/room-list/RoomListStore"; -import { DefaultTagID } from "../../../src/stores/room-list/models"; +import { DefaultTagID } from "../../../src/stores/room-list-v3/skip-list/tag"; import { RoomNotificationStateStore } from "../../../src/stores/notifications/RoomNotificationStateStore"; import { NotificationLevel } from "../../../src/stores/notifications/NotificationLevel"; import { storeRoomAliasInCache } from "../../../src/RoomAliasCache.ts"; diff --git a/apps/web/test/unit-tests/stores/room-list-v3/RoomListStoreV3-test.ts b/apps/web/test/unit-tests/stores/room-list-v3/RoomListStoreV3-test.ts index bd1010ccdf..1662fcbd04 100644 --- a/apps/web/test/unit-tests/stores/room-list-v3/RoomListStoreV3-test.ts +++ b/apps/web/test/unit-tests/stores/room-list-v3/RoomListStoreV3-test.ts @@ -20,14 +20,14 @@ import { AlphabeticSorter } from "../../../../src/stores/room-list-v3/skip-list/ import dispatcher from "../../../../src/dispatcher/dispatcher"; import SpaceStore from "../../../../src/stores/spaces/SpaceStore"; import { MetaSpace, UPDATE_SELECTED_SPACE } from "../../../../src/stores/spaces"; -import { DefaultTagID } from "../../../../src/stores/room-list/models"; +import { DefaultTagID } from "../../../../src/stores/room-list-v3/skip-list/tag"; import { FilterKey } from "../../../../src/stores/room-list-v3/skip-list/filters"; import { RoomNotificationStateStore } from "../../../../src/stores/notifications/RoomNotificationStateStore"; import DMRoomMap from "../../../../src/utils/DMRoomMap"; import { SortingAlgorithm } from "../../../../src/stores/room-list-v3/skip-list/sorters"; import SettingsStore from "../../../../src/settings/SettingsStore"; import * as utils from "../../../../src/utils/notifications"; -import * as roomMute from "../../../../src/stores/room-list/utils/roomMute"; +import * as utilsRLS from "../../../../src/stores/room-list-v3/utils.ts"; import { Action } from "../../../../src/dispatcher/actions"; import { SettingLevel } from "../../../../src/settings/SettingLevel.ts"; @@ -852,7 +852,7 @@ describe("RoomListStoreV3", () => { // Let's say that muted room 64 becomes un-muted. const unmutedRoom = rooms[64]; - jest.spyOn(roomMute, "getChangedOverrideRoomMutePushRules").mockImplementation(() => [unmutedRoom.roomId]); + jest.spyOn(utilsRLS, "getChangedOverrideRoomMutePushRules").mockImplementation(() => [unmutedRoom.roomId]); client.getRoom = jest.fn().mockReturnValue(unmutedRoom); const payload = { action: "MatrixActions.accountData", diff --git a/apps/web/test/unit-tests/stores/room-list-v3/isRoomVisible-test.ts b/apps/web/test/unit-tests/stores/room-list-v3/isRoomVisible-test.ts new file mode 100644 index 0000000000..c2ddc74e49 --- /dev/null +++ b/apps/web/test/unit-tests/stores/room-list-v3/isRoomVisible-test.ts @@ -0,0 +1,58 @@ +/* + * Copyright 2026 Element Creations Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +import { mocked } from "jest-mock"; +import { type MatrixClient } from "matrix-js-sdk/src/matrix"; + +import { RoomListCustomisations } from "../../../../src/customisations/RoomList"; +import { isRoomVisible } from "../../../../src/stores/room-list-v3/isRoomVisible"; +import { createTestClient, mkRoom, mkSpace } from "../../../test-utils"; +import { LOCAL_ROOM_ID_PREFIX, LocalRoom } from "../../../../src/models/LocalRoom"; + +jest.mock("../../../../src/customisations/RoomList", () => ({ + RoomListCustomisations: { + isRoomVisible: jest.fn(), + }, +})); + +describe("isRoomVisible", () => { + let matrixClient: MatrixClient; + + beforeEach(() => { + matrixClient = createTestClient(); + }); + + it("should return false without room", () => { + expect(isRoomVisible()).toBe(false); + }); + + it("should return false for a space room", () => { + const room = mkSpace(matrixClient, "space-room"); + expect(isRoomVisible(room)).toBe(false); + }); + + it("should return false for a local room", () => { + const room = new LocalRoom(LOCAL_ROOM_ID_PREFIX + "test", createTestClient(), "@test:example.com"); + room.isSpaceRoom = () => false; + + expect(isRoomVisible(room)).toBe(false); + }); + + it("should return false if visibility customisation returns false", () => { + mocked(RoomListCustomisations.isRoomVisible!).mockReturnValue(false); + const room = mkRoom(matrixClient, "test-room"); + expect(isRoomVisible(room)).toBe(false); + expect(RoomListCustomisations.isRoomVisible!).toHaveBeenCalledWith(room); + }); + + it("should return true if visibility customisation returns true", () => { + mocked(RoomListCustomisations.isRoomVisible!).mockReturnValue(true); + const room = mkRoom(matrixClient, "test-room"); + expect(isRoomVisible(room)).toBe(true); + expect(RoomListCustomisations.isRoomVisible).toHaveBeenCalledWith(room); + }); +}); diff --git a/apps/web/test/unit-tests/stores/room-list-v3/skip-list/sorters/UnreadSorter-test.ts b/apps/web/test/unit-tests/stores/room-list-v3/skip-list/sorters/UnreadSorter-test.ts index b5ca4c777e..b8e9bbcc16 100644 --- a/apps/web/test/unit-tests/stores/room-list-v3/skip-list/sorters/UnreadSorter-test.ts +++ b/apps/web/test/unit-tests/stores/room-list-v3/skip-list/sorters/UnreadSorter-test.ts @@ -11,7 +11,7 @@ import { stubClient } from "../../../../../test-utils"; import { getMockedRooms } from "../getMockedRooms"; import { CallStore } from "../../../../../../src/stores/CallStore"; import type { Call } from "../../../../../../src/models/Call"; -import { DefaultTagID } from "../../../../../../src/stores/room-list/models"; +import { DefaultTagID } from "../../../../../../src/stores/room-list-v3/skip-list/tag"; import { RoomNotificationStateStore } from "../../../../../../src/stores/notifications/RoomNotificationStateStore"; import type { RoomNotificationState } from "../../../../../../src/stores/notifications/RoomNotificationState"; import * as utils from "../../../../../../src/utils/notifications"; diff --git a/apps/web/test/unit-tests/stores/room-list/utils/roomMute-test.ts b/apps/web/test/unit-tests/stores/room-list-v3/utils-test.ts similarity index 97% rename from apps/web/test/unit-tests/stores/room-list/utils/roomMute-test.ts rename to apps/web/test/unit-tests/stores/room-list-v3/utils-test.ts index 5934bcefdc..1b050ce456 100644 --- a/apps/web/test/unit-tests/stores/room-list/utils/roomMute-test.ts +++ b/apps/web/test/unit-tests/stores/room-list-v3/utils-test.ts @@ -8,8 +8,8 @@ Please see LICENSE files in the repository root for full details. import { ConditionKind, EventType, type IPushRule, MatrixEvent, PushRuleActionName } from "matrix-js-sdk/src/matrix"; -import { getChangedOverrideRoomMutePushRules } from "../../../../../src/stores/room-list/utils/roomMute"; -import { DEFAULT_PUSH_RULES, getDefaultRuleWithKind, makePushRule } from "../../../../test-utils/pushRules"; +import { getChangedOverrideRoomMutePushRules } from "../../../../src/stores/room-list-v3/utils"; +import { DEFAULT_PUSH_RULES, getDefaultRuleWithKind, makePushRule } from "../../../test-utils/pushRules"; describe("getChangedOverrideRoomMutePushRules()", () => { const makePushRulesEvent = (overrideRules: IPushRule[] = []): MatrixEvent => { diff --git a/apps/web/test/unit-tests/stores/room-list/MessagePreviewStore-test.ts b/apps/web/test/unit-tests/stores/room-list/MessagePreviewStore-test.ts index c6d1d9d56c..007ae760e3 100644 --- a/apps/web/test/unit-tests/stores/room-list/MessagePreviewStore-test.ts +++ b/apps/web/test/unit-tests/stores/room-list/MessagePreviewStore-test.ts @@ -20,7 +20,7 @@ import { import { MessagePreviewStore } from "../../../../src/stores/room-list/MessagePreviewStore"; import { mkEvent, mkMessage, mkReaction, setupAsyncStoreWithClient, stubClient } from "../../../test-utils"; -import { DefaultTagID } from "../../../../src/stores/room-list/models"; +import { DefaultTagID } from "../../../../src/stores/room-list-v3/skip-list/tag"; import { mkThread } from "../../../test-utils/threads"; describe("MessagePreviewStore", () => { diff --git a/apps/web/test/unit-tests/stores/room-list/RoomListStore-test.ts b/apps/web/test/unit-tests/stores/room-list/RoomListStore-test.ts index f6e1700ae3..d6139a6a21 100644 --- a/apps/web/test/unit-tests/stores/room-list/RoomListStore-test.ts +++ b/apps/web/test/unit-tests/stores/room-list/RoomListStore-test.ts @@ -23,7 +23,8 @@ import defaultDispatcher, { type MatrixDispatcher } from "../../../../src/dispat import { SettingLevel } from "../../../../src/settings/SettingLevel"; import SettingsStore, { type CallbackFn } from "../../../../src/settings/SettingsStore"; import { ListAlgorithm, SortAlgorithm } from "../../../../src/stores/room-list/algorithms/models"; -import { DefaultTagID, OrderedDefaultTagIDs, RoomUpdateCause } from "../../../../src/stores/room-list/models"; +import { DefaultTagID } from "../../../../src/stores/room-list-v3/skip-list/tag"; +import { OrderedDefaultTagIDs, RoomUpdateCause } from "../../../../src/stores/room-list/models"; import RoomListStore, { RoomListStoreClass } from "../../../../src/stores/room-list/RoomListStore"; import DMRoomMap from "../../../../src/utils/DMRoomMap"; import { flushPromises, stubClient, upsertRoomStateEvents, mkRoom } from "../../../test-utils"; diff --git a/apps/web/test/unit-tests/stores/room-list/algorithms/Algorithm-test.ts b/apps/web/test/unit-tests/stores/room-list/algorithms/Algorithm-test.ts index 893a13adfc..b7ba92b4ce 100644 --- a/apps/web/test/unit-tests/stores/room-list/algorithms/Algorithm-test.ts +++ b/apps/web/test/unit-tests/stores/room-list/algorithms/Algorithm-test.ts @@ -21,7 +21,7 @@ import { } from "../../../../test-utils"; import { MatrixClientPeg } from "../../../../../src/MatrixClientPeg"; import DMRoomMap from "../../../../../src/utils/DMRoomMap"; -import { DefaultTagID } from "../../../../../src/stores/room-list/models"; +import { DefaultTagID } from "../../../../../src/stores/room-list-v3/skip-list/tag"; import { SortAlgorithm, ListAlgorithm } from "../../../../../src/stores/room-list/algorithms/models"; import "../../../../../src/stores/room-list/RoomListStore"; // must be imported before Algorithm to avoid cycles import { Algorithm } from "../../../../../src/stores/room-list/algorithms/Algorithm"; diff --git a/apps/web/test/unit-tests/stores/room-list/algorithms/RecentAlgorithm-test.ts b/apps/web/test/unit-tests/stores/room-list/algorithms/RecentAlgorithm-test.ts index 3b7b031e27..33adc42129 100644 --- a/apps/web/test/unit-tests/stores/room-list/algorithms/RecentAlgorithm-test.ts +++ b/apps/web/test/unit-tests/stores/room-list/algorithms/RecentAlgorithm-test.ts @@ -14,7 +14,7 @@ import { MatrixClientPeg } from "../../../../../src/MatrixClientPeg"; import "../../../../../src/stores/room-list/RoomListStore"; import { RecentAlgorithm } from "../../../../../src/stores/room-list/algorithms/tag-sorting/RecentAlgorithm"; import { makeThreadEvent, mkThread } from "../../../../test-utils/threads"; -import { DefaultTagID } from "../../../../../src/stores/room-list/models"; +import { DefaultTagID } from "../../../../../src/stores/room-list-v3/skip-list/tag"; describe("RecentAlgorithm", () => { let algorithm: RecentAlgorithm; diff --git a/apps/web/test/unit-tests/stores/room-list/algorithms/list-ordering/ImportanceAlgorithm-test.ts b/apps/web/test/unit-tests/stores/room-list/algorithms/list-ordering/ImportanceAlgorithm-test.ts index aed501eef9..6e8f6f605e 100644 --- a/apps/web/test/unit-tests/stores/room-list/algorithms/list-ordering/ImportanceAlgorithm-test.ts +++ b/apps/web/test/unit-tests/stores/room-list/algorithms/list-ordering/ImportanceAlgorithm-test.ts @@ -13,7 +13,8 @@ import { RoomNotificationStateStore } from "../../../../../../src/stores/notific import { ImportanceAlgorithm } from "../../../../../../src/stores/room-list/algorithms/list-ordering/ImportanceAlgorithm"; import { SortAlgorithm } from "../../../../../../src/stores/room-list/algorithms/models"; import * as RoomNotifs from "../../../../../../src/RoomNotifs"; -import { DefaultTagID, RoomUpdateCause } from "../../../../../../src/stores/room-list/models"; +import { DefaultTagID } from "../../../../../../src/stores/room-list-v3/skip-list/tag"; +import { RoomUpdateCause } from "../../../../../../src/stores/room-list/models"; import { NotificationLevel } from "../../../../../../src/stores/notifications/NotificationLevel"; import { AlphabeticAlgorithm } from "../../../../../../src/stores/room-list/algorithms/tag-sorting/AlphabeticAlgorithm"; import { getMockClientWithEventEmitter, mockClientMethodsUser } from "../../../../../test-utils"; diff --git a/apps/web/test/unit-tests/stores/room-list/algorithms/list-ordering/NaturalAlgorithm-test.ts b/apps/web/test/unit-tests/stores/room-list/algorithms/list-ordering/NaturalAlgorithm-test.ts index 6fdf71b02d..dd6a292841 100644 --- a/apps/web/test/unit-tests/stores/room-list/algorithms/list-ordering/NaturalAlgorithm-test.ts +++ b/apps/web/test/unit-tests/stores/room-list/algorithms/list-ordering/NaturalAlgorithm-test.ts @@ -11,7 +11,8 @@ import { logger } from "matrix-js-sdk/src/logger"; import { NaturalAlgorithm } from "../../../../../../src/stores/room-list/algorithms/list-ordering/NaturalAlgorithm"; import { SortAlgorithm } from "../../../../../../src/stores/room-list/algorithms/models"; -import { DefaultTagID, RoomUpdateCause } from "../../../../../../src/stores/room-list/models"; +import { DefaultTagID } from "../../../../../../src/stores/room-list-v3/skip-list/tag"; +import { RoomUpdateCause } from "../../../../../../src/stores/room-list/models"; import { AlphabeticAlgorithm } from "../../../../../../src/stores/room-list/algorithms/tag-sorting/AlphabeticAlgorithm"; import { RecentAlgorithm } from "../../../../../../src/stores/room-list/algorithms/tag-sorting/RecentAlgorithm"; import { RoomNotificationStateStore } from "../../../../../../src/stores/notifications/RoomNotificationStateStore"; diff --git a/apps/web/test/unit-tests/stores/room-list/filters/VisibilityProvider-test.ts b/apps/web/test/unit-tests/stores/room-list/filters/VisibilityProvider-test.ts deleted file mode 100644 index 95e0a3e103..0000000000 --- a/apps/web/test/unit-tests/stores/room-list/filters/VisibilityProvider-test.ts +++ /dev/null @@ -1,74 +0,0 @@ -/* -Copyright 2024 New Vector Ltd. -Copyright 2022 The Matrix.org Foundation C.I.C. - -SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial -Please see LICENSE files in the repository root for full details. -*/ - -import { mocked } from "jest-mock"; -import { type Room, RoomType } from "matrix-js-sdk/src/matrix"; - -import { VisibilityProvider } from "../../../../../src/stores/room-list/filters/VisibilityProvider"; -import { LocalRoom, LOCAL_ROOM_ID_PREFIX } from "../../../../../src/models/LocalRoom"; -import { RoomListCustomisations } from "../../../../../src/customisations/RoomList"; -import { createTestClient } from "../../../../test-utils"; - -jest.mock("../../../../../src/customisations/RoomList", () => ({ - RoomListCustomisations: { - isRoomVisible: jest.fn(), - }, -})); - -const createRoom = (isSpaceRoom = false): Room => { - return { - isSpaceRoom: () => isSpaceRoom, - getType: () => (isSpaceRoom ? RoomType.Space : undefined), - } as unknown as Room; -}; - -const createLocalRoom = (): LocalRoom => { - const room = new LocalRoom(LOCAL_ROOM_ID_PREFIX + "test", createTestClient(), "@test:example.com"); - room.isSpaceRoom = () => false; - return room; -}; - -describe("VisibilityProvider", () => { - describe("instance", () => { - it("should return an instance", () => { - const visibilityProvider = VisibilityProvider.instance; - expect(visibilityProvider).toBeInstanceOf(VisibilityProvider); - expect(VisibilityProvider.instance).toBe(visibilityProvider); - }); - }); - - describe("isRoomVisible", () => { - it("should return false without room", () => { - expect(VisibilityProvider.instance.isRoomVisible()).toBe(false); - }); - - it("should return false for a space room", () => { - const room = createRoom(true); - expect(VisibilityProvider.instance.isRoomVisible(room)).toBe(false); - }); - - it("should return false for a local room", () => { - const room = createLocalRoom(); - expect(VisibilityProvider.instance.isRoomVisible(room)).toBe(false); - }); - - it("should return false if visibility customisation returns false", () => { - mocked(RoomListCustomisations.isRoomVisible!).mockReturnValue(false); - const room = createRoom(); - expect(VisibilityProvider.instance.isRoomVisible(room)).toBe(false); - expect(RoomListCustomisations.isRoomVisible).toHaveBeenCalledWith(room); - }); - - it("should return true if visibility customisation returns true", () => { - mocked(RoomListCustomisations.isRoomVisible!).mockReturnValue(true); - const room = createRoom(); - expect(VisibilityProvider.instance.isRoomVisible(room)).toBe(true); - expect(RoomListCustomisations.isRoomVisible).toHaveBeenCalledWith(room); - }); - }); -}); diff --git a/apps/web/test/unit-tests/utils/room/tagRoom-test.ts b/apps/web/test/unit-tests/utils/room/tagRoom-test.ts index fa1850415e..af4ac46a0f 100644 --- a/apps/web/test/unit-tests/utils/room/tagRoom-test.ts +++ b/apps/web/test/unit-tests/utils/room/tagRoom-test.ts @@ -10,7 +10,7 @@ import { Room } from "matrix-js-sdk/src/matrix"; import RoomListActions from "../../../../src/actions/RoomListActions"; import defaultDispatcher from "../../../../src/dispatcher/dispatcher"; -import { DefaultTagID, type TagID } from "../../../../src/stores/room-list/models"; +import { DefaultTagID, type TagID } from "../../../../src/stores/room-list-v3/skip-list/tag"; import RoomListStore from "../../../../src/stores/room-list/RoomListStore"; import { tagRoom } from "../../../../src/utils/room/tagRoom"; import { getMockClientWithEventEmitter } from "../../../test-utils"; diff --git a/apps/web/test/viewmodels/room-list/RoomListItemViewModel-test.tsx b/apps/web/test/viewmodels/room-list/RoomListItemViewModel-test.tsx index 9850f244e0..0fdacf00b4 100644 --- a/apps/web/test/viewmodels/room-list/RoomListItemViewModel-test.tsx +++ b/apps/web/test/viewmodels/room-list/RoomListItemViewModel-test.tsx @@ -23,7 +23,7 @@ import { type MessagePreview, MessagePreviewStore } from "../../../src/stores/ro import { UPDATE_EVENT } from "../../../src/stores/AsyncStore"; import SettingsStore from "../../../src/settings/SettingsStore"; import DMRoomMap from "../../../src/utils/DMRoomMap"; -import { DefaultTagID } from "../../../src/stores/room-list/models"; +import { DefaultTagID } from "../../../src/stores/room-list-v3/skip-list/tag"; import dispatcher from "../../../src/dispatcher/dispatcher"; import { Action } from "../../../src/dispatcher/actions"; import { CallStore } from "../../../src/stores/CallStore";