diff --git a/src/Avatar.ts b/src/Avatar.ts index 60bdfdcf75..e2557e21a8 100644 --- a/src/Avatar.ts +++ b/src/Avatar.ts @@ -165,6 +165,9 @@ export function avatarUrlForRoom(room: Room, width: number, height: number, resi return explicitRoomAvatar; } + // space rooms cannot be DMs so skip the rest + if (room.isSpaceRoom()) return null; + let otherMember = null; const otherUserId = DMRoomMap.shared().getUserIdForRoomId(room.roomId); if (otherUserId) { diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index c3038fd9af..77451c1da8 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -777,6 +777,7 @@ "%(senderName)s: %(reaction)s": "%(senderName)s: %(reaction)s", "%(senderName)s: %(stickerName)s": "%(senderName)s: %(stickerName)s", "Change notification settings": "Change notification settings", + "Spaces prototype. Incompatible with Communities, Communities v2 and Custom Tags": "Spaces prototype. Incompatible with Communities, Communities v2 and Custom Tags", "Render LaTeX maths in messages": "Render LaTeX maths in messages", "Communities v2 prototypes. Requires compatible homeserver. Highly experimental - use with caution.": "Communities v2 prototypes. Requires compatible homeserver. Highly experimental - use with caution.", "New spinner design": "New spinner design", diff --git a/src/stores/BreadcrumbsStore.ts b/src/stores/BreadcrumbsStore.ts index 24906f678c..393f4f27a1 100644 --- a/src/stores/BreadcrumbsStore.ts +++ b/src/stores/BreadcrumbsStore.ts @@ -122,6 +122,7 @@ export class BreadcrumbsStore extends AsyncStoreWithClient { } private async appendRoom(room: Room) { + if (room.isSpaceRoom() && SettingsStore.getValue("feature_spaces")) return; // hide space rooms let updated = false; const rooms = (this.state.rooms || []).slice(); // cheap clone diff --git a/src/stores/room-list/filters/VisibilityProvider.ts b/src/stores/room-list/filters/VisibilityProvider.ts index af38141e5d..388bb061e3 100644 --- a/src/stores/room-list/filters/VisibilityProvider.ts +++ b/src/stores/room-list/filters/VisibilityProvider.ts @@ -18,6 +18,7 @@ import {Room} from "matrix-js-sdk/src/models/room"; import CallHandler from "../../../CallHandler"; import { RoomListCustomisations } from "../../../customisations/RoomList"; import VoipUserMapper from "../../../VoipUserMapper"; +import SettingsStore from "../../../settings/SettingsStore"; export class VisibilityProvider { private static internalInstance: VisibilityProvider; @@ -37,22 +38,23 @@ export class VisibilityProvider { } public isRoomVisible(room: Room): boolean { - let isVisible = true; // Returned at the end of this function - let forced = false; // When true, this function won't bother calling the customisation points - if ( CallHandler.sharedInstance().getSupportsVirtualRooms() && VoipUserMapper.sharedInstance().isVirtualRoom(room) ) { - isVisible = false; - forced = true; + return false; + } + + // hide space rooms as they'll be shown in the SpacePanel + if (room.isSpaceRoom() && SettingsStore.getValue("feature_spaces")) { + return false; } const isVisibleFn = RoomListCustomisations.isRoomVisible; - if (!forced && isVisibleFn) { - isVisible = isVisibleFn(room); + if (isVisibleFn) { + return isVisibleFn(room); } - return isVisible; + return true; // default } }