From 09fe9281a5a4bff6a4ff40a400fd22fef26df956 Mon Sep 17 00:00:00 2001 From: Florian Duros Date: Wed, 3 Sep 2025 17:23:40 +0200 Subject: [PATCH] Hide advanced settings during room creation when `UIFeature.advancedSettings=false` (#30684) * fix: hide advanced settings during room creation when UI.advancedSettings=false * test: add tests --- .../views/dialogs/CreateRoomDialog.tsx | 32 +- .../views/dialogs/CreateRoomDialog-test.tsx | 13 +- .../CreateRoomDialog-test.tsx.snap | 352 ++++++++++++++++++ 3 files changed, 383 insertions(+), 14 deletions(-) create mode 100644 test/unit-tests/components/views/dialogs/__snapshots__/CreateRoomDialog-test.tsx.snap diff --git a/src/components/views/dialogs/CreateRoomDialog.tsx b/src/components/views/dialogs/CreateRoomDialog.tsx index 3ff42cde22..d65a9892ff 100644 --- a/src/components/views/dialogs/CreateRoomDialog.tsx +++ b/src/components/views/dialogs/CreateRoomDialog.tsx @@ -26,6 +26,7 @@ import { KeyBindingAction } from "../../../accessibility/KeyboardShortcuts"; import { privateShouldBeEncrypted } from "../../../utils/rooms"; import SettingsStore from "../../../settings/SettingsStore"; import LabelledCheckbox from "../elements/LabelledCheckbox"; +import { UIFeature } from "../../../settings/UIFeature"; interface IProps { type?: RoomType; @@ -83,6 +84,7 @@ interface IState { export default class CreateRoomDialog extends React.Component { private readonly askToJoinEnabled: boolean; + private readonly advancedSettingsEnabled: boolean; private readonly supportsRestricted: boolean; private nameField = createRef(); private aliasField = createRef(); @@ -91,6 +93,8 @@ export default class CreateRoomDialog extends React.Component { super(props); this.askToJoinEnabled = SettingsStore.getValue("feature_ask_to_join"); + this.advancedSettingsEnabled = SettingsStore.getValue(UIFeature.AdvancedSettings); + this.supportsRestricted = !!this.props.parentSpace; let joinRule = JoinRule.Invite; @@ -427,19 +431,21 @@ export default class CreateRoomDialog extends React.Component { {visibilitySection} {e2eeSection} {aliasField} -
- - {this.state.detailsOpen ? _t("action|hide_advanced") : _t("action|show_advanced")} - - -

{federateLabel}

-
+ {this.advancedSettingsEnabled && ( +
+ + {this.state.detailsOpen ? _t("action|hide_advanced") : _t("action|show_advanced")} + + +

{federateLabel}

+
+ )} ", () => { const userId = "@alice:server.org"; @@ -181,8 +182,9 @@ describe("", () => { it("should create a private room", async () => { const onFinished = jest.fn(); - getComponent({ onFinished }); + const { asFragment } = getComponent({ onFinished }); await flushPromises(); + expect(asFragment()).toMatchSnapshot(); const roomName = "Test Room Name"; fireEvent.change(screen.getByLabelText("Name"), { target: { value: roomName } }); @@ -199,6 +201,15 @@ describe("", () => { roomType: undefined, }); }); + + it("should render not the advanced options when UI.advancedSettings is disabled", async () => { + jest.spyOn(SettingsStore, "getValue").mockImplementation( + (setting) => setting !== UIFeature.AdvancedSettings, + ); + const { asFragment } = getComponent(); + await flushPromises(); + expect(asFragment()).toMatchSnapshot(); + }); }); describe("for a knock room", () => { diff --git a/test/unit-tests/components/views/dialogs/__snapshots__/CreateRoomDialog-test.tsx.snap b/test/unit-tests/components/views/dialogs/__snapshots__/CreateRoomDialog-test.tsx.snap new file mode 100644 index 0000000000..a99158eadf --- /dev/null +++ b/test/unit-tests/components/views/dialogs/__snapshots__/CreateRoomDialog-test.tsx.snap @@ -0,0 +1,352 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[` for a private room should create a private room 1`] = ` + +
+