diff --git a/apps/web/src/viewmodels/room-list/RoomListHeaderViewModel.ts b/apps/web/src/viewmodels/room-list/RoomListHeaderViewModel.ts index ae24ea52b8..1464b6c41a 100644 --- a/apps/web/src/viewmodels/room-list/RoomListHeaderViewModel.ts +++ b/apps/web/src/viewmodels/room-list/RoomListHeaderViewModel.ts @@ -289,19 +289,20 @@ function computeHeaderSpaceState( spaceStore: SpaceStoreClass, matrixClient: MatrixClient, ): Omit { + const isSectionFeatureEnabled = SettingsStore.getValue("feature_room_list_sections"); + const activeSpace = spaceStore.activeSpaceRoom; const title = getHeaderTitle(spaceStore); const canCreateRoom = hasCreateRoomRights(matrixClient, activeSpace); const canCreateVideoRoom = getCanCreateVideoRoom(canCreateRoom); - const displayComposeMenu = canCreateRoom; + const displayComposeMenu = isSectionFeatureEnabled || canCreateRoom; const displaySpaceMenu = Boolean(activeSpace); const canInviteInSpace = Boolean( activeSpace?.getJoinRule() === JoinRule.Public || activeSpace?.canInvite(matrixClient.getSafeUserId()), ); const canAccessSpaceSettings = Boolean(activeSpace && shouldShowSpaceSettings(activeSpace)); - const isSectionFeatureEnabled = SettingsStore.getValue("feature_room_list_sections"); const useComposeIcon = !isSectionFeatureEnabled; const canCreateSection = isSectionFeatureEnabled; diff --git a/apps/web/test/viewmodels/room-list/RoomListHeaderViewModel-test.ts b/apps/web/test/viewmodels/room-list/RoomListHeaderViewModel-test.ts index b0dd015ee6..9ff26c2236 100644 --- a/apps/web/test/viewmodels/room-list/RoomListHeaderViewModel-test.ts +++ b/apps/web/test/viewmodels/room-list/RoomListHeaderViewModel-test.ts @@ -129,6 +129,18 @@ describe("RoomListHeaderViewModel", () => { expect(snapshot.canCreateRoom).toBe(false); }); + it("should display compose menu when section feature is enabled@", () => { + jest.spyOn(SettingsStore, "getValue").mockImplementation((settingName: string) => { + if (settingName === "feature_room_list_sections") return true; + return false; + }); + + vm = new RoomListHeaderViewModel({ matrixClient, spaceStore: SpaceStore.instance }); + + const snapshot = vm.getSnapshot(); + expect(snapshot.displayComposeMenu).toBe(true); + }); + it("should show invite option when space is public", () => { jest.spyOn(SpaceStore.instance, "activeSpace", "get").mockReturnValue(mockSpace.roomId); jest.spyOn(SpaceStore.instance, "activeSpaceRoom", "get").mockReturnValue(mockSpace);