Add UIFeature to hide public space and room creation (#30708)

* Add settings to hide public room & space creation.

* Add space changes.

* Add room changes.

* lint

* Add playwright tests

* don't specialcase 1 join rule

* Ensure mocks get cleared

* Fixup test

* Add SpaceCreateMenu component unit-tests

* Fixup create room test asserts

* fix import
This commit is contained in:
Will Hunt
2025-09-08 13:53:13 +00:00
committed by GitHub
parent 9e7f583acc
commit 6d05bfc4c5
13 changed files with 264 additions and 22 deletions
@@ -17,25 +17,30 @@ import { UIFeature } from "../../../../../src/settings/UIFeature";
describe("<CreateRoomDialog />", () => {
const userId = "@alice:server.org";
const mockClient = getMockClientWithEventEmitter({
...mockClientMethodsUser(userId),
getDomain: jest.fn().mockReturnValue("server.org"),
getClientWellKnown: jest.fn(),
doesServerForceEncryptionForPreset: jest.fn(),
// make every alias available
getRoomIdForAlias: jest.fn().mockRejectedValue(new MatrixError({ errcode: "M_NOT_FOUND" })),
});
const getE2eeEnableToggleInputElement = () => screen.getByLabelText("Enable end-to-end encryption");
// labelled toggle switch doesn't set the disabled attribute, only aria-disabled
const getE2eeEnableToggleIsDisabled = () =>
getE2eeEnableToggleInputElement().getAttribute("aria-disabled") === "true";
let mockClient: ReturnType<typeof getMockClientWithEventEmitter>;
beforeEach(() => {
mockClient = getMockClientWithEventEmitter({
...mockClientMethodsUser(userId),
getDomain: jest.fn().mockReturnValue("server.org"),
getClientWellKnown: jest.fn(),
doesServerForceEncryptionForPreset: jest.fn(),
// make every alias available
getRoomIdForAlias: jest.fn().mockRejectedValue(new MatrixError({ errcode: "M_NOT_FOUND" })),
});
mockClient.doesServerForceEncryptionForPreset.mockResolvedValue(false);
mockClient.getClientWellKnown.mockReturnValue({});
});
afterEach(() => {
jest.restoreAllMocks();
});
const getComponent = (props = {}) => render(<CreateRoomDialog onFinished={jest.fn()} {...props} />);
it("should default to private room", async () => {