diff --git a/apps/web/playwright/e2e/crypto/history-sharing.spec.ts b/apps/web/playwright/e2e/crypto/history-sharing.spec.ts index 595bae44de..186f98eee3 100644 --- a/apps/web/playwright/e2e/crypto/history-sharing.spec.ts +++ b/apps/web/playwright/e2e/crypto/history-sharing.spec.ts @@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Com Please see LICENSE files in the repository root for full details. */ -import { createNewInstance, rejectToast } from "@element-hq/element-web-playwright-common"; +import { closeReleaseAnnouncement, createNewInstance, rejectToast } from "@element-hq/element-web-playwright-common"; import { expect, test } from "../../element-web-test"; import { ElementAppPage } from "../../pages/ElementAppPage"; @@ -30,6 +30,11 @@ test.describe("History sharing", function () { await aliceElementApp.client.bootstrapCrossSigning(aliceCredentials); await aliceElementApp.closeKeyStorageToast(); + await rejectToast(alicePage, "Notifications"); + + // Close the release announcement about the new room list sections + await closeReleaseAnnouncement(alicePage, "Introducing Sections"); + // Register a second user, and open it in a second instance of the app const bobCredentials = await homeserver.registerUser(`user_${testInfo.testId}_bob`, "password", "Bob"); const bobPage = await createNewInstance(browser, bobCredentials, {}, labsFlags); @@ -37,8 +42,6 @@ test.describe("History sharing", function () { await bobElementApp.client.bootstrapCrossSigning(bobCredentials); await bobElementApp.closeKeyStorageToast(); - await rejectToast(aliceElementApp.page, "Notifications"); - // Create the room and send a message await createRoom(alicePage, "TestRoom", true); diff --git a/apps/web/playwright/e2e/integration-manager/kick.spec.ts b/apps/web/playwright/e2e/integration-manager/kick.spec.ts index b1aa9eff52..152b19e542 100644 --- a/apps/web/playwright/e2e/integration-manager/kick.spec.ts +++ b/apps/web/playwright/e2e/integration-manager/kick.spec.ts @@ -6,6 +6,8 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Com Please see LICENSE files in the repository root for full details. */ +import { closeReleaseAnnouncement } from "@element-hq/element-web-playwright-common"; + import type { Page } from "@playwright/test"; import { test, expect } from "../../element-web-test"; import { openIntegrationManager } from "./utils"; @@ -139,6 +141,11 @@ test.describe("Integration Manager: Kick", () => { await app.viewRoomByName(ROOM_NAME); }); + test.beforeEach(async ({ page, user, app, room }) => { + // Close the release announcement about the new room list sections + await closeReleaseAnnouncement(page, "Introducing Sections"); + }); + test("should kick the target", async ({ page, app, bot: targetUser, room }) => { await app.viewRoomByName(ROOM_NAME); await app.client.inviteUser(room.roomId, targetUser.credentials.userId); diff --git a/apps/web/playwright/e2e/integration-manager/send_event.spec.ts b/apps/web/playwright/e2e/integration-manager/send_event.spec.ts index 7edcf9812b..f100e7ea64 100644 --- a/apps/web/playwright/e2e/integration-manager/send_event.spec.ts +++ b/apps/web/playwright/e2e/integration-manager/send_event.spec.ts @@ -6,6 +6,8 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Com Please see LICENSE files in the repository root for full details. */ +import { closeReleaseAnnouncement, rejectToast } from "@element-hq/element-web-playwright-common"; + import type { Page } from "@playwright/test"; import { test, expect } from "../../element-web-test"; import { openIntegrationManager } from "./utils"; @@ -103,6 +105,11 @@ test.describe("Integration Manager: Send Event", () => { }); test.beforeEach(async ({ page, user, app, room }) => { + await rejectToast(page, "Verify this device"); + await rejectToast(page, "Notifications"); + // Close the release announcement about the new room list sections + await closeReleaseAnnouncement(page, "Introducing Sections"); + await app.client.setAccountData("m.widgets", { "m.integration_manager": { content: { diff --git a/apps/web/playwright/e2e/left-panel/room-list-panel/room-list-custom-sections.spec.ts b/apps/web/playwright/e2e/left-panel/room-list-panel/room-list-custom-sections.spec.ts index 20c087760c..577cb46771 100644 --- a/apps/web/playwright/e2e/left-panel/room-list-panel/room-list-custom-sections.spec.ts +++ b/apps/web/playwright/e2e/left-panel/room-list-panel/room-list-custom-sections.spec.ts @@ -22,7 +22,7 @@ import { test.describe("Room list custom sections", () => { test.use({ displayName: "Alice", - labsFlags: ["feature_new_room_list", "feature_room_list_sections"], + labsFlags: ["feature_new_room_list"], botCreateOpts: { displayName: "BotBob", autoAcceptInvites: true, diff --git a/apps/web/playwright/e2e/left-panel/room-list-panel/room-list-filter-sort.spec.ts b/apps/web/playwright/e2e/left-panel/room-list-panel/room-list-filter-sort.spec.ts index d8e1d486e7..4f397d152e 100644 --- a/apps/web/playwright/e2e/left-panel/room-list-panel/room-list-filter-sort.spec.ts +++ b/apps/web/playwright/e2e/left-panel/room-list-panel/room-list-filter-sort.spec.ts @@ -7,7 +7,7 @@ import { type Visibility } from "matrix-js-sdk/src/matrix"; import { type Page } from "@playwright/test"; -import { rejectToast } from "@element-hq/element-web-playwright-common"; +import { closeReleaseAnnouncement, rejectToast } from "@element-hq/element-web-playwright-common"; import { expect, test } from "../../../element-web-test"; import { SettingLevel } from "../../../../src/settings/SettingLevel"; @@ -35,6 +35,9 @@ test.describe("Room list filters and sort", () => { // The toasts are displayed above the search section await rejectToast(page, "Verify this device"); await rejectToast(page, "Notifications"); + + // Close the release announcement about the new room list sections + await closeReleaseAnnouncement(page, "Introducing Sections"); }); test("Tombstoned rooms are not shown even when they receive updates", async ({ page, app, bot }) => { @@ -177,19 +180,19 @@ test.describe("Room list filters and sort", () => { await expect.poll(() => roomList.locator("role=option").count()).toBe(2); await primaryFilters.getByRole("option", { name: "Rooms" }).click(); - await expect(roomList.getByRole("option", { name: "unread room" })).toBeVisible(); - await expect(roomList.getByRole("option", { name: "favourite room" })).toBeVisible(); - await expect(roomList.getByRole("option", { name: "empty room" })).toBeVisible(); - await expect(roomList.getByRole("option", { name: "room with mention" })).toBeVisible(); - await expect(roomList.getByRole("option", { name: "Low prio room" })).toBeVisible(); - await expect.poll(() => roomList.locator("role=option").count()).toBe(5); + // "Open room" prefix disambiguates the room tile from the "Toggle Chats section with + // unread rooms" section header button, which also matches the "unread room" substring. + await expect(roomList.getByRole("button", { name: "Open room unread room" })).toBeVisible(); + await expect(roomList.getByRole("button", { name: "favourite room" })).toBeVisible(); + await expect(roomList.getByRole("button", { name: "empty room" })).toBeVisible(); + await expect(roomList.getByRole("button", { name: "room with mention" })).toBeVisible(); + await expect(roomList.getByRole("button", { name: "Low prio room" })).toBeVisible(); + // 5 room tiles spread across 3 sections (Favourites, Rooms, Low priority); each section + // header is also a button, so 5 rooms + 3 section headers = 8 buttons. + await expect.poll(() => roomList.locator("role=button").count()).toBe(8); await getFilterExpandButton(page).click(); - await primaryFilters.getByRole("option", { name: "Favourite" }).click(); - await expect(roomList.getByRole("option", { name: "favourite room" })).toBeVisible(); - await expect.poll(() => roomList.locator("role=option").count()).toBe(1); - await primaryFilters.getByRole("option", { name: "Mentions" }).click(); await expect(roomList.getByRole("option", { name: "room with mention" })).toBeVisible(); await expect.poll(() => roomList.locator("role=option").count()).toBe(1); @@ -216,7 +219,7 @@ test.describe("Room list filters and sort", () => { await app.settings.closeDialog(); // Let's open a room other than unread room or unread dm - await roomListView.getByRole("option", { name: "Open room favourite room" }).click(); + await roomListView.getByRole("button", { name: "Open room favourite room" }).click(); // Let's make the bot send a new message in both rooms await bot.sendMessage(unReadDmId, "Hello!"); @@ -239,15 +242,20 @@ test.describe("Room list filters and sort", () => { await getRoomOptionsMenu(page).click(); await page.getByRole("menuitemradio", { name: "A-Z" }).click(); - await expect(roomListView.getByRole("option").first()).toHaveText(/empty room/); + // Favourite + chat section headers are buttons + favourite room + await expect(roomListView.getByRole("button").nth(3)).toHaveText(/empty room/); }); - test("should move room to the top on message when sorting by activity", async ({ page, bot }) => { + test("should move room to the top on message (chat section) when sorting by activity", async ({ + page, + bot, + }) => { const roomListView = getRoomList(page); await bot.sendMessage(unReadDmId, "Hello!"); - await expect(roomListView.getByRole("option").first()).toHaveText(/unread dm/); + // Favourite + chat section headers are buttons + favourite room + await expect(roomListView.getByRole("button").nth(3)).toHaveText(/unread dm/); }); }); @@ -302,7 +310,7 @@ test.describe("Room list filters and sort", () => { ); }); - ["People", "Rooms", "Favourite"].forEach((filter) => { + ["People", "Rooms"].forEach((filter) => { test( `should render the placeholder for ${filter} filter`, { tag: "@screenshot" }, diff --git a/apps/web/playwright/e2e/left-panel/room-list-panel/room-list-header.spec.ts b/apps/web/playwright/e2e/left-panel/room-list-panel/room-list-header.spec.ts index e40114f817..42a7a90bcc 100644 --- a/apps/web/playwright/e2e/left-panel/room-list-panel/room-list-header.spec.ts +++ b/apps/web/playwright/e2e/left-panel/room-list-panel/room-list-header.spec.ts @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -import { rejectToast } from "@element-hq/element-web-playwright-common"; +import { closeReleaseAnnouncement, rejectToast } from "@element-hq/element-web-playwright-common"; import { test, expect } from "../../../element-web-test"; import { getHeaderSection } from "./utils"; @@ -19,6 +19,9 @@ test.describe("Header section of the room list", () => { // The toasts are displayed above the search section await rejectToast(page, "Verify this device"); await rejectToast(page, "Notifications"); + + // Close the release announcement about the new room list sections + await closeReleaseAnnouncement(page, "Introducing Sections"); }); test("should render the header section", { tag: "@screenshot" }, async ({ page, app, user }) => { diff --git a/apps/web/playwright/e2e/left-panel/room-list-panel/room-list-sections.spec.ts b/apps/web/playwright/e2e/left-panel/room-list-panel/room-list-sections.spec.ts index c6510173b0..994c41f68c 100644 --- a/apps/web/playwright/e2e/left-panel/room-list-panel/room-list-sections.spec.ts +++ b/apps/web/playwright/e2e/left-panel/room-list-panel/room-list-sections.spec.ts @@ -13,7 +13,7 @@ import { assertRoomInSection, dragRoomToSection, getPrimaryFilters, getRoomList, test.describe("Room list sections", () => { test.use({ displayName: "Alice", - labsFlags: ["feature_new_room_list", "feature_room_list_sections"], + labsFlags: ["feature_new_room_list"], botCreateOpts: { displayName: "BotBob", autoAcceptInvites: true, diff --git a/apps/web/playwright/e2e/left-panel/room-list-panel/room-list.spec.ts b/apps/web/playwright/e2e/left-panel/room-list-panel/room-list.spec.ts index 72edaae3f5..82e6692ea8 100644 --- a/apps/web/playwright/e2e/left-panel/room-list-panel/room-list.spec.ts +++ b/apps/web/playwright/e2e/left-panel/room-list-panel/room-list.spec.ts @@ -6,7 +6,7 @@ */ import { type Page } from "@playwright/test"; -import { rejectToast } from "@element-hq/element-web-playwright-common"; +import { closeReleaseAnnouncement, rejectToast } from "@element-hq/element-web-playwright-common"; import { expect, test } from "../../../element-web-test"; import { type Bot } from "../../../pages/bot"; @@ -27,6 +27,9 @@ test.describe("Room list", () => { await rejectToast(page, "Verify this device"); await rejectToast(page, "Notifications"); + // Close the release announcement about the new room list sections + await closeReleaseAnnouncement(page, "Introducing Sections"); + // focus the user menu to avoid to have hover decoration await page.getByRole("button", { name: "User menu" }).focus(); }); @@ -71,11 +74,11 @@ test.describe("Room list", () => { test("should open the more options menu", { tag: "@screenshot" }, async ({ page, app, user }) => { const roomListView = getRoomList(page); - const roomItem = roomListView.getByRole("option", { name: "Open room room29" }); + let roomItem = roomListView.getByRole("option", { name: "Open room room29" }); await roomItem.hover(); await expect(roomItem).toMatchScreenshot("room-list-item-hover.png"); - const roomItemMenu = roomItem.getByRole("button", { name: "More Options" }); + let roomItemMenu = roomItem.getByRole("button", { name: "More Options" }); await roomItemMenu.click(); await expect(page).toMatchScreenshot("room-list-item-open-more-options.png"); @@ -83,7 +86,9 @@ test.describe("Room list", () => { await page.getByRole("menuitemcheckbox", { name: "Favourited" }).click(); // Check that the room is favourited + roomItem = roomListView.getByRole("gridcell", { name: "Open room room29" }); await roomItem.hover(); + roomItemMenu = roomItem.getByRole("button", { name: "More Options" }); await roomItemMenu.click(); await expect(page.getByRole("menuitemcheckbox", { name: "Favourited" })).toBeChecked(); // It should show the invite dialog @@ -296,13 +301,14 @@ test.describe("Room list", () => { // @ts-ignore Visibility enum is not accessible await app.client.createRoom({ name: "low priority room", visibility: "public" }); const roomListView = getRoomList(page); - const publicRoom = roomListView.getByRole("option", { name: "low priority room" }); + let publicRoom = roomListView.getByRole("option", { name: "low priority room" }); // Make room low priority await publicRoom.click({ button: "right" }); await page.getByRole("menuitemcheckbox", { name: "Low priority" }).click(); // Should have low priority decoration + publicRoom = roomListView.getByRole("gridcell", { name: "low priority room" }); await expect(publicRoom.locator(".mx_RoomAvatarView_icon")).toHaveAccessibleName( "This is a low priority room", ); diff --git a/apps/web/playwright/e2e/settings/room-settings/room-security-tab.spec.ts b/apps/web/playwright/e2e/settings/room-settings/room-security-tab.spec.ts index b76dc66fad..4a00bae29f 100644 --- a/apps/web/playwright/e2e/settings/room-settings/room-security-tab.spec.ts +++ b/apps/web/playwright/e2e/settings/room-settings/room-security-tab.spec.ts @@ -6,6 +6,7 @@ */ import { type Locator } from "@playwright/test"; +import { closeReleaseAnnouncement, rejectToast } from "@element-hq/element-web-playwright-common"; import { test, expect } from "../../../element-web-test"; @@ -18,7 +19,12 @@ test.describe("Roles & Permissions room settings tab", () => { let settings: Locator; - test.beforeEach(async ({ user, app }) => { + test.beforeEach(async ({ user, app, page }) => { + await rejectToast(page, "Verify this device"); + await rejectToast(page, "Notifications"); + // Close the release announcement about the new room list sections + await closeReleaseAnnouncement(page, "Introducing Sections"); + await app.client.createRoom({ name: roomName, power_level_content_override: { diff --git a/apps/web/playwright/e2e/sliding-sync/sliding-sync.spec.ts b/apps/web/playwright/e2e/sliding-sync/sliding-sync.spec.ts index 92dc56b210..1b8862bf71 100644 --- a/apps/web/playwright/e2e/sliding-sync/sliding-sync.spec.ts +++ b/apps/web/playwright/e2e/sliding-sync/sliding-sync.spec.ts @@ -291,7 +291,7 @@ test.describe("Sliding Sync", () => { await checkOrder(["Room to Join", "Test Room"], page); }); - test("should show a favourite DM only in the favourite sublist", async ({ page, app }) => { + test("should show a favourite DM only in the favourite section", async ({ page, app }) => { const roomId = await app.client.createRoom({ name: "Favourite DM", is_direct: true, @@ -300,12 +300,9 @@ test.describe("Sliding Sync", () => { await client.setRoomTag(roomId, "m.favourite", { order: 0.5 }); }, roomId); - await getFilterExpandButton(page).click(); + await expect(page.getByRole("button", { name: "Favourite DM" })).toBeVisible(); + const primaryFilters = getPrimaryFilters(page); - await primaryFilters.getByRole("option", { name: "Favourites" }).click(); - - await expect(page.getByRole("option", { name: "Favourite DM" })).toBeVisible(); - await primaryFilters.getByRole("option", { name: "People" }).click(); await expect(page.getByRole("option", { name: "Favourite DM" })).not.toBeAttached(); diff --git a/apps/web/playwright/e2e/voip/element-call.spec.ts b/apps/web/playwright/e2e/voip/element-call.spec.ts index 7c69a8a896..9675779c1f 100644 --- a/apps/web/playwright/e2e/voip/element-call.spec.ts +++ b/apps/web/playwright/e2e/voip/element-call.spec.ts @@ -8,6 +8,7 @@ Please see LICENSE files in the repository root for full details. import { readFile } from "node:fs/promises"; import { fileURLToPath } from "node:url"; import { type Page } from "@playwright/test"; +import { closeReleaseAnnouncement, rejectToast } from "@element-hq/element-web-playwright-common"; import type { EventType, Preset } from "matrix-js-sdk/src/matrix"; import { SettingLevel } from "../../../src/settings/SettingLevel"; @@ -132,6 +133,11 @@ test.describe("Element Call", () => { SettingLevel.DEVICE, new URL("/widget.html#", page.url()).toString(), ); + + await rejectToast(page, "Verify this device"); + await rejectToast(page, "Notifications"); + // Close the release announcement about the new room list sections + await closeReleaseAnnouncement(page, "Introducing Sections"); }); test.describe("Group Chat", () => { diff --git a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-collapse.spec.ts/room-list-collapse-default-linux.png b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-collapse.spec.ts/room-list-collapse-default-linux.png index 5d4c860653..9dcab305da 100644 Binary files a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-collapse.spec.ts/room-list-collapse-default-linux.png and b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-collapse.spec.ts/room-list-collapse-default-linux.png differ diff --git a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-filter-sort.spec.ts/Favourite-empty-room-list-linux.png b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-filter-sort.spec.ts/Favourite-empty-room-list-linux.png deleted file mode 100644 index e46fd5339b..0000000000 Binary files a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-filter-sort.spec.ts/Favourite-empty-room-list-linux.png and /dev/null differ diff --git a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-filter-sort.spec.ts/collapsed-primary-filters-linux.png b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-filter-sort.spec.ts/collapsed-primary-filters-linux.png index 43c984a6ad..bcf5879eb1 100644 Binary files a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-filter-sort.spec.ts/collapsed-primary-filters-linux.png and b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-filter-sort.spec.ts/collapsed-primary-filters-linux.png differ diff --git a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-filter-sort.spec.ts/expanded-primary-filters-linux.png b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-filter-sort.spec.ts/expanded-primary-filters-linux.png index e9dd085d4f..c6b620a13c 100644 Binary files a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-filter-sort.spec.ts/expanded-primary-filters-linux.png and b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-filter-sort.spec.ts/expanded-primary-filters-linux.png differ diff --git a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-filter-sort.spec.ts/room-panel-empty-room-list-linux.png b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-filter-sort.spec.ts/room-panel-empty-room-list-linux.png index 2c931bc4e4..0720900e7d 100644 Binary files a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-filter-sort.spec.ts/room-panel-empty-room-list-linux.png and b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-filter-sort.spec.ts/room-panel-empty-room-list-linux.png differ diff --git a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-filter-sort.spec.ts/unread-primary-filters-linux.png b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-filter-sort.spec.ts/unread-primary-filters-linux.png index af908ec7d1..505e45eee9 100644 Binary files a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-filter-sort.spec.ts/unread-primary-filters-linux.png and b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-filter-sort.spec.ts/unread-primary-filters-linux.png differ diff --git a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-filter-sort.spec.ts/unselected-primary-filters-linux.png b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-filter-sort.spec.ts/unselected-primary-filters-linux.png index 43c984a6ad..7a1468c7ee 100644 Binary files a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-filter-sort.spec.ts/unselected-primary-filters-linux.png and b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-filter-sort.spec.ts/unselected-primary-filters-linux.png differ diff --git a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-header.spec.ts/room-list-header-compose-menu-linux.png b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-header.spec.ts/room-list-header-compose-menu-linux.png index 202a83c23a..971d923b91 100644 Binary files a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-header.spec.ts/room-list-header-compose-menu-linux.png and b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-header.spec.ts/room-list-header-compose-menu-linux.png differ diff --git a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-header.spec.ts/room-list-header-linux.png b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-header.spec.ts/room-list-header-linux.png index 6dc877db96..f279817765 100644 Binary files a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-header.spec.ts/room-list-header-linux.png and b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-header.spec.ts/room-list-header-linux.png differ diff --git a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-header.spec.ts/room-list-space-header-linux.png b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-header.spec.ts/room-list-space-header-linux.png index 294ba408dd..038ca65a1e 100644 Binary files a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-header.spec.ts/room-list-space-header-linux.png and b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-header.spec.ts/room-list-space-header-linux.png differ diff --git a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-panel.spec.ts/room-list-panel-linux.png b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-panel.spec.ts/room-list-panel-linux.png index 3435f26daf..7f75b8e18c 100644 Binary files a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-panel.spec.ts/room-list-panel-linux.png and b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-panel.spec.ts/room-list-panel-linux.png differ diff --git a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-panel.spec.ts/room-list-panel-smallscreen-linux.png b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-panel.spec.ts/room-list-panel-smallscreen-linux.png index a635fd4824..8690f3cf31 100644 Binary files a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-panel.spec.ts/room-list-panel-smallscreen-linux.png and b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list-panel.spec.ts/room-list-panel-smallscreen-linux.png differ diff --git a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list.spec.ts/room-list-item-low-priority-linux.png b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list.spec.ts/room-list-item-low-priority-linux.png index 881eac278b..0335aab089 100644 Binary files a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list.spec.ts/room-list-item-low-priority-linux.png and b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list.spec.ts/room-list-item-low-priority-linux.png differ diff --git a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list.spec.ts/room-list-item-open-more-options-linux.png b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list.spec.ts/room-list-item-open-more-options-linux.png index bdc992a23a..a483b2d665 100644 Binary files a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list.spec.ts/room-list-item-open-more-options-linux.png and b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list.spec.ts/room-list-item-open-more-options-linux.png differ diff --git a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list.spec.ts/room-list-item-open-notification-options-linux.png b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list.spec.ts/room-list-item-open-notification-options-linux.png index d553b80195..72295a8357 100644 Binary files a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list.spec.ts/room-list-item-open-notification-options-linux.png and b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list.spec.ts/room-list-item-open-notification-options-linux.png differ diff --git a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list.spec.ts/room-list-item-open-notification-options-selection-linux.png b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list.spec.ts/room-list-item-open-notification-options-selection-linux.png index cc6d638807..600c3147ed 100644 Binary files a/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list.spec.ts/room-list-item-open-notification-options-selection-linux.png and b/apps/web/playwright/snapshots/left-panel/room-list-panel/room-list.spec.ts/room-list-item-open-notification-options-selection-linux.png differ diff --git a/apps/web/playwright/snapshots/settings/appearance-user-settings-tab/appearance-user-settings-tab.spec.ts/window-after-switch-linux.png b/apps/web/playwright/snapshots/settings/appearance-user-settings-tab/appearance-user-settings-tab.spec.ts/window-after-switch-linux.png index 539366793e..a3ebfa882f 100644 Binary files a/apps/web/playwright/snapshots/settings/appearance-user-settings-tab/appearance-user-settings-tab.spec.ts/window-after-switch-linux.png and b/apps/web/playwright/snapshots/settings/appearance-user-settings-tab/appearance-user-settings-tab.spec.ts/window-after-switch-linux.png differ diff --git a/apps/web/playwright/snapshots/settings/appearance-user-settings-tab/appearance-user-settings-tab.spec.ts/window-before-switch-linux.png b/apps/web/playwright/snapshots/settings/appearance-user-settings-tab/appearance-user-settings-tab.spec.ts/window-before-switch-linux.png index 165064ec2e..923f72e96d 100644 Binary files a/apps/web/playwright/snapshots/settings/appearance-user-settings-tab/appearance-user-settings-tab.spec.ts/window-before-switch-linux.png and b/apps/web/playwright/snapshots/settings/appearance-user-settings-tab/appearance-user-settings-tab.spec.ts/window-before-switch-linux.png differ diff --git a/apps/web/playwright/snapshots/settings/appearance-user-settings-tab/theme-choice-panel.spec.ts/window-custom-theme-linux.png b/apps/web/playwright/snapshots/settings/appearance-user-settings-tab/theme-choice-panel.spec.ts/window-custom-theme-linux.png index 28043b7da7..b16d48b4ab 100644 Binary files a/apps/web/playwright/snapshots/settings/appearance-user-settings-tab/theme-choice-panel.spec.ts/window-custom-theme-linux.png and b/apps/web/playwright/snapshots/settings/appearance-user-settings-tab/theme-choice-panel.spec.ts/window-custom-theme-linux.png differ diff --git a/apps/web/src/i18n/strings/en_EN.json b/apps/web/src/i18n/strings/en_EN.json index 604aded410..9c53ff35f8 100644 --- a/apps/web/src/i18n/strings/en_EN.json +++ b/apps/web/src/i18n/strings/en_EN.json @@ -1582,7 +1582,6 @@ "notifications": "Enable the notifications panel in the room header", "render_reaction_images": "Render custom images in reactions", "render_reaction_images_description": "Sometimes referred to as \"custom emojis\".", - "room_list_sections": "Room list sections", "sliding_sync": "Sliding Sync mode", "sliding_sync_description": "Under active development, cannot be disabled. Currently, not compatible with Element Call.", "sliding_sync_disabled_notice": "Sign in again to disable", diff --git a/apps/web/src/settings/Settings.tsx b/apps/web/src/settings/Settings.tsx index e666950daf..dad9373c27 100644 --- a/apps/web/src/settings/Settings.tsx +++ b/apps/web/src/settings/Settings.tsx @@ -227,7 +227,6 @@ export interface Settings { "feature_render_reaction_images": IFeature; "feature_new_room_list": IFeature; "feature_retention": IFeature; - "feature_room_list_sections": IFeature; "feature_ask_to_join": IFeature; "feature_notifications": IFeature; "feature_msc4362_encrypted_state_events": IFeature; @@ -665,15 +664,6 @@ export const SETTINGS: Settings = { default: true, controller: new ReloadOnChangeController(), }, - "feature_room_list_sections": { - supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG_PRIORITISED, - labsGroup: LabGroup.Ui, - displayName: _td("labs|room_list_sections"), - description: _td("labs|under_active_development"), - isFeature: true, - default: false, - controller: new ReloadOnChangeController(), - }, "feature_login_with_qr": { supportedLevels: [SettingLevel.CONFIG], labsGroup: LabGroup.Ui, diff --git a/apps/web/src/stores/room-list-v3/RoomListStoreV3.ts b/apps/web/src/stores/room-list-v3/RoomListStoreV3.ts index 2746fcc2c0..3ccdb4b5d0 100644 --- a/apps/web/src/stores/room-list-v3/RoomListStoreV3.ts +++ b/apps/web/src/stores/room-list-v3/RoomListStoreV3.ts @@ -173,10 +173,7 @@ export class RoomListStoreV3Class extends AsyncStoreWithClient { public getSortedRoomsInActiveSpace(filterKeys?: FilterKey[]): RoomsResult { const spaceId = SpaceStore.instance.activeSpace; - const areSectionsEnabled = SettingsStore.getValue("feature_room_list_sections"); - const sections = areSectionsEnabled - ? this.getSections(filterKeys) - : [{ tag: CHATS_TAG, rooms: Array.from(this.roomSkipList?.getRoomsInActiveSpace(filterKeys) ?? []) }]; + const sections = this.getSections(filterKeys); return { spaceId: spaceId, diff --git a/apps/web/src/viewmodels/room-list/RoomListHeaderViewModel.ts b/apps/web/src/viewmodels/room-list/RoomListHeaderViewModel.ts index c61467ee0b..7a9119c2dd 100644 --- a/apps/web/src/viewmodels/room-list/RoomListHeaderViewModel.ts +++ b/apps/web/src/viewmodels/room-list/RoomListHeaderViewModel.ts @@ -243,9 +243,7 @@ export class RoomListHeaderViewModel }; public onReleaseAnnouncementChanged = (): void => { - const isSectionFeatureEnabled = SettingsStore.getValue("feature_room_list_sections"); const displaySectionReleaseAnnouncement = - isSectionFeatureEnabled && ReleaseAnnouncementStore.instance.getReleaseAnnouncement() === "room_list_section"; this.snapshot.merge({ displaySectionReleaseAnnouncement }); }; @@ -310,35 +308,27 @@ function computeHeaderSpaceState( spaceStore: SpaceStoreClass, matrixClient: MatrixClient, ): Omit { - const isSectionFeatureEnabled = SettingsStore.getValue("feature_room_list_sections"); const displaySectionReleaseAnnouncement = - isSectionFeatureEnabled && ReleaseAnnouncementStore.instance.getReleaseAnnouncement() === "room_list_section"; + ReleaseAnnouncementStore.instance.getReleaseAnnouncement() === "room_list_section"; const activeSpace = spaceStore.activeSpaceRoom; const title = getHeaderTitle(spaceStore); const canCreateRoom = hasCreateRoomRights(matrixClient, activeSpace); const canCreateVideoRoom = getCanCreateVideoRoom(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 useComposeIcon = !isSectionFeatureEnabled; - const canCreateSection = isSectionFeatureEnabled; - return { title, canCreateRoom, canCreateVideoRoom, - displayComposeMenu, displaySpaceMenu, canInviteInSpace, canAccessSpaceSettings, - canCreateSection, - useComposeIcon, displaySectionReleaseAnnouncement, }; } diff --git a/apps/web/src/viewmodels/room-list/RoomListItemViewModel.ts b/apps/web/src/viewmodels/room-list/RoomListItemViewModel.ts index b03b2e32ec..0cf0ea9671 100644 --- a/apps/web/src/viewmodels/room-list/RoomListItemViewModel.ts +++ b/apps/web/src/viewmodels/room-list/RoomListItemViewModel.ts @@ -288,10 +288,8 @@ export class RoomListItemViewModel const callType = call?.callType === CallType.Voice ? "voice" : call?.callType === CallType.Video ? "video" : undefined; - const canMoveToSection = SettingsStore.getValue("feature_room_list_sections"); - // Build sections list for the "Move to section" submenu - const sections: Section[] = canMoveToSection ? RoomListItemViewModel.buildSections(roomTags) : []; + const sections: Section[] = RoomListItemViewModel.buildSections(roomTags); return { id: room.roomId, @@ -320,7 +318,6 @@ export class RoomListItemViewModel canMarkAsRead, canMarkAsUnread, roomNotifState, - canMoveToSection, sections, }; } diff --git a/apps/web/src/viewmodels/room-list/RoomListViewModel.ts b/apps/web/src/viewmodels/room-list/RoomListViewModel.ts index 2fa9c0c04c..66279c6d8c 100644 --- a/apps/web/src/viewmodels/room-list/RoomListViewModel.ts +++ b/apps/web/src/viewmodels/room-list/RoomListViewModel.ts @@ -40,7 +40,6 @@ import { keepIfSame } from "../../utils/keepIfSame"; import { DefaultTagID } from "../../stores/room-list-v3/skip-list/tag"; import { RoomListSectionHeaderViewModel } from "./RoomListSectionHeaderViewModel"; import { getCustomSectionData, isCustomSectionTag, CHATS_TAG } from "../../stores/room-list-v3/section"; -import SettingsStore from "../../settings/SettingsStore"; import { tagRoom } from "../../utils/room/tagRoom"; import { getSectionTagForRoom } from "../../utils/room/getSectionTagForRoom"; @@ -64,10 +63,8 @@ const filterKeyToIdMap: Map = new Map([ [FilterEnum.UnreadFilter, "unread"], [FilterEnum.PeopleFilter, "people"], [FilterEnum.RoomsFilter, "rooms"], - [FilterEnum.FavouriteFilter, "favourite"], [FilterEnum.MentionsFilter, "mentions"], [FilterEnum.InvitesFilter, "invites"], - [FilterEnum.LowPriorityFilter, "low_priority"], ]); const TAG_TO_TITLE_MAP: Record = { @@ -146,11 +143,7 @@ export class RoomListViewModel const roomsResult = RoomListStoreV3.instance.getSortedRoomsInActiveSpace(undefined); const canCreateRoom = hasCreateRoomRights(props.client, activeSpace); - // Remove favourite and low priority filters if sections are enabled, as they are redundant with the sections - const areSectionsEnabled = SettingsStore.getValue("feature_room_list_sections"); - const filterIds = [...filterKeyToIdMap.values()].filter( - (id) => !areSectionsEnabled || (id !== "favourite" && id !== "low_priority"), - ); + const filterIds = [...filterKeyToIdMap.values()]; // By default, all sections are expanded const { sections, isFlatList } = computeSections(roomsResult, (tag) => true); @@ -756,8 +749,8 @@ export class RoomListViewModel * @param isFlatList - Whether the room list is currently displayed as a flat list */ private notifyCollapseState(isFlatList: boolean): void { - // Hide collapse/expand all button if sections are disabled or if it's a flat list - if (!SettingsStore.getValue("feature_room_list_sections") || isFlatList) { + // Hide collapse/expand all button if it's a flat list + if (isFlatList) { dispatcher.dispatch({ action: Action.RoomListSectionsCollapseStateChanged, collapseSections: undefined, diff --git a/apps/web/test/unit-tests/stores/room-list-v3/RoomListStoreV3-test.ts b/apps/web/test/unit-tests/stores/room-list-v3/RoomListStoreV3-test.ts index fc2a01254c..6810db183d 100644 --- a/apps/web/test/unit-tests/stores/room-list-v3/RoomListStoreV3-test.ts +++ b/apps/web/test/unit-tests/stores/room-list-v3/RoomListStoreV3-test.ts @@ -929,7 +929,6 @@ describe("RoomListStoreV3", () => { describe("Sections", () => { function enableSections(): void { jest.spyOn(SettingsStore, "getValue").mockImplementation((setting: string) => { - if (setting === "feature_room_list_sections") return true; if (setting === "RoomList.OrderedCustomSections") return []; if (setting === "RoomList.CustomSectionData") return {}; return false; @@ -948,26 +947,7 @@ describe("RoomListStoreV3", () => { return { client, rooms }; } - it("returns a single chats section when sections feature is disabled", async () => { - const { rooms } = getClientAndRooms(); - // Mark some rooms as favourite so we can verify they are NOT split out - [0, 1, 2].forEach((i) => { - rooms[i].tags[DefaultTagID.Favourite] = {}; - }); - - const store = new RoomListStoreV3Class(dispatcher); - await store.start(); - - const result = store.getSortedRoomsInActiveSpace(); - expect(result.sections).toHaveLength(1); - expect(result.sections[0].tag).toBe(CHATS_TAG); - // All rooms, including favourites, are in the single section - for (const i of [0, 1, 2]) { - expect(result.sections[0].rooms).toContain(rooms[i]); - } - }); - - it("returns three sections in the correct order when enabled", async () => { + it("returns three sections in the correct order", async () => { enableSections(); getClientAndRooms(); @@ -1229,7 +1209,6 @@ describe("RoomListStoreV3", () => { const customTag = "element.io.section.custom"; jest.spyOn(SettingsStore, "getValue").mockImplementation((setting: string) => { - if (setting === "feature_room_list_sections") return true; if (setting === "RoomList.OrderedCustomSections") return []; if (setting === "RoomList.CustomSectionData") return {}; return false; @@ -1244,7 +1223,6 @@ describe("RoomListStoreV3", () => { // Mark a room with the custom tag and update the settings rooms[0].tags = { [customTag]: { order: 0 } }; jest.spyOn(SettingsStore, "getValue").mockImplementation((setting: string) => { - if (setting === "feature_room_list_sections") return true; if (setting === "RoomList.OrderedCustomSections") return [customTag]; if (setting === "RoomList.CustomSectionData") return { [customTag]: { tag: customTag, name: "Custom" } }; diff --git a/apps/web/test/viewmodels/room-list/RoomListHeaderViewModel-test.ts b/apps/web/test/viewmodels/room-list/RoomListHeaderViewModel-test.ts index 006c4778d2..18e3860e46 100644 --- a/apps/web/test/viewmodels/room-list/RoomListHeaderViewModel-test.ts +++ b/apps/web/test/viewmodels/room-list/RoomListHeaderViewModel-test.ts @@ -86,7 +86,6 @@ describe("RoomListHeaderViewModel", () => { const snapshot = vm.getSnapshot(); expect(snapshot.title).toBe("Home"); - expect(snapshot.displayComposeMenu).toBe(true); expect(snapshot.displaySpaceMenu).toBe(false); expect(snapshot.canCreateRoom).toBe(true); expect(snapshot.canCreateVideoRoom).toBe(true); @@ -123,28 +122,6 @@ describe("RoomListHeaderViewModel", () => { expect(vm.getSnapshot().activeSortOption).toBe("alphabetical"); }); - it("should hide compose menu when user cannot create rooms", () => { - mocked(hasCreateRoomRights).mockReturnValue(false); - - vm = new RoomListHeaderViewModel({ matrixClient, spaceStore: SpaceStore.instance }); - - const snapshot = vm.getSnapshot(); - expect(snapshot.displayComposeMenu).toBe(false); - 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); @@ -179,28 +156,7 @@ describe("RoomListHeaderViewModel", () => { expect(vm.getSnapshot().isMessagePreviewEnabled).toBe(true); }); - it.each([ - [true, true, false], - [false, false, true], - ])( - "when feature_room_list_sections is %s: canCreateSection=%s, useComposeIcon=%s", - (featureEnabled, expectedCanCreateSection, expectedUseComposeIcon) => { - jest.spyOn(SettingsStore, "getValue").mockImplementation((settingName: string) => { - if (settingName === "feature_room_list_sections") return featureEnabled; - return false; - }); - - vm = new RoomListHeaderViewModel({ matrixClient, spaceStore: SpaceStore.instance }); - expect(vm.getSnapshot().canCreateSection).toBe(expectedCanCreateSection); - expect(vm.getSnapshot().useComposeIcon).toBe(expectedUseComposeIcon); - }, - ); - it("should set displaySectionReleaseAnnouncement to true when sections feature is enabled and announcement is active", () => { - jest.spyOn(SettingsStore, "getValue").mockImplementation((settingName: string) => { - if (settingName === "feature_room_list_sections") return true; - return false; - }); jest.spyOn(ReleaseAnnouncementStore.instance, "getReleaseAnnouncement").mockReturnValue( "room_list_section", ); @@ -208,15 +164,6 @@ describe("RoomListHeaderViewModel", () => { vm = new RoomListHeaderViewModel({ matrixClient, spaceStore: SpaceStore.instance }); expect(vm.getSnapshot().displaySectionReleaseAnnouncement).toBe(true); }); - - it("should set displaySectionReleaseAnnouncement to false when sections feature is disabled", () => { - jest.spyOn(ReleaseAnnouncementStore.instance, "getReleaseAnnouncement").mockReturnValue( - "room_list_section", - ); - - vm = new RoomListHeaderViewModel({ matrixClient, spaceStore: SpaceStore.instance }); - expect(vm.getSnapshot().displaySectionReleaseAnnouncement).toBe(false); - }); }); describe("event listeners", () => { diff --git a/apps/web/test/viewmodels/room-list/RoomListItemViewModel-test.tsx b/apps/web/test/viewmodels/room-list/RoomListItemViewModel-test.tsx index 6dd9de7590..f2f0c48088 100644 --- a/apps/web/test/viewmodels/room-list/RoomListItemViewModel-test.tsx +++ b/apps/web/test/viewmodels/room-list/RoomListItemViewModel-test.tsx @@ -509,20 +509,6 @@ describe("RoomListItemViewModel", () => { }); }); - describe("canMoveToSection", () => { - it.each([ - [true, true], - [false, false], - ])("should be %s when feature_room_list_sections is %s", (featureEnabled, expected) => { - jest.spyOn(SettingsStore, "getValue").mockImplementation((setting) => { - if (setting === "feature_room_list_sections") return featureEnabled; - return false; - }); - viewModel = new RoomListItemViewModel({ room, client: matrixClient }); - expect(viewModel.getSnapshot().canMoveToSection).toBe(expected); - }); - }); - describe("Actions", () => { it("should dispatch view room action on openRoom", () => { viewModel = new RoomListItemViewModel({ room, client: matrixClient }); @@ -631,10 +617,6 @@ describe("RoomListItemViewModel", () => { }); it("should include sections from orderedSectionTags excluding CHATS_TAG, favourite, and low priority", () => { - jest.spyOn(SettingsStore, "getValue").mockImplementation((setting) => { - if (setting === "feature_room_list_sections") return true; - return false; - }); viewModel = new RoomListItemViewModel({ room, client: matrixClient }); const sections = viewModel.getSnapshot().sections; @@ -643,10 +625,7 @@ describe("RoomListItemViewModel", () => { it("should mark the room current section as selected", () => { room.tags = { [customTag]: { order: 0 } }; - jest.spyOn(SettingsStore, "getValue").mockImplementation((setting) => { - if (setting === "feature_room_list_sections") return true; - return false; - }); + viewModel = new RoomListItemViewModel({ room, client: matrixClient }); const sections = viewModel.getSnapshot().sections; @@ -655,7 +634,6 @@ describe("RoomListItemViewModel", () => { it("should use custom section name from CustomSectionData", () => { jest.spyOn(SettingsStore, "getValue").mockImplementation((setting) => { - if (setting === "feature_room_list_sections") return true; if (setting === "RoomList.CustomSectionData") return { [customTag]: { name: "My Custom Section", tag: customTag } }; return false; @@ -672,10 +650,6 @@ describe("RoomListItemViewModel", () => { if (setting === "RoomList.OrderedCustomSections") watchCallback = callback; return "watcher-id"; }); - jest.spyOn(SettingsStore, "getValue").mockImplementation((setting) => { - if (setting === "feature_room_list_sections") return true; - return false; - }); viewModel = new RoomListItemViewModel({ room, client: matrixClient }); expect(viewModel.getSnapshot().sections).toHaveLength(1); diff --git a/apps/web/test/viewmodels/room-list/RoomListViewModel-test.tsx b/apps/web/test/viewmodels/room-list/RoomListViewModel-test.tsx index c2dd2b8aea..8963fa770d 100644 --- a/apps/web/test/viewmodels/room-list/RoomListViewModel-test.tsx +++ b/apps/web/test/viewmodels/room-list/RoomListViewModel-test.tsx @@ -480,20 +480,6 @@ describe("RoomListViewModel", () => { }); }); - describe("notifyCollapseState", () => { - it("should dispatch collapseSections=undefined when feature_room_list_sections is disabled", () => { - viewModel = new RoomListViewModel({ client: matrixClient }); - - const dispatchSpy = jest.spyOn(dispatcher, "dispatch"); - RoomListStoreV3.instance.emit(RoomListStoreV3Event.ListsUpdate); - - expect(dispatchSpy).toHaveBeenCalledWith({ - action: Action.RoomListSectionsCollapseStateChanged, - collapseSections: undefined, - }); - }); - }); - describe("Keyboard navigation (ViewRoomDelta)", () => { beforeEach(() => { // stubClient sets up MatrixClientPeg which is needed when ViewRoom action is dispatched @@ -724,7 +710,7 @@ describe("RoomListViewModel", () => { }); }); - describe("Sections (feature_room_list_sections)", () => { + describe("Sections", () => { let favRoom1: Room; let favRoom2: Room; let lowPriorityRoom: Room; @@ -732,11 +718,6 @@ describe("RoomListViewModel", () => { let regularRoom2: Room; beforeEach(() => { - jest.spyOn(SettingsStore, "getValue").mockImplementation((setting: string) => { - if (setting === "feature_room_list_sections") return true; - return false; - }); - favRoom1 = mkStubRoom("!fav1:server", "Fav 1", matrixClient); favRoom2 = mkStubRoom("!fav2:server", "Fav 2", matrixClient); lowPriorityRoom = mkStubRoom("!low1:server", "Low 1", matrixClient); @@ -1030,7 +1011,6 @@ describe("RoomListViewModel", () => { mkStubRoom("!space:server", "My Space", matrixClient), ]); jest.spyOn(SettingsStore, "getValue").mockImplementation((setting: string) => { - if (setting === "feature_room_list_sections") return true; if (setting === "RoomList.CustomSectionData") return { [customTag]: { tag: customTag, name: "My Section", spaceId: "!space:server" }, @@ -1041,7 +1021,6 @@ describe("RoomListViewModel", () => { it("shows an empty custom section when viewing its originating space", () => { jest.spyOn(SettingsStore, "getValue").mockImplementation((setting: string) => { - if (setting === "feature_room_list_sections") return true; if (setting === "RoomList.CustomSectionData") return { [customTag]: { tag: customTag, name: "My Section", spaceId: MetaSpace.Home } }; return false; diff --git a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/collapse-sections-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/collapse-sections-auto.png index 333171f50e..381aeff689 100644 Binary files a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/collapse-sections-auto.png and b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/collapse-sections-auto.png differ diff --git a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/default-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/default-auto.png index 73a0414c77..22066efced 100644 Binary files a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/default-auto.png and b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/default-auto.png differ diff --git a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/display-section-release-announcement-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/display-section-release-announcement-auto.png index 3739c0881e..18ad3fe668 100644 Binary files a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/display-section-release-announcement-auto.png and b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/display-section-release-announcement-auto.png differ diff --git a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/expand-sections-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/expand-sections-auto.png index bf2eec867d..f38e9bdf4b 100644 Binary files a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/expand-sections-auto.png and b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/expand-sections-auto.png differ diff --git a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/long-title-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/long-title-auto.png index 6556f221b8..eb6cabf64a 100644 Binary files a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/long-title-auto.png and b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/long-title-auto.png differ diff --git a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/no-compose-menu-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/no-compose-menu-auto.png deleted file mode 100644 index 650888bada..0000000000 Binary files a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/no-compose-menu-auto.png and /dev/null differ diff --git a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/no-space-menu-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/no-space-menu-auto.png index c161ca198e..c7e90b0a48 100644 Binary files a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/no-space-menu-auto.png and b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/no-space-menu-auto.png differ diff --git a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/plus-icon-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/plus-icon-auto.png deleted file mode 100644 index 58f146e165..0000000000 Binary files a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx/plus-icon-auto.png and /dev/null differ diff --git a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListPrimaryFilters/RoomListPrimaryFilters.stories.tsx/default-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListPrimaryFilters/RoomListPrimaryFilters.stories.tsx/default-auto.png index 09c4dac4e4..eaca73c540 100644 Binary files a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListPrimaryFilters/RoomListPrimaryFilters.stories.tsx/default-auto.png and b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListPrimaryFilters/RoomListPrimaryFilters.stories.tsx/default-auto.png differ diff --git a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListPrimaryFilters/RoomListPrimaryFilters.stories.tsx/people-selected-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListPrimaryFilters/RoomListPrimaryFilters.stories.tsx/people-selected-auto.png index 1e6e4d614c..9b548ce1c5 100644 Binary files a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListPrimaryFilters/RoomListPrimaryFilters.stories.tsx/people-selected-auto.png and b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListPrimaryFilters/RoomListPrimaryFilters.stories.tsx/people-selected-auto.png differ diff --git a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/default-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/default-auto.png index eb90df57d3..955007c819 100644 Binary files a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/default-auto.png and b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/default-auto.png differ diff --git a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/empty-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/empty-auto.png index e673af207f..034198b0c3 100644 Binary files a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/empty-auto.png and b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/empty-auto.png differ diff --git a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/empty-favourite-filter-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/empty-favourite-filter-auto.png deleted file mode 100644 index 10aa503a48..0000000000 Binary files a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/empty-favourite-filter-auto.png and /dev/null differ diff --git a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/empty-low-priority-filter-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/empty-low-priority-filter-auto.png deleted file mode 100644 index 488dac68d1..0000000000 Binary files a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/empty-low-priority-filter-auto.png and /dev/null differ diff --git a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/empty-without-create-permission-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/empty-without-create-permission-auto.png index 8cb6617e1e..0a33b9bf28 100644 Binary files a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/empty-without-create-permission-auto.png and b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/empty-without-create-permission-auto.png differ diff --git a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/large-flat-list-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/large-flat-list-auto.png index 667be0e5c6..955007c819 100644 Binary files a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/large-flat-list-auto.png and b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/large-flat-list-auto.png differ diff --git a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/large-section-list-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/large-section-list-auto.png index 31c1d557c2..b73866777d 100644 Binary files a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/large-section-list-auto.png and b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/large-section-list-auto.png differ diff --git a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/loading-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/loading-auto.png index 921f023c6a..93e56c2eb5 100644 Binary files a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/loading-auto.png and b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/loading-auto.png differ diff --git a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/section-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/section-auto.png index c57355c454..b11b6874f7 100644 Binary files a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/section-auto.png and b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/section-auto.png differ diff --git a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/small-flat-list-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/small-flat-list-auto.png index df403e6918..e770e80b4d 100644 Binary files a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/small-flat-list-auto.png and b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/small-flat-list-auto.png differ diff --git a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/small-section-list-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/small-section-list-auto.png index 8b6d987e0b..a45493ebfd 100644 Binary files a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/small-section-list-auto.png and b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/small-section-list-auto.png differ diff --git a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/toast-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/toast-auto.png index ff3d477f91..e72940a531 100644 Binary files a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/toast-auto.png and b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/toast-auto.png differ diff --git a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/unread-activity-below-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/unread-activity-below-auto.png index fed0068100..8ad05ae614 100644 Binary files a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/unread-activity-below-auto.png and b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/unread-activity-below-auto.png differ diff --git a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/with-active-filter-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/with-active-filter-auto.png index b1d5edefd7..2825951b13 100644 Binary files a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/with-active-filter-auto.png and b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/with-active-filter-auto.png differ diff --git a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/with-selection-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/with-selection-auto.png index 0dea042486..a64e06b3d7 100644 Binary files a/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/with-selection-auto.png and b/packages/shared-components/__vis__/linux/__baselines__/room-list/RoomListView/RoomListView.stories.tsx/with-selection-auto.png differ diff --git a/packages/shared-components/src/i18n/strings/en_EN.json b/packages/shared-components/src/i18n/strings/en_EN.json index 712b8a3775..810c206430 100644 --- a/packages/shared-components/src/i18n/strings/en_EN.json +++ b/packages/shared-components/src/i18n/strings/en_EN.json @@ -135,10 +135,7 @@ "no_chats": "No chats yet", "no_chats_description": "Get started by messaging someone or by creating a room", "no_chats_description_no_room_rights": "Get started by messaging someone", - "no_favourites": "You don't have favourite chats yet", - "no_favourites_description": "You can add a chat to your favourites in the chat settings", "no_invites": "You don't have any unread invites", - "no_lowpriority": "You don't have any low priority rooms", "no_mentions": "You don't have any unread mentions", "no_people": "You don’t have direct chats with anyone yet", "no_people_description": "You can deselect filters in order to see your other chats", @@ -151,9 +148,7 @@ "expand_all_sections": "Expand all sections", "expand_filters": "Expand filter list", "filters": { - "favourite": "Favourites", "invites": "Invites", - "low_priority": "Low priority", "mentions": "Mentions", "people": "People", "rooms": "Rooms", diff --git a/packages/shared-components/src/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx b/packages/shared-components/src/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx index bcf2e8efb2..a332d9242f 100644 --- a/packages/shared-components/src/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx +++ b/packages/shared-components/src/room-list/RoomListHeaderView/RoomListHeaderView.stories.tsx @@ -91,12 +91,6 @@ export const NoSpaceMenu: Story = { }, }; -export const NoComposeMenu: Story = { - args: { - displayComposeMenu: false, - }, -}; - export const LongTitle: Story = { decorators: [ (Story) => ( @@ -110,12 +104,6 @@ export const LongTitle: Story = { }, }; -export const PlusIcon: Story = { - args: { - useComposeIcon: false, - }, -}; - export const CollapseSections: Story = { args: { collapseSections: "collapse", diff --git a/packages/shared-components/src/room-list/RoomListHeaderView/RoomListHeaderView.test.tsx b/packages/shared-components/src/room-list/RoomListHeaderView/RoomListHeaderView.test.tsx index 733fedcdcd..7c13b5c4ed 100644 --- a/packages/shared-components/src/room-list/RoomListHeaderView/RoomListHeaderView.test.tsx +++ b/packages/shared-components/src/room-list/RoomListHeaderView/RoomListHeaderView.test.tsx @@ -12,7 +12,7 @@ import React from "react"; import * as stories from "./RoomListHeaderView.stories"; -const { Default, NoComposeMenu, NoSpaceMenu, CollapseSections, ExpandSections } = composeStories(stories); +const { Default, NoSpaceMenu, CollapseSections, ExpandSections } = composeStories(stories); describe("RoomListHeaderView", () => { it("renders the default state", () => { @@ -20,11 +20,6 @@ describe("RoomListHeaderView", () => { expect(container).toMatchSnapshot(); }); - it("renders without compose menu", () => { - const { container } = render(); - expect(container).toMatchSnapshot(); - }); - it("renders without space menu", () => { const { container } = render(); expect(container).toMatchSnapshot(); diff --git a/packages/shared-components/src/room-list/RoomListHeaderView/RoomListHeaderView.tsx b/packages/shared-components/src/room-list/RoomListHeaderView/RoomListHeaderView.tsx index 92711bd9be..6a0593dcfc 100644 --- a/packages/shared-components/src/room-list/RoomListHeaderView/RoomListHeaderView.tsx +++ b/packages/shared-components/src/room-list/RoomListHeaderView/RoomListHeaderView.tsx @@ -7,8 +7,6 @@ import React, { type JSX } from "react"; import { IconButton, H1 } from "@vector-im/compound-web"; -import ComposeIcon from "@vector-im/compound-design-tokens/assets/web/icons/compose"; -import PlusIcon from "@vector-im/compound-design-tokens/assets/web/icons/plus"; import { CollapseAllIcon, ExpandAllIcon } from "@vector-im/compound-design-tokens/assets/web/icons"; import { type ViewModel, useViewModel } from "../../core/viewmodel"; @@ -32,11 +30,6 @@ export interface RoomListHeaderViewSnapshot { * The title of the room list */ title: string; - /** - * Whether to display the compose menu - * True if the user can create rooms - */ - displayComposeMenu: boolean; /** * Whether to display the space menu * True if there is an active space @@ -66,14 +59,6 @@ export interface RoomListHeaderViewSnapshot { * Whether message previews are enabled in the room list. */ isMessagePreviewEnabled: boolean; - /** - * Whether the user can create sections in the room list. - */ - canCreateSection: boolean; - /** - * Whether to use the compose icon instead of the create icon. - */ - useComposeIcon: boolean; /** * If "collapse", an icon to collapse all sections is shown. * If "expand", an icon to expand all sections is shown. @@ -160,7 +145,7 @@ interface RoomListHeaderViewProps { */ export function RoomListHeaderView({ vm }: Readonly): JSX.Element { const { translate: _t } = useI18n(); - const { title, displaySpaceMenu, displayComposeMenu, useComposeIcon, collapseSections } = useViewModel(vm); + const { title, displaySpaceMenu, collapseSections } = useViewModel(vm); return ( ): J )} )} - - {/* If we don't display the compose menu, it means that the user can only send DM */} - {displayComposeMenu ? ( - - ) : ( - vm.createChatRoom(e.nativeEvent)} - tooltip={_t("action|new_conversation")} - > - {useComposeIcon ? ( - - ) : ( - - )} - - )} + diff --git a/packages/shared-components/src/room-list/RoomListHeaderView/__snapshots__/RoomListHeaderView.test.tsx.snap b/packages/shared-components/src/room-list/RoomListHeaderView/__snapshots__/RoomListHeaderView.test.tsx.snap index b580ee5012..68e8085b7e 100644 --- a/packages/shared-components/src/room-list/RoomListHeaderView/__snapshots__/RoomListHeaderView.test.tsx.snap +++ b/packages/shared-components/src/room-list/RoomListHeaderView/__snapshots__/RoomListHeaderView.test.tsx.snap @@ -145,12 +145,7 @@ exports[`RoomListHeaderView > renders collapse button 1`] = ` xmlns="http://www.w3.org/2000/svg" > - @@ -306,12 +301,7 @@ exports[`RoomListHeaderView > renders expand button 1`] = ` xmlns="http://www.w3.org/2000/svg" > - @@ -440,140 +430,7 @@ exports[`RoomListHeaderView > renders the default state 1`] = ` xmlns="http://www.w3.org/2000/svg" > - - - - - - - - -`; - -exports[`RoomListHeaderView > renders without compose menu 1`] = ` -
-
-
-
-

- Rooms -

- -
-
- -
diff --git a/packages/shared-components/src/room-list/RoomListHeaderView/default-snapshot.ts b/packages/shared-components/src/room-list/RoomListHeaderView/default-snapshot.ts index a775a3c526..246234e605 100644 --- a/packages/shared-components/src/room-list/RoomListHeaderView/default-snapshot.ts +++ b/packages/shared-components/src/room-list/RoomListHeaderView/default-snapshot.ts @@ -9,7 +9,6 @@ import { type RoomListHeaderViewSnapshot } from "./RoomListHeaderView"; export const defaultSnapshot: RoomListHeaderViewSnapshot = { title: "Rooms", - displayComposeMenu: true, displaySpaceMenu: true, canCreateRoom: true, canCreateVideoRoom: true, @@ -17,7 +16,5 @@ export const defaultSnapshot: RoomListHeaderViewSnapshot = { canAccessSpaceSettings: true, activeSortOption: "recent", isMessagePreviewEnabled: true, - useComposeIcon: true, - canCreateSection: true, displaySectionReleaseAnnouncement: false, }; diff --git a/packages/shared-components/src/room-list/RoomListHeaderView/menu/ComposeMenuView.tsx b/packages/shared-components/src/room-list/RoomListHeaderView/menu/ComposeMenuView.tsx index c31fa53e82..ec5bf89127 100644 --- a/packages/shared-components/src/room-list/RoomListHeaderView/menu/ComposeMenuView.tsx +++ b/packages/shared-components/src/room-list/RoomListHeaderView/menu/ComposeMenuView.tsx @@ -7,7 +7,6 @@ import React, { useState, type JSX } from "react"; import { IconButton, Menu, MenuItem, ReleaseAnnouncement } from "@vector-im/compound-web"; -import ComposeIcon from "@vector-im/compound-design-tokens/assets/web/icons/compose"; import VideoCallIcon from "@vector-im/compound-design-tokens/assets/web/icons/video-call"; import ChatIcon from "@vector-im/compound-design-tokens/assets/web/icons/chat"; import RoomIcon from "@vector-im/compound-design-tokens/assets/web/icons/room"; @@ -37,17 +36,12 @@ interface ComposeMenuViewProps { export function ComposeMenuView({ vm }: ComposeMenuViewProps): JSX.Element { const { translate: _t } = useI18n(); const [open, setOpen] = useState(false); - const { canCreateRoom, canCreateVideoRoom, canCreateSection, useComposeIcon, displaySectionReleaseAnnouncement } = - useViewModel(vm); + const { canCreateRoom, canCreateVideoRoom, displaySectionReleaseAnnouncement } = useViewModel(vm); // 28px button with a 20px icon const button = ( - {useComposeIcon ? ( - - ) : ( - - )} + ); @@ -86,9 +80,7 @@ export function ComposeMenuView({ vm }: ComposeMenuViewProps): JSX.Element { hideChevron /> )} - {canCreateSection && ( - - )} + ); } diff --git a/packages/shared-components/src/room-list/RoomListHeaderView/menu/__snapshots__/ComposeMenuView.test.tsx.snap b/packages/shared-components/src/room-list/RoomListHeaderView/menu/__snapshots__/ComposeMenuView.test.tsx.snap index 976c0bb416..5ba0d2b6ea 100644 --- a/packages/shared-components/src/room-list/RoomListHeaderView/menu/__snapshots__/ComposeMenuView.test.tsx.snap +++ b/packages/shared-components/src/room-list/RoomListHeaderView/menu/__snapshots__/ComposeMenuView.test.tsx.snap @@ -30,12 +30,7 @@ exports[` > should match snapshot 1`] = ` xmlns="http://www.w3.org/2000/svg" > -
diff --git a/packages/shared-components/src/room-list/RoomListPrimaryFilters/RoomListPrimaryFilters.stories.tsx b/packages/shared-components/src/room-list/RoomListPrimaryFilters/RoomListPrimaryFilters.stories.tsx index cba4514419..e2d9adfa0a 100644 --- a/packages/shared-components/src/room-list/RoomListPrimaryFilters/RoomListPrimaryFilters.stories.tsx +++ b/packages/shared-components/src/room-list/RoomListPrimaryFilters/RoomListPrimaryFilters.stories.tsx @@ -31,7 +31,7 @@ export default meta; type Story = StoryObj; // All available filter IDs -const allFilterIds: FilterId[] = ["unread", "people", "rooms", "favourite", "mentions", "invites", "low_priority"]; +const allFilterIds: FilterId[] = ["unread", "people", "rooms", "mentions", "invites"]; // Subset of filters for narrow container tests const fewFilterIds: FilterId[] = ["people", "rooms", "unread"]; diff --git a/packages/shared-components/src/room-list/RoomListPrimaryFilters/RoomListPrimaryFilters.tsx b/packages/shared-components/src/room-list/RoomListPrimaryFilters/RoomListPrimaryFilters.tsx index 5b325156b5..f0cde89585 100644 --- a/packages/shared-components/src/room-list/RoomListPrimaryFilters/RoomListPrimaryFilters.tsx +++ b/packages/shared-components/src/room-list/RoomListPrimaryFilters/RoomListPrimaryFilters.tsx @@ -26,14 +26,10 @@ const filterIdToLabel = (filterId: FilterId): string => { return _t("room_list|filters|people"); case "rooms": return _t("room_list|filters|rooms"); - case "favourite": - return _t("room_list|filters|favourite"); case "mentions": return _t("room_list|filters|mentions"); case "invites": return _t("room_list|filters|invites"); - case "low_priority": - return _t("room_list|filters|low_priority"); } }; diff --git a/packages/shared-components/src/room-list/RoomListPrimaryFilters/__snapshots__/RoomListPrimaryFilters.test.tsx.snap b/packages/shared-components/src/room-list/RoomListPrimaryFilters/__snapshots__/RoomListPrimaryFilters.test.tsx.snap index adb3fa7868..cb705761a1 100644 --- a/packages/shared-components/src/room-list/RoomListPrimaryFilters/__snapshots__/RoomListPrimaryFilters.test.tsx.snap +++ b/packages/shared-components/src/room-list/RoomListPrimaryFilters/__snapshots__/RoomListPrimaryFilters.test.tsx.snap @@ -7,33 +7,6 @@ exports[` stories > snapshots > renders Default story data-testid="primary-filters" style="--mx-flex-display: flex; --mx-flex-direction: row-reverse; --mx-flex-align: start; --mx-flex-justify: space-between; --mx-flex-gap: var(--cpd-space-3x); --mx-flex-wrap: nowrap;" > -
stories > snapshots > renders Default story > Rooms - -
@@ -285,33 +240,6 @@ exports[` stories > snapshots > renders PeopleSelected data-testid="primary-filters" style="--mx-flex-display: flex; --mx-flex-direction: row-reverse; --mx-flex-align: start; --mx-flex-justify: space-between; --mx-flex-gap: var(--cpd-space-3x); --mx-flex-wrap: nowrap;" > -
stories > snapshots > renders PeopleSelected > Rooms - -
diff --git a/packages/shared-components/src/room-list/RoomListPrimaryFilters/useVisibleFilters.ts b/packages/shared-components/src/room-list/RoomListPrimaryFilters/useVisibleFilters.ts index 73a580b4d9..8034d5d127 100644 --- a/packages/shared-components/src/room-list/RoomListPrimaryFilters/useVisibleFilters.ts +++ b/packages/shared-components/src/room-list/RoomListPrimaryFilters/useVisibleFilters.ts @@ -11,7 +11,7 @@ import { useEffect, useState } from "react"; * Standard filter identifiers that can be used across implementations. * These are stable keys - the view layer maps them to translated labels. */ -export type FilterId = "unread" | "people" | "rooms" | "favourite" | "mentions" | "invites" | "low_priority"; +export type FilterId = "unread" | "people" | "rooms" | "mentions" | "invites"; /** * A hook to sort the filter IDs by active state. diff --git a/packages/shared-components/src/room-list/RoomListView/RoomListEmptyStateView.tsx b/packages/shared-components/src/room-list/RoomListView/RoomListEmptyStateView.tsx index a8660d8235..c96151574e 100644 --- a/packages/shared-components/src/room-list/RoomListView/RoomListEmptyStateView.tsx +++ b/packages/shared-components/src/room-list/RoomListView/RoomListEmptyStateView.tsx @@ -64,13 +64,6 @@ export const RoomListEmptyStateView: React.FC = ({ // Handle different filter cases based on filter ID switch (snapshot.activeFilterId) { - case "favourite": - return ( - - ); case "people": return ( = ({ onAction={() => vm.onToggleFilter(snapshot.activeFilterId!)} /> ); - case "low_priority": - return ( - vm.onToggleFilter(snapshot.activeFilterId!)} - /> - ); default: return ( React.ReactElement }; -const mockFilterIds: FilterId[] = ["unread", "people", "rooms", "favourite"]; +const mockFilterIds: FilterId[] = ["unread", "people", "rooms"]; // Wrapper component that creates a mocked ViewModel const RoomListViewWrapperImpl = ({ @@ -164,12 +164,12 @@ export const EmptyWithoutCreatePermission: Story = { export const WithActiveFilter: Story = { args: { - filterIds: ["unread", "people", "rooms", "favourite"], - activeFilterId: "favourite", + filterIds: ["unread", "people", "rooms"], + activeFilterId: "people", roomListState: { activeRoomIndex: undefined, spaceId: "!space:server", - filterKeys: ["favourites"], + filterKeys: ["people"], }, }, }; @@ -184,14 +184,6 @@ export const WithSelection: Story = { }, }; -export const EmptyFavouriteFilter: Story = { - args: { - isRoomListEmpty: true, - filterIds: ["favourite", "people"], - activeFilterId: "favourite", - }, -}; - export const EmptyPeopleFilter: Story = { args: { isRoomListEmpty: true, @@ -233,14 +225,6 @@ export const EmptyMentionsFilter: Story = { }, }; -export const EmptyLowPriorityFilter: Story = { - args: { - isRoomListEmpty: true, - filterIds: ["low_priority", "people"], - activeFilterId: "low_priority", - }, -}; - export const SmallFlatList: Story = { args: { sections: mockSmallListSections, diff --git a/packages/shared-components/src/room-list/RoomListView/RoomListView.test.tsx b/packages/shared-components/src/room-list/RoomListView/RoomListView.test.tsx index 91d034d3ed..a2c21b6462 100644 --- a/packages/shared-components/src/room-list/RoomListView/RoomListView.test.tsx +++ b/packages/shared-components/src/room-list/RoomListView/RoomListView.test.tsx @@ -30,13 +30,11 @@ const { LargeFlatList, SmallSectionList, LargeSectionList, - EmptyFavouriteFilter, EmptyPeopleFilter, EmptyRoomsFilter, EmptyUnreadFilter, EmptyInvitesFilter, EmptyMentionsFilter, - EmptyLowPriorityFilter, Toast, } = composeStories(stories); @@ -96,11 +94,6 @@ describe("", () => { expect(container).toMatchSnapshot(); }); - it("renders EmptyFavouriteFilter story", () => { - const { container } = renderWithMockContext(); - expect(container).toMatchSnapshot(); - }); - it("renders EmptyPeopleFilter story", () => { const { container } = renderWithMockContext(); expect(container).toMatchSnapshot(); @@ -126,11 +119,6 @@ describe("", () => { expect(container).toMatchSnapshot(); }); - it("renders EmptyLowPriorityFilter story", () => { - const { container } = renderWithMockContext(); - expect(container).toMatchSnapshot(); - }); - it("renders Toast story", () => { const { container } = renderWithMockContext(); expect(container).toMatchSnapshot(); @@ -190,21 +178,12 @@ describe("", () => { expect(EmptyMentionsFilter.args.onToggleFilter).toHaveBeenCalled(); }); - it("should call onToggleFilter when See all activity is clicked in low priority empty state", async () => { - const user = userEvent.setup(); - renderWithMockContext(); - - await user.click(screen.getByRole("button", { name: "See all activity" })); - - expect(EmptyLowPriorityFilter.args.onToggleFilter).toHaveBeenCalled(); - }); - it("should call closeToast when close button is clicked on toast", async () => { const user = userEvent.setup(); renderWithMockContext(); await user.click(screen.getByRole("button", { name: "Close" })); - expect(EmptyLowPriorityFilter.args.closeToast).toHaveBeenCalled(); + expect(Toast.args.closeToast).toHaveBeenCalled(); }); }); diff --git a/packages/shared-components/src/room-list/RoomListView/__snapshots__/RoomListView.test.tsx.snap b/packages/shared-components/src/room-list/RoomListView/__snapshots__/RoomListView.test.tsx.snap index 5b59b56d53..0cc7f1aecb 100644 --- a/packages/shared-components/src/room-list/RoomListView/__snapshots__/RoomListView.test.tsx.snap +++ b/packages/shared-components/src/room-list/RoomListView/__snapshots__/RoomListView.test.tsx.snap @@ -45,15 +45,6 @@ exports[` > renders Default story 1`] = ` > Rooms - @@ -2726,15 +2717,6 @@ exports[` > renders Empty story 1`] = ` > Rooms - @@ -2815,75 +2797,6 @@ exports[` > renders Empty story 1`] = ` `; -exports[` > renders EmptyFavouriteFilter story 1`] = ` -
-
-
-
-
- - -
-
-
-
-
-
- - You don't have favourite chats yet - - - You can add a chat to your favourites in the chat settings - -
-
-
-
-
-`; - exports[` > renders EmptyInvitesFilter story 1`] = `
> renders EmptyInvitesFilter story 1`] = `
`; -exports[` > renders EmptyLowPriorityFilter story 1`] = ` -
-
-
-
-
- - -
-
-
-
-
-
- - You don't have any low priority rooms - - -
-
-
-
-
-`; - exports[` > renders EmptyMentionsFilter story 1`] = `
> renders EmptyWithoutCreatePermission story 1`] = ` > Rooms -
@@ -3472,15 +3303,6 @@ exports[` > renders LargeFlatList story 1`] = ` > Rooms - @@ -8373,15 +8195,6 @@ exports[` > renders LargeSectionList story 1`] = ` > Rooms - @@ -13434,15 +13247,6 @@ exports[` > renders Loading story 1`] = ` > Rooms - @@ -13508,15 +13312,6 @@ exports[` > renders SmallFlatList story 1`] = ` > Rooms - @@ -13870,15 +13665,6 @@ exports[` > renders SmallSectionList story 1`] = ` > Rooms - @@ -14368,15 +14154,6 @@ exports[` > renders Toast story 1`] = ` > Rooms - @@ -17067,7 +16844,7 @@ exports[` > renders WithActiveFilter story 1`] = ` - diff --git a/packages/shared-components/src/room-list/VirtualizedRoomListView/RoomListItemWrapper/RoomListItemView/RoomListItemMoreOptionsMenu.tsx b/packages/shared-components/src/room-list/VirtualizedRoomListView/RoomListItemWrapper/RoomListItemView/RoomListItemMoreOptionsMenu.tsx index 9208f41b03..49704b8c63 100644 --- a/packages/shared-components/src/room-list/VirtualizedRoomListView/RoomListItemWrapper/RoomListItemView/RoomListItemMoreOptionsMenu.tsx +++ b/packages/shared-components/src/room-list/VirtualizedRoomListView/RoomListItemWrapper/RoomListItemView/RoomListItemMoreOptionsMenu.tsx @@ -131,35 +131,33 @@ export function MoreOptionContent({ vm }: MoreOptionContentProps): JSX.Element { hideChevron={true} /> )} - {snapshot.canMoveToSection && ( - - } - > - {snapshot.sections.map((section) => ( - vm.onToggleSection(section.tag)} - onClick={(evt) => evt.stopPropagation()} - hideChevron={true} - aria-checked={section.isSelected} - > - {section.isSelected && ( - - )} - - ))} - {hasSections && } - - - )} + + } + > + {snapshot.sections.map((section) => ( + vm.onToggleSection(section.tag)} + onClick={(evt) => evt.stopPropagation()} + hideChevron={true} + aria-checked={section.isSelected} + > + {section.isSelected && ( + + )} + + ))} + {hasSections && } + + {isInSection && (