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

Commit 76022dc

Browse files
authored
Merge pull request #6381 from matrix-org/t3chguy/spacesperf
2 parents f4788a6 + 316b214 commit 76022dc

31 files changed

+114
-87
lines changed

src/Avatar.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { ResizeMethod } from "matrix-js-sdk/src/@types/partials";
2121

2222
import DMRoomMap from './utils/DMRoomMap';
2323
import { mediaFromMxc } from "./customisations/Media";
24-
import SettingsStore from "./settings/SettingsStore";
24+
import SpaceStore from "./stores/SpaceStore";
2525

2626
// Not to be used for BaseAvatar urls as that has similar default avatar fallback already
2727
export function avatarUrlForMember(
@@ -153,7 +153,7 @@ export function avatarUrlForRoom(room: Room, width: number, height: number, resi
153153
}
154154

155155
// space rooms cannot be DMs so skip the rest
156-
if (SettingsStore.getValue("feature_spaces") && room.isSpaceRoom()) return null;
156+
if (SpaceStore.spacesEnabled && room.isSpaceRoom()) return null;
157157

158158
let otherMember = null;
159159
const otherUserId = DMRoomMap.shared().getUserIdForRoomId(room.roomId);

src/autocomplete/Autocompleter.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ import EmojiProvider from './EmojiProvider';
2727
import NotifProvider from './NotifProvider';
2828
import { timeout } from "../utils/promise";
2929
import AutocompleteProvider, { ICommand } from "./AutocompleteProvider";
30-
import SettingsStore from "../settings/SettingsStore";
3130
import SpaceProvider from "./SpaceProvider";
31+
import SpaceStore from "../stores/SpaceStore";
3232

3333
export interface ISelectionRange {
3434
beginning?: boolean; // whether the selection is in the first block of the editor or not
@@ -58,8 +58,7 @@ const PROVIDERS = [
5858
DuckDuckGoProvider,
5959
];
6060

61-
// as the spaces feature is device configurable only, and toggling it refreshes the page, we can do this here
62-
if (SettingsStore.getValue("feature_spaces")) {
61+
if (SpaceStore.spacesEnabled) {
6362
PROVIDERS.push(SpaceProvider);
6463
} else {
6564
PROVIDERS.push(CommunityProvider);

src/autocomplete/RoomProvider.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import { PillCompletion } from './Components';
2828
import { makeRoomPermalink } from "../utils/permalinks/Permalinks";
2929
import { ICompletion, ISelectionRange } from "./Autocompleter";
3030
import RoomAvatar from '../components/views/avatars/RoomAvatar';
31-
import SettingsStore from "../settings/SettingsStore";
31+
import SpaceStore from "../stores/SpaceStore";
3232

3333
const ROOM_REGEX = /\B#\S*/g;
3434

@@ -59,7 +59,8 @@ export default class RoomProvider extends AutocompleteProvider {
5959
const cli = MatrixClientPeg.get();
6060
let rooms = cli.getVisibleRooms();
6161

62-
if (SettingsStore.getValue("feature_spaces")) {
62+
// if spaces are enabled then filter them out here as they get their own autocomplete provider
63+
if (SpaceStore.spacesEnabled) {
6364
rooms = rooms.filter(r => !r.isSpaceRoom());
6465
}
6566

src/components/structures/LoggedInView.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ import ToastContainer from './ToastContainer';
6363
import MyGroups from "./MyGroups";
6464
import UserView from "./UserView";
6565
import GroupView from "./GroupView";
66+
import SpaceStore from "../../stores/SpaceStore";
6667

6768
// We need to fetch each pinned message individually (if we don't already have it)
6869
// so each pinned message may trigger a request. Limit the number per room for sanity.
@@ -631,7 +632,7 @@ class LoggedInView extends React.Component<IProps, IState> {
631632
>
632633
<ToastContainer />
633634
<div ref={this._resizeContainer} className={bodyClasses}>
634-
{ SettingsStore.getValue("feature_spaces") ? <SpacePanel /> : null }
635+
{ SpaceStore.spacesEnabled ? <SpacePanel /> : null }
635636
<LeftPanel
636637
isMinimized={this.props.collapseLhs || false}
637638
resizeNotifier={this.props.resizeNotifier}

src/components/structures/MatrixChat.tsx

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

11001100
private leaveRoomWarnings(roomId: string) {
11011101
const roomToLeave = MatrixClientPeg.get().getRoom(roomId);
1102-
const isSpace = SettingsStore.getValue("feature_spaces") && roomToLeave?.isSpaceRoom();
1102+
const isSpace = SpaceStore.spacesEnabled && roomToLeave?.isSpaceRoom();
11031103
// Show a warning if there are additional complications.
11041104
const warnings = [];
11051105

@@ -1137,7 +1137,7 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
11371137
const roomToLeave = MatrixClientPeg.get().getRoom(roomId);
11381138
const warnings = this.leaveRoomWarnings(roomId);
11391139

1140-
const isSpace = SettingsStore.getValue("feature_spaces") && roomToLeave?.isSpaceRoom();
1140+
const isSpace = SpaceStore.spacesEnabled && roomToLeave?.isSpaceRoom();
11411141
Modal.createTrackedDialog(isSpace ? "Leave space" : "Leave room", '', QuestionDialog, {
11421142
title: isSpace ? _t("Leave space") : _t("Leave room"),
11431143
description: (
@@ -1687,7 +1687,7 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
16871687
const type = screen === "start_sso" ? "sso" : "cas";
16881688
PlatformPeg.get().startSingleSignOn(cli, type, this.getFragmentAfterLogin());
16891689
} else if (screen === 'groups') {
1690-
if (SettingsStore.getValue("feature_spaces")) {
1690+
if (SpaceStore.spacesEnabled) {
16911691
dis.dispatch({ action: "view_home_page" });
16921692
return;
16931693
}
@@ -1774,7 +1774,7 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
17741774
subAction: params.action,
17751775
});
17761776
} else if (screen.indexOf('group/') === 0) {
1777-
if (SettingsStore.getValue("feature_spaces")) {
1777+
if (SpaceStore.spacesEnabled) {
17781778
dis.dispatch({ action: "view_home_page" });
17791779
return;
17801780
}

src/components/structures/RightPanel.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ import NotificationPanel from "./NotificationPanel";
4848
import ResizeNotifier from "../../utils/ResizeNotifier";
4949
import PinnedMessagesCard from "../views/right_panel/PinnedMessagesCard";
5050
import { throttle } from 'lodash';
51+
import SpaceStore from "../../stores/SpaceStore";
5152

5253
interface IProps {
5354
room?: Room; // if showing panels for a given room, this is set
@@ -107,7 +108,7 @@ export default class RightPanel extends React.Component<IProps, IState> {
107108
return RightPanelPhases.GroupMemberList;
108109
}
109110
return rps.groupPanelPhase;
110-
} else if (SettingsStore.getValue("feature_spaces") && this.props.room?.isSpaceRoom()
111+
} else if (SpaceStore.spacesEnabled && this.props.room?.isSpaceRoom()
111112
&& !RIGHT_PANEL_SPACE_PHASES.includes(rps.roomPanelPhase)
112113
) {
113114
return RightPanelPhases.SpaceMemberList;

src/components/structures/RoomView.tsx

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ import RoomStatusBar from "./RoomStatusBar";
8989
import MessageComposer from '../views/rooms/MessageComposer';
9090
import JumpToBottomButton from "../views/rooms/JumpToBottomButton";
9191
import TopUnreadMessagesBar from "../views/rooms/TopUnreadMessagesBar";
92+
import SpaceStore from "../../stores/SpaceStore";
9293

9394
const DEBUG = false;
9495
let debuglog = function(msg: string) {};
@@ -1748,10 +1749,8 @@ export default class RoomView extends React.Component<IProps, IState> {
17481749
}
17491750

17501751
const myMembership = this.state.room.getMyMembership();
1751-
if (myMembership === "invite"
1752-
// SpaceRoomView handles invites itself
1753-
&& (!SettingsStore.getValue("feature_spaces") || !this.state.room.isSpaceRoom())
1754-
) {
1752+
// SpaceRoomView handles invites itself
1753+
if (myMembership === "invite" && (!SpaceStore.spacesEnabled || !this.state.room.isSpaceRoom())) {
17551754
if (this.state.joining || this.state.rejecting) {
17561755
return (
17571756
<ErrorBoundary>
@@ -1882,7 +1881,7 @@ export default class RoomView extends React.Component<IProps, IState> {
18821881
room={this.state.room}
18831882
/>
18841883
);
1885-
if (!this.state.canPeek && (!SettingsStore.getValue("feature_spaces") || !this.state.room?.isSpaceRoom())) {
1884+
if (!this.state.canPeek && (!SpaceStore.spacesEnabled || !this.state.room?.isSpaceRoom())) {
18861885
return (
18871886
<div className="mx_RoomView">
18881887
{ previewBar }

src/components/structures/SpaceRoomView.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ import IconizedContextMenu, {
6262
import AccessibleTooltipButton from "../views/elements/AccessibleTooltipButton";
6363
import { BetaPill } from "../views/beta/BetaCard";
6464
import { UserTab } from "../views/dialogs/UserSettingsDialog";
65-
import SettingsStore from "../../settings/SettingsStore";
6665
import Modal from "../../Modal";
6766
import BetaFeedbackDialog from "../views/dialogs/BetaFeedbackDialog";
6867
import SdkConfig from "../../SdkConfig";
@@ -178,7 +177,7 @@ const SpacePreview = ({ space, onJoinButtonClicked, onRejectButtonClicked }) =>
178177

179178
const [busy, setBusy] = useState(false);
180179

181-
const spacesEnabled = SettingsStore.getValue("feature_spaces");
180+
const spacesEnabled = SpaceStore.spacesEnabled;
182181

183182
const cannotJoin = getEffectiveMembership(myMembership) === EffectiveMembership.Leave
184183
&& space.getJoinRule() !== JoinRule.Public;
@@ -854,7 +853,7 @@ export default class SpaceRoomView extends React.PureComponent<IProps, IState> {
854853
private renderBody() {
855854
switch (this.state.phase) {
856855
case Phase.Landing:
857-
if (this.state.myMembership === "join" && SettingsStore.getValue("feature_spaces")) {
856+
if (this.state.myMembership === "join" && SpaceStore.spacesEnabled) {
858857
return <SpaceLanding space={this.props.space} />;
859858
} else {
860859
return <SpacePreview

src/components/structures/UserMenu.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ export default class UserMenu extends React.Component<IProps, IState> {
9090
};
9191

9292
OwnProfileStore.instance.on(UPDATE_EVENT, this.onProfileUpdate);
93-
if (SettingsStore.getValue("feature_spaces")) {
93+
if (SpaceStore.spacesEnabled) {
9494
SpaceStore.instance.on(UPDATE_SELECTED_SPACE, this.onSelectedSpaceUpdate);
9595
}
9696

@@ -115,7 +115,7 @@ export default class UserMenu extends React.Component<IProps, IState> {
115115
if (this.dispatcherRef) defaultDispatcher.unregister(this.dispatcherRef);
116116
OwnProfileStore.instance.off(UPDATE_EVENT, this.onProfileUpdate);
117117
this.tagStoreRef.remove();
118-
if (SettingsStore.getValue("feature_spaces")) {
118+
if (SpaceStore.spacesEnabled) {
119119
SpaceStore.instance.off(UPDATE_SELECTED_SPACE, this.onSelectedSpaceUpdate);
120120
}
121121
MatrixClientPeg.get().removeListener("Room", this.onRoom);

src/components/views/beta/BetaCard.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ const BetaCard = ({ title: titleOverride, featureId }: IProps) => {
105105
</div>
106106
<img src={image} alt="" />
107107
</div>
108-
{ extraSettings && <div className="mx_BetaCard_relatedSettings">
108+
{ extraSettings && value && <div className="mx_BetaCard_relatedSettings">
109109
{ extraSettings.map(key => (
110110
<SettingsFlag key={key} name={key} level={SettingLevel.DEVICE} />
111111
)) }

0 commit comments

Comments
 (0)