Skip to content
This repository was archived by the owner on Sep 11, 2024. It is now read-only.

Commit 6f28964

Browse files
authored
Merge pull request #5979 from matrix-org/t3chguy/spaces-logs
Guard all isSpaceRoom calls behind the labs flag
2 parents b5c2549 + 9518e4d commit 6f28964

File tree

11 files changed

+34
-23
lines changed

11 files changed

+34
-23
lines changed

src/Avatar.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {Room} from "matrix-js-sdk/src/models/room";
2020

2121
import DMRoomMap from './utils/DMRoomMap';
2222
import {mediaFromMxc} from "./customisations/Media";
23+
import SettingsStore from "./settings/SettingsStore";
2324

2425
export type ResizeMethod = "crop" | "scale";
2526

@@ -143,7 +144,7 @@ export function avatarUrlForRoom(room: Room, width: number, height: number, resi
143144
}
144145

145146
// space rooms cannot be DMs so skip the rest
146-
if (room.isSpaceRoom()) return null;
147+
if (SettingsStore.getValue("feature_spaces") && room.isSpaceRoom()) return null;
147148

148149
let otherMember = null;
149150
const otherUserId = DMRoomMap.shared().getUserIdForRoomId(room.roomId);

src/components/structures/MatrixChat.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1094,7 +1094,7 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
10941094

10951095
private leaveRoomWarnings(roomId: string) {
10961096
const roomToLeave = MatrixClientPeg.get().getRoom(roomId);
1097-
const isSpace = roomToLeave?.isSpaceRoom();
1097+
const isSpace = SettingsStore.getValue("feature_spaces") && roomToLeave?.isSpaceRoom();
10981098
// Show a warning if there are additional complications.
10991099
const warnings = [];
11001100

@@ -1133,7 +1133,7 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
11331133
const roomToLeave = MatrixClientPeg.get().getRoom(roomId);
11341134
const warnings = this.leaveRoomWarnings(roomId);
11351135

1136-
const isSpace = roomToLeave?.isSpaceRoom();
1136+
const isSpace = SettingsStore.getValue("feature_spaces") && roomToLeave?.isSpaceRoom();
11371137
Modal.createTrackedDialog(isSpace ? "Leave space" : "Leave room", '', QuestionDialog, {
11381138
title: isSpace ? _t("Leave space") : _t("Leave room"),
11391139
description: (

src/components/structures/RightPanel.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import {Action} from "../../dispatcher/actions";
3535
import RoomSummaryCard from "../views/right_panel/RoomSummaryCard";
3636
import WidgetCard from "../views/right_panel/WidgetCard";
3737
import {replaceableComponent} from "../../utils/replaceableComponent";
38+
import SettingsStore from "../../settings/SettingsStore";
3839

3940
@replaceableComponent("structures.RightPanel")
4041
export default class RightPanel extends React.Component {
@@ -85,7 +86,9 @@ export default class RightPanel extends React.Component {
8586
return RightPanelPhases.GroupMemberList;
8687
}
8788
return rps.groupPanelPhase;
88-
} else if (this.props.room?.isSpaceRoom() && !RIGHT_PANEL_SPACE_PHASES.includes(rps.roomPanelPhase)) {
89+
} else if (SettingsStore.getValue("feature_spaces") && this.props.room?.isSpaceRoom()
90+
&& !RIGHT_PANEL_SPACE_PHASES.includes(rps.roomPanelPhase)
91+
) {
8992
return RightPanelPhases.SpaceMemberList;
9093
} else if (userForPanel) {
9194
// XXX FIXME AAAAAARGH: What is going on with this class!? It takes some of its state

src/components/structures/RoomView.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1750,7 +1750,10 @@ export default class RoomView extends React.Component<IProps, IState> {
17501750
}
17511751

17521752
const myMembership = this.state.room.getMyMembership();
1753-
if (myMembership === "invite" && !this.state.room.isSpaceRoom()) { // SpaceRoomView handles invites itself
1753+
if (myMembership === "invite"
1754+
// SpaceRoomView handles invites itself
1755+
&& (!SettingsStore.getValue("feature_spaces") || !this.state.room.isSpaceRoom())
1756+
) {
17541757
if (this.state.joining || this.state.rejecting) {
17551758
return (
17561759
<ErrorBoundary>
@@ -1892,7 +1895,7 @@ export default class RoomView extends React.Component<IProps, IState> {
18921895
room={this.state.room}
18931896
/>
18941897
);
1895-
if (!this.state.canPeek && !this.state.room?.isSpaceRoom()) {
1898+
if (!this.state.canPeek && (!SettingsStore.getValue("feature_spaces") || !this.state.room?.isSpaceRoom())) {
18961899
return (
18971900
<div className="mx_RoomView">
18981901
{ previewBar }

src/components/views/dialogs/InviteDialog.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1312,7 +1312,7 @@ export default class InviteDialog extends React.PureComponent<IInviteDialogProps
13121312
goButtonFn = this._startDm;
13131313
} else if (this.props.kind === KIND_INVITE) {
13141314
const room = MatrixClientPeg.get()?.getRoom(this.props.roomId);
1315-
const isSpace = room?.isSpaceRoom();
1315+
const isSpace = SettingsStore.getValue("feature_spaces") && room?.isSpaceRoom();
13161316
title = isSpace
13171317
? _t("Invite to %(spaceName)s", {
13181318
spaceName: room.name || _t("Unnamed Space"),

src/components/views/right_panel/UserInfo.tsx

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -440,7 +440,7 @@ const UserOptionsSection: React.FC<{
440440
);
441441
};
442442

443-
const warnSelfDemote = async (isSpace) => {
443+
const warnSelfDemote = async (isSpace: boolean) => {
444444
const {finished} = Modal.createTrackedDialog('Demoting Self', '', QuestionDialog, {
445445
title: _t("Demote yourself?"),
446446
description:
@@ -727,7 +727,7 @@ const MuteToggleButton: React.FC<IBaseRoomProps> = ({member, room, powerLevels,
727727
// if muting self, warn as it may be irreversible
728728
if (target === cli.getUserId()) {
729729
try {
730-
if (!(await warnSelfDemote(room?.isSpaceRoom()))) return;
730+
if (!(await warnSelfDemote(SettingsStore.getValue("feature_spaces") && room?.isSpaceRoom()))) return;
731731
} catch (e) {
732732
console.error("Failed to warn about self demotion: ", e);
733733
return;
@@ -816,7 +816,7 @@ const RoomAdminToolsContainer: React.FC<IBaseRoomProps> = ({
816816
if (canAffectUser && me.powerLevel >= kickPowerLevel) {
817817
kickButton = <RoomKickButton member={member} startUpdating={startUpdating} stopUpdating={stopUpdating} />;
818818
}
819-
if (me.powerLevel >= redactPowerLevel && !room.isSpaceRoom()) {
819+
if (me.powerLevel >= redactPowerLevel && (!SettingsStore.getValue("feature_spaces") || !room.isSpaceRoom())) {
820820
redactButton = (
821821
<RedactMessagesButton member={member} startUpdating={startUpdating} stopUpdating={stopUpdating} />
822822
);
@@ -1095,7 +1095,7 @@ const PowerLevelEditor: React.FC<{
10951095
} else if (myUserId === target) {
10961096
// If we are changing our own PL it can only ever be decreasing, which we cannot reverse.
10971097
try {
1098-
if (!(await warnSelfDemote(room?.isSpaceRoom()))) return;
1098+
if (!(await warnSelfDemote(SettingsStore.getValue("feature_spaces") && room?.isSpaceRoom()))) return;
10991099
} catch (e) {
11001100
console.error("Failed to warn about self demotion: ", e);
11011101
}
@@ -1325,10 +1325,10 @@ const BasicUserInfo: React.FC<{
13251325
if (!isRoomEncrypted) {
13261326
if (!cryptoEnabled) {
13271327
text = _t("This client does not support end-to-end encryption.");
1328-
} else if (room && !room.isSpaceRoom()) {
1328+
} else if (room && (!SettingsStore.getValue("feature_spaces") || !room.isSpaceRoom())) {
13291329
text = _t("Messages in this room are not end-to-end encrypted.");
13301330
}
1331-
} else if (!room.isSpaceRoom()) {
1331+
} else if (!SettingsStore.getValue("feature_spaces") || !room.isSpaceRoom()) {
13321332
text = _t("Messages in this room are end-to-end encrypted.");
13331333
}
13341334

@@ -1405,7 +1405,7 @@ const BasicUserInfo: React.FC<{
14051405
canInvite={roomPermissions.canInvite}
14061406
isIgnored={isIgnored}
14071407
member={member}
1408-
isSpace={room?.isSpaceRoom()}
1408+
isSpace={SettingsStore.getValue("feature_spaces") && room?.isSpaceRoom()}
14091409
/>
14101410

14111411
{ adminToolsContainer }
@@ -1567,7 +1567,7 @@ const UserInfo: React.FC<Props> = ({
15671567
previousPhase = RightPanelPhases.RoomMemberInfo;
15681568
refireParams = {member: member};
15691569
} else if (room) {
1570-
previousPhase = previousPhase = room.isSpaceRoom()
1570+
previousPhase = previousPhase = SettingsStore.getValue("feature_spaces") && room.isSpaceRoom()
15711571
? RightPanelPhases.SpaceMemberList
15721572
: RightPanelPhases.RoomMemberList;
15731573
}
@@ -1616,7 +1616,7 @@ const UserInfo: React.FC<Props> = ({
16161616
}
16171617

16181618
let scopeHeader;
1619-
if (room?.isSpaceRoom()) {
1619+
if (SettingsStore.getValue("feature_spaces") && room?.isSpaceRoom()) {
16201620
scopeHeader = <div className="mx_RightPanel_scopeHeader">
16211621
<RoomAvatar room={room} height={32} width={32} />
16221622
<RoomName room={room} />

src/components/views/rooms/MemberList.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import {RightPanelPhases} from "../../../stores/RightPanelStorePhases";
3030
import RoomAvatar from "../avatars/RoomAvatar";
3131
import RoomName from "../elements/RoomName";
3232
import {replaceableComponent} from "../../../utils/replaceableComponent";
33+
import SettingsStore from "../../../settings/SettingsStore";
3334

3435
const INITIAL_LOAD_NUM_MEMBERS = 30;
3536
const INITIAL_LOAD_NUM_INVITED = 5;
@@ -460,7 +461,7 @@ export default class MemberList extends React.Component {
460461
const chat = CommunityPrototypeStore.instance.getSelectedCommunityGeneralChat();
461462
if (chat && chat.roomId === this.props.roomId) {
462463
inviteButtonText = _t("Invite to this community");
463-
} else if (room.isSpaceRoom()) {
464+
} else if (SettingsStore.getValue("feature_spaces") && room.isSpaceRoom()) {
464465
inviteButtonText = _t("Invite to this space");
465466
}
466467

@@ -492,7 +493,7 @@ export default class MemberList extends React.Component {
492493
let previousPhase = RightPanelPhases.RoomSummary;
493494
// We have no previousPhase for when viewing a MemberList from a Space
494495
let scopeHeader;
495-
if (room?.isSpaceRoom()) {
496+
if (SettingsStore.getValue("feature_spaces") && room?.isSpaceRoom()) {
496497
previousPhase = undefined;
497498
scopeHeader = <div className="mx_RightPanel_scopeHeader">
498499
<RoomAvatar room={room} height={32} width={32} />

src/components/views/rooms/ThirdPartyMemberInfo.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import {isValid3pidInvite} from "../../../RoomInvite";
2626
import RoomAvatar from "../avatars/RoomAvatar";
2727
import RoomName from "../elements/RoomName";
2828
import {replaceableComponent} from "../../../utils/replaceableComponent";
29+
import SettingsStore from "../../../settings/SettingsStore";
2930

3031
interface IProps {
3132
event: MatrixEvent;
@@ -135,7 +136,7 @@ export default class ThirdPartyMemberInfo extends React.Component<IProps, IState
135136
}
136137

137138
let scopeHeader;
138-
if (this.room.isSpaceRoom()) {
139+
if (SettingsStore.getValue("feature_spaces") && this.room.isSpaceRoom()) {
139140
scopeHeader = <div className="mx_RightPanel_scopeHeader">
140141
<RoomAvatar room={this.room} height={32} width={32} />
141142
<RoomName room={this.room} />

src/stores/BreadcrumbsStore.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ export class BreadcrumbsStore extends AsyncStoreWithClient<IState> {
122122
}
123123

124124
private async appendRoom(room: Room) {
125-
if (room.isSpaceRoom() && SettingsStore.getValue("feature_spaces")) return; // hide space rooms
125+
if (SettingsStore.getValue("feature_spaces") && room.isSpaceRoom()) return; // hide space rooms
126126
let updated = false;
127127
const rooms = (this.state.rooms || []).slice(); // cheap clone
128128

src/stores/room-list/algorithms/Algorithm.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -199,8 +199,10 @@ export class Algorithm extends EventEmitter {
199199
}
200200

201201
private async doUpdateStickyRoom(val: Room) {
202-
// no-op sticky rooms for spaces - they're effectively virtual rooms
203-
if (val?.isSpaceRoom() && val.getMyMembership() !== "invite") val = null;
202+
if (SettingsStore.getValue("feature_spaces") && val?.isSpaceRoom() && val.getMyMembership() !== "invite") {
203+
// no-op sticky rooms for spaces - they're effectively virtual rooms
204+
val = null;
205+
}
204206

205207
// Note throughout: We need async so we can wait for handleRoomUpdate() to do its thing,
206208
// otherwise we risk duplicating rooms.

0 commit comments

Comments
 (0)