From 0fc1c53a8e4e62e7c60128a9eab63401a446293a Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Fri, 19 Jul 2024 18:17:40 +0100 Subject: [PATCH 01/69] Iterate design of right panel empty state (#12796) * Add reusable empty state for the right panel Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Update tests Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Improve coverage Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --------- Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- playwright/e2e/right-panel/file-panel.spec.ts | 2 +- .../right-panel/notification-panel.spec.ts | 2 +- .../e2e/right-panel/right-panel.spec.ts | 2 +- .../file-panel.spec.ts/empty-linux.png | Bin 9580 -> 72623 bytes .../empty-linux.png | Bin 9062 -> 71187 bytes res/css/_components.pcss | 2 +- res/css/structures/_FilePanel.pcss | 4 - res/css/structures/_NotificationPanel.pcss | 19 --- res/css/structures/_RightPanel.pcss | 27 ---- res/css/views/right_panel/_EmptyState.pcss | 45 +++++++ res/css/views/right_panel/_ThreadPanel.pcss | 75 ++--------- src/components/structures/FilePanel.tsx | 11 +- .../structures/NotificationPanel.tsx | 11 +- src/components/structures/ThreadPanel.tsx | 119 +++++------------- .../views/right_panel/EmptyState.tsx | 42 +++++++ src/i18n/strings/en_EN.json | 7 +- test/components/structures/FilePanel-test.tsx | 58 +++++++++ .../structures/ThreadPanel-test.tsx | 47 +------ .../__snapshots__/FilePanel-test.tsx.snap | 58 +++++++++ .../__snapshots__/ThreadPanel-test.tsx.snap | 14 --- test/test-utils/test-utils.ts | 1 + 21 files changed, 266 insertions(+), 280 deletions(-) delete mode 100644 res/css/structures/_NotificationPanel.pcss create mode 100644 res/css/views/right_panel/_EmptyState.pcss create mode 100644 src/components/views/right_panel/EmptyState.tsx create mode 100644 test/components/structures/FilePanel-test.tsx create mode 100644 test/components/structures/__snapshots__/FilePanel-test.tsx.snap diff --git a/playwright/e2e/right-panel/file-panel.spec.ts b/playwright/e2e/right-panel/file-panel.spec.ts index 84e7614e8ef..52dd1133143 100644 --- a/playwright/e2e/right-panel/file-panel.spec.ts +++ b/playwright/e2e/right-panel/file-panel.spec.ts @@ -50,7 +50,7 @@ test.describe("FilePanel", () => { test.describe("render", () => { test("should render empty state", async ({ page }) => { // Wait until the information about the empty state is rendered - await expect(page.locator(".mx_FilePanel_empty")).toBeVisible(); + await expect(page.locator(".mx_EmptyState")).toBeVisible(); // Take a snapshot of RightPanel - fix https://github.com/vector-im/element-web/issues/25332 await expect(page.locator(".mx_RightPanel")).toMatchScreenshot("empty.png"); diff --git a/playwright/e2e/right-panel/notification-panel.spec.ts b/playwright/e2e/right-panel/notification-panel.spec.ts index 6223c1c13f7..aa7dedf73ab 100644 --- a/playwright/e2e/right-panel/notification-panel.spec.ts +++ b/playwright/e2e/right-panel/notification-panel.spec.ts @@ -35,7 +35,7 @@ test.describe("NotificationPanel", () => { await page.getByRole("button", { name: "Notifications" }).click(); // Wait until the information about the empty state is rendered - await expect(page.locator(".mx_NotificationPanel_empty")).toBeVisible(); + await expect(page.locator(".mx_EmptyState")).toBeVisible(); // Take a snapshot of RightPanel await expect(page.locator(".mx_RightPanel")).toMatchScreenshot("empty.png"); diff --git a/playwright/e2e/right-panel/right-panel.spec.ts b/playwright/e2e/right-panel/right-panel.spec.ts index 51ebb3df929..632f709245c 100644 --- a/playwright/e2e/right-panel/right-panel.spec.ts +++ b/playwright/e2e/right-panel/right-panel.spec.ts @@ -104,7 +104,7 @@ test.describe("RightPanel", () => { await page.getByRole("menuitem", { name: "Files" }).click(); await expect(page.locator(".mx_FilePanel")).toBeVisible(); - await expect(page.locator(".mx_FilePanel_empty")).toBeVisible(); + await expect(page.locator(".mx_EmptyState")).toBeVisible(); await page.getByTestId("base-card-back-button").click(); await checkRoomSummaryCard(page, ROOM_NAME); diff --git a/playwright/snapshots/right-panel/file-panel.spec.ts/empty-linux.png b/playwright/snapshots/right-panel/file-panel.spec.ts/empty-linux.png index fb6d85ae521f6ff6eda86046b35507793a4d4eff..fdbec37b706fab051803a93b04224e39ca319c4f 100644 GIT binary patch literal 72623 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

#|E`M^qtu(z^JcPN#~H} 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 bqbmOg<{5$)1_|T@00000NkvXXu0mjfs-S+u literal 9580 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 diff --git a/playwright/snapshots/right-panel/notification-panel.spec.ts/empty-linux.png b/playwright/snapshots/right-panel/notification-panel.spec.ts/empty-linux.png index 5547e7621b6bad765157cee5b62ae8a8c33f1ef5..d18266534def039cadcfe80380451f6e6607b95c 100644 GIT binary patch literal 71187 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

!>v0 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 literal 9062 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 b { - font-weight: var(--cpd-font-weight-semibold); - } - } -} - -.mx_ThreadPanel_largeIcon { - width: 28px; - height: 28px; - padding: 18px; - background: $system; - border-radius: 50%; - - &::after { - @mixin ThreadSummaryIcon; - width: inherit; - height: inherit; - } -} - .mx_ContextualMenu_wrapper { .mx_ThreadPanel_Header_FilterOptionItem { display: flex; diff --git a/src/components/structures/FilePanel.tsx b/src/components/structures/FilePanel.tsx index 38368634315..c4bf2c3ff79 100644 --- a/src/components/structures/FilePanel.tsx +++ b/src/components/structures/FilePanel.tsx @@ -28,6 +28,7 @@ import { TimelineWindow, } from "matrix-js-sdk/src/matrix"; import { logger } from "matrix-js-sdk/src/logger"; +import { Icon as FilesIcon } from "@vector-im/compound-design-tokens/icons/files.svg"; import { MatrixClientPeg } from "../../MatrixClientPeg"; import EventIndexPeg from "../../indexing/EventIndexPeg"; @@ -40,6 +41,7 @@ import Spinner from "../views/elements/Spinner"; import { Layout } from "../../settings/enums/Layout"; import RoomContext, { TimelineRenderingType } from "../../contexts/RoomContext"; import Measured from "../views/elements/Measured"; +import EmptyState from "../views/right_panel/EmptyState"; interface IProps { roomId: string; @@ -255,10 +257,11 @@ class FilePanel extends React.Component { // wrap a TimelinePanel with the jump-to-event bits turned off. const emptyState = ( -

-

{_t("file_panel|empty_heading")}

-

{_t("file_panel|empty_description")}

-
+ ); const isRoomEncrypted = this.noRoom ? false : MatrixClientPeg.safeGet().isRoomEncrypted(this.props.roomId); diff --git a/src/components/structures/NotificationPanel.tsx b/src/components/structures/NotificationPanel.tsx index 0da27a19b10..9c56da96090 100644 --- a/src/components/structures/NotificationPanel.tsx +++ b/src/components/structures/NotificationPanel.tsx @@ -16,6 +16,7 @@ limitations under the License. import React from "react"; import { logger } from "matrix-js-sdk/src/logger"; +import { Icon as NotificationsIcon } from "@vector-im/compound-design-tokens/icons/notifications.svg"; import { _t } from "../../languageHandler"; import { MatrixClientPeg } from "../../MatrixClientPeg"; @@ -26,6 +27,7 @@ import { Layout } from "../../settings/enums/Layout"; import RoomContext, { TimelineRenderingType } from "../../contexts/RoomContext"; import Measured from "../views/elements/Measured"; import Heading from "../views/typography/Heading"; +import EmptyState from "../views/right_panel/EmptyState"; interface IProps { onClose(): void; @@ -57,10 +59,11 @@ export default class NotificationPanel extends React.PureComponent -

{_t("notif_panel|empty_heading")}

-

{_t("notif_panel|empty_description")}

- + ); let content: JSX.Element; diff --git a/src/components/structures/ThreadPanel.tsx b/src/components/structures/ThreadPanel.tsx index d9e1cf2aa8b..7c7761368d5 100644 --- a/src/components/structures/ThreadPanel.tsx +++ b/src/components/structures/ThreadPanel.tsx @@ -19,6 +19,7 @@ import React, { useContext, useEffect, useRef, useState } from "react"; import { EventTimelineSet, Room, Thread } from "matrix-js-sdk/src/matrix"; import { IconButton, Tooltip } from "@vector-im/compound-web"; import { logger } from "matrix-js-sdk/src/logger"; +import { Icon as ThreadsIcon } from "@vector-im/compound-design-tokens/icons/threads.svg"; import { Icon as MarkAllThreadsReadIcon } from "../../../res/img/element-icons/check-all.svg"; import BaseCard from "../views/right_panel/BaseCard"; @@ -37,6 +38,7 @@ import { ButtonEvent } from "../views/elements/AccessibleButton"; import Spinner from "../views/elements/Spinner"; import Heading from "../views/typography/Heading"; import { clearRoomNotification } from "../../utils/notifications"; +import EmptyState from "../views/right_panel/EmptyState"; interface IProps { roomId: string; @@ -73,8 +75,7 @@ export const ThreadPanelHeaderFilterOptionItem: React.FC< export const ThreadPanelHeader: React.FC<{ filterOption: ThreadFilterType; setFilterOption: (filterOption: ThreadFilterType) => void; - empty: boolean; -}> = ({ filterOption, setFilterOption, empty }) => { +}> = ({ filterOption, setFilterOption }) => { const mxClient = useMatrixClientContext(); const roomContext = useRoomContext(); const [menuDisplayed, button, openMenu, closeMenu] = useContextMenu(); @@ -140,86 +141,24 @@ export const ThreadPanelHeader: React.FC<{ {_t("common|threads")} - {!empty && ( - <> - - - - - -
- { - openMenu(); - PosthogTrackers.trackInteraction("WebRightPanelThreadPanelFilterDropdown", ev); - }} - > - {`${_t("threads|show_thread_filter")} ${value?.label}`} - - {contextMenu} - - )} -
- ); -}; - -interface EmptyThreadIProps { - hasThreads: boolean; - filterOption: ThreadFilterType; - showAllThreadsCallback: () => void; -} - -const EmptyThread: React.FC = ({ hasThreads, filterOption, showAllThreadsCallback }) => { - let body: JSX.Element; - if (hasThreads) { - body = ( - <> -

- {_t("threads|empty_has_threads_tip", { - replyInThread: _t("action|reply_in_thread"), - })} -

-

- {/* Always display that paragraph to prevent layout shift when hiding the button */} - {filterOption === ThreadFilterType.My ? ( - - ) : ( - <>  - )} -

- - ); - } else { - body = ( - <> -

{_t("threads|empty_explainer")}

-

- {_t( - "threads|empty_tip", - { - replyInThread: _t("action|reply_in_thread"), - }, - { - b: (sub) => {sub}, - }, - )} -

- - ); - } - - return ( -
-
-

{_t("threads|empty_heading")}

- {body} + + + + + +
+ { + openMenu(); + PosthogTrackers.trackInteraction("WebRightPanelThreadPanelFilterDropdown", ev); + }} + > + {`${_t("threads|show_thread_filter")} ${value?.label}`} + + {contextMenu}
); }; @@ -268,11 +207,7 @@ const ThreadPanel: React.FC = ({ roomId, onClose, permalinkCreator }) => + hasThreads && } id="thread-panel" className="mx_ThreadPanel" @@ -295,10 +230,12 @@ const ThreadPanel: React.FC = ({ roomId, onClose, permalinkCreator }) => timelineSet={timelineSet} showUrlPreview={false} // No URL previews at the threads list level empty={ - setFilterOption(ThreadFilterType.All)} + } alwaysShowTimestamps={true} diff --git a/src/components/views/right_panel/EmptyState.tsx b/src/components/views/right_panel/EmptyState.tsx new file mode 100644 index 00000000000..7189cb8b3a7 --- /dev/null +++ b/src/components/views/right_panel/EmptyState.tsx @@ -0,0 +1,42 @@ +/* +Copyright 2024 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import React, { ComponentType } from "react"; +import { Text } from "@vector-im/compound-web"; + +import { Flex } from "../../utils/Flex"; + +interface Props { + Icon: ComponentType>; + title: string; + description: string; +} + +const EmptyState: React.FC = ({ Icon, title, description }) => { + return ( + + + + {title} + + + {description} + + + ); +}; + +export default EmptyState; diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 03da4e78118..12ad79607d6 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -3193,16 +3193,13 @@ "one": "%(count)s reply", "other": "%(count)s replies" }, - "empty_explainer": "Threads help keep your conversations on-topic and easy to track.", - "empty_has_threads_tip": "Reply to an ongoing thread or use “%(replyInThread)s” when hovering over a message to start a new one.", - "empty_heading": "Keep discussions organised with threads", - "empty_tip": "Tip: Use “%(replyInThread)s” when hovering over a message.", + "empty_description": "Use “%(replyInThread)s” when hovering over a message.", + "empty_title": "Threads help keep your conversations on-topic and easy to track.", "error_start_thread_existing_relation": "Can't create a thread from an event with an existing relation", "mark_all_read": "Mark all as read", "my_threads": "My threads", "my_threads_description": "Shows all threads you've participated in", "open_thread": "Open thread", - "show_all_threads": "Show all threads", "show_thread_filter": "Show:" }, "threads_activity_centre": { diff --git a/test/components/structures/FilePanel-test.tsx b/test/components/structures/FilePanel-test.tsx new file mode 100644 index 00000000000..2b53c9c86c9 --- /dev/null +++ b/test/components/structures/FilePanel-test.tsx @@ -0,0 +1,58 @@ +/* +Copyright 2024 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import React from "react"; +import { EventTimelineSet, PendingEventOrdering, Room } from "matrix-js-sdk/src/matrix"; +import { screen, render, waitFor } from "@testing-library/react"; +import { mocked } from "jest-mock"; + +import FilePanel from "../../../src/components/structures/FilePanel"; +import ResizeNotifier from "../../../src/utils/ResizeNotifier"; +import { stubClient } from "../../test-utils"; +import { MatrixClientPeg } from "../../../src/MatrixClientPeg"; + +jest.mock("matrix-js-sdk/src/matrix", () => ({ + ...jest.requireActual("matrix-js-sdk/src/matrix"), + TimelineWindow: jest.fn().mockReturnValue({ + load: jest.fn().mockResolvedValue(null), + getEvents: jest.fn().mockReturnValue([]), + canPaginate: jest.fn().mockReturnValue(false), + }), +})); + +describe("FilePanel", () => { + beforeEach(() => { + stubClient(); + }); + + it("renders empty state", async () => { + const cli = MatrixClientPeg.safeGet(); + const room = new Room("!room:server", cli, cli.getSafeUserId(), { + pendingEventOrdering: PendingEventOrdering.Detached, + }); + const timelineSet = new EventTimelineSet(room); + room.getOrCreateFilteredTimelineSet = jest.fn().mockReturnValue(timelineSet); + mocked(cli.getRoom).mockReturnValue(room); + + const { asFragment } = render( + , + ); + await waitFor(() => { + expect(screen.getByText("No files visible in this room")).toBeInTheDocument(); + }); + expect(asFragment()).toMatchSnapshot(); + }); +}); diff --git a/test/components/structures/ThreadPanel-test.tsx b/test/components/structures/ThreadPanel-test.tsx index 19122e4ccef..f66f58ed847 100644 --- a/test/components/structures/ThreadPanel-test.tsx +++ b/test/components/structures/ThreadPanel-test.tsx @@ -43,44 +43,21 @@ describe("ThreadPanel", () => { describe("Header", () => { it("expect that All filter for ThreadPanelHeader properly renders Show: All threads", () => { const { asFragment } = render( - undefined} - />, + undefined} />, ); expect(asFragment()).toMatchSnapshot(); }); it("expect that My filter for ThreadPanelHeader properly renders Show: My threads", () => { const { asFragment } = render( - undefined} - />, - ); - expect(asFragment()).toMatchSnapshot(); - }); - - it("matches snapshot when no threads", () => { - const { asFragment } = render( - undefined} - />, + undefined} />, ); expect(asFragment()).toMatchSnapshot(); }); it("expect that ThreadPanelHeader properly opens a context menu when clicked on the button", () => { const { container } = render( - undefined} - />, + undefined} />, ); const found = container.querySelector(".mx_ThreadPanel_dropdown"); expect(found).toBeTruthy(); @@ -91,11 +68,7 @@ describe("ThreadPanel", () => { it("expect that ThreadPanelHeader has the correct option selected in the context menu", () => { const { container } = render( - undefined} - />, + undefined} />, ); fireEvent.click(container.querySelector(".mx_ThreadPanel_dropdown")!); const found = screen.queryAllByRole("menuitemradio"); @@ -118,11 +91,7 @@ describe("ThreadPanel", () => { const { container } = render( - undefined} - /> + undefined} /> , ); @@ -136,11 +105,7 @@ describe("ThreadPanel", () => { const mockClient = createTestClient(); const { container } = render( - undefined} - /> + undefined} /> , ); fireEvent.click(getByRole(container, "button", { name: "Mark all as read" })); diff --git a/test/components/structures/__snapshots__/FilePanel-test.tsx.snap b/test/components/structures/__snapshots__/FilePanel-test.tsx.snap new file mode 100644 index 00000000000..87ffc5da2e2 --- /dev/null +++ b/test/components/structures/__snapshots__/FilePanel-test.tsx.snap @@ -0,0 +1,58 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`FilePanel renders empty state 1`] = ` + +
+
+
+ +
+
+
+
+
+

+ No files visible in this room +

+

+ Attach files from chat or just drag and drop them anywhere in a room. +

+
+
+
+
+ +`; diff --git a/test/components/structures/__snapshots__/ThreadPanel-test.tsx.snap b/test/components/structures/__snapshots__/ThreadPanel-test.tsx.snap index 09bf4ae39ba..0a219b84034 100644 --- a/test/components/structures/__snapshots__/ThreadPanel-test.tsx.snap +++ b/test/components/structures/__snapshots__/ThreadPanel-test.tsx.snap @@ -95,17 +95,3 @@ exports[`ThreadPanel Header expect that ThreadPanelHeader has the correct option
`; - -exports[`ThreadPanel Header matches snapshot when no threads 1`] = ` - -
-

- Threads -

-
-
-`; diff --git a/test/test-utils/test-utils.ts b/test/test-utils/test-utils.ts index 5370f72b18e..856d9b17b7c 100644 --- a/test/test-utils/test-utils.ts +++ b/test/test-utils/test-utils.ts @@ -274,6 +274,7 @@ export function createTestClient(): MatrixClient { matrixRTC: createStubMatrixRTC(), isFallbackICEServerAllowed: jest.fn().mockReturnValue(false), getAuthIssuer: jest.fn(), + getOrCreateFilter: jest.fn(), } as unknown as MatrixClient; client.reEmitter = new ReEmitter(client); From 18398951b4da2022d24f88e708266cd463f64d73 Mon Sep 17 00:00:00 2001 From: ElementRobot Date: Sat, 20 Jul 2024 07:21:04 +0100 Subject: [PATCH 02/69] [create-pull-request] automated change (#12799) Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com> --- playwright/plugins/homeserver/synapse/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/playwright/plugins/homeserver/synapse/index.ts b/playwright/plugins/homeserver/synapse/index.ts index 8d474d9fe91..b62c7376456 100644 --- a/playwright/plugins/homeserver/synapse/index.ts +++ b/playwright/plugins/homeserver/synapse/index.ts @@ -28,7 +28,7 @@ import { randB64Bytes } from "../../utils/rand"; // Docker tag to use for `matrixdotorg/synapse` image. // We target a specific digest as every now and then a Synapse update will break our CI. // This digest is updated by the playwright-image-updates.yaml workflow periodically. -const DOCKER_TAG = "develop@sha256:ee66fc1ebbf15f9dde375cdb2afd544491b88b81ac3c82e6c4282bc3b7f332bc"; +const DOCKER_TAG = "develop@sha256:14ca769c834220a478a1e97df041361c6fb0a541ccb2f0666d3ce911224f5f7e"; async function cfgDirFromTemplate(opts: StartHomeserverOpts): Promise> { const templateDir = path.join(__dirname, "templates", opts.template); From 62c56255fc8272a6fac0a0feec734cb6d8a38e55 Mon Sep 17 00:00:00 2001 From: ElementRobot Date: Mon, 22 Jul 2024 07:15:11 +0100 Subject: [PATCH 03/69] [create-pull-request] automated change (#12800) Co-authored-by: github-merge-queue --- src/i18n/strings/cs.json | 5 ----- src/i18n/strings/de_DE.json | 5 ----- src/i18n/strings/el.json | 4 ---- src/i18n/strings/es.json | 5 ----- src/i18n/strings/et.json | 5 ----- src/i18n/strings/fi.json | 3 --- src/i18n/strings/fr.json | 5 ----- src/i18n/strings/gl.json | 5 ----- src/i18n/strings/he.json | 5 ----- src/i18n/strings/hu.json | 5 ----- src/i18n/strings/id.json | 5 ----- src/i18n/strings/is.json | 3 --- src/i18n/strings/it.json | 5 ----- src/i18n/strings/ja.json | 5 ----- src/i18n/strings/lo.json | 5 ----- src/i18n/strings/nl.json | 5 ----- src/i18n/strings/pl.json | 5 ----- src/i18n/strings/ru.json | 5 ----- src/i18n/strings/sk.json | 5 ----- src/i18n/strings/sq.json | 5 ----- src/i18n/strings/sv.json | 5 ----- src/i18n/strings/uk.json | 5 ----- src/i18n/strings/vi.json | 2 -- src/i18n/strings/zh_Hans.json | 5 ----- src/i18n/strings/zh_Hant.json | 5 ----- 25 files changed, 117 deletions(-) diff --git a/src/i18n/strings/cs.json b/src/i18n/strings/cs.json index b98bcc01ed1..25353f30df9 100644 --- a/src/i18n/strings/cs.json +++ b/src/i18n/strings/cs.json @@ -3097,15 +3097,10 @@ "one": "%(count)s odpověď", "other": "%(count)s odpovědí" }, - "empty_explainer": "Vlákna pomáhají udržovat konverzace k tématu a snadno je sledovat.", - "empty_has_threads_tip": "Odpovědět na probíhající vlákno nebo použít \"%(replyInThread)s\", když najedete na zprávu a začnete novou.", - "empty_heading": "Udržujte diskuse organizované pomocí vláken", - "empty_tip": "Tip: Použijte \"%(replyInThread)s\" při najetí na zprávu.", "error_start_thread_existing_relation": "Nelze založit vlákno ve vlákně", "my_threads": "Moje vlákna", "my_threads_description": "Zobrazit všechna vlákna, kterých jste se zúčastnili", "open_thread": "Otevřít vlákno", - "show_all_threads": "Zobrazit všechna vlákna", "show_thread_filter": "Zobrazit:" }, "threads_activity_centre": { diff --git a/src/i18n/strings/de_DE.json b/src/i18n/strings/de_DE.json index 4ac9291038e..5097bb2440b 100644 --- a/src/i18n/strings/de_DE.json +++ b/src/i18n/strings/de_DE.json @@ -3073,15 +3073,10 @@ "one": "%(count)s Antwort", "other": "%(count)s Antworten" }, - "empty_explainer": "Threads helfen dabei, dass deine Konversationen beim Thema und leicht nachverfolgbar bleiben.", - "empty_has_threads_tip": "Antworte auf einen Thread oder klicke bei einer Nachricht auf „%(replyInThread)s“, um einen Thread zu starten.", - "empty_heading": "Organisiere Diskussionen mit Threads", - "empty_tip": "Tipp: Nutze “%(replyInThread)s” beim Schweben über eine Nachricht.", "error_start_thread_existing_relation": "Du kannst keinen Thread in einem Thread starten", "my_threads": "Meine Threads", "my_threads_description": "Zeigt alle Threads, an denen du teilgenommen hast", "open_thread": "Thread anzeigen", - "show_all_threads": "Alle Threads anzeigen", "show_thread_filter": "Zeige:" }, "time": { diff --git a/src/i18n/strings/el.json b/src/i18n/strings/el.json index d7ea9063ac0..2e75cc96896 100644 --- a/src/i18n/strings/el.json +++ b/src/i18n/strings/el.json @@ -2441,14 +2441,10 @@ "one": "%(count)s απάντηση", "other": "%(count)s απαντήσεις" }, - "empty_explainer": "Τα νήματα σας βοηθούν να οργανώνετε και να παρακολουθείτε καλύτερα τις συνομιλίες σας.", - "empty_has_threads_tip": "Απαντήστε σε ένα νήμα εκτέλεσης που βρίσκεται σε εξέλιξη ή χρησιμοποιήστε το \"%(replyInThread)s\" όταν τοποθετείτε το δείκτη του ποντικιού πάνω από ένα μήνυμα για να ξεκινήσετε ένα νέο.", - "empty_heading": "Διατηρήστε τις συζητήσεις οργανωμένες με νήματα", "error_start_thread_existing_relation": "Δεν είναι δυνατή η δημιουργία νήματος από ένα συμβάν με μια υπάρχουσα σχέση", "my_threads": "Τα νήματα μου", "my_threads_description": "Εμφανίζει όλα τα νήματα στα οποία έχετε συμμετάσχει", "open_thread": "Άνοιγμα νήματος", - "show_all_threads": "Εμφάνιση όλων των νημάτων", "show_thread_filter": "Εμφάνισε:" }, "time": { diff --git a/src/i18n/strings/es.json b/src/i18n/strings/es.json index 794ac603bab..bec39f8174b 100644 --- a/src/i18n/strings/es.json +++ b/src/i18n/strings/es.json @@ -2822,15 +2822,10 @@ "one": "%(count)s respuesta", "other": "%(count)s respuestas" }, - "empty_explainer": "Los hilos ayudan a mantener tus conversaciones centradas y a que sean fáciles de seguir.", - "empty_has_threads_tip": "Responde a un hilo en curso o usa «%(replyInThread)s» al pasar el ratón por encima de un mensaje para iniciar uno nuevo.", - "empty_heading": "Organiza los temas de conversación en hilos", - "empty_tip": "Consejo: Usa «%(replyInThread)s» mientras pasas el ratón sobre un mensaje.", "error_start_thread_existing_relation": "No ha sido posible crear un hilo a partir de un evento con una relación existente", "my_threads": "Mis hilos", "my_threads_description": "Ver todos los hilos en los que has participado", "open_thread": "Abrir hilo", - "show_all_threads": "Ver todos los hilos", "show_thread_filter": "Mostrar:" }, "time": { diff --git a/src/i18n/strings/et.json b/src/i18n/strings/et.json index 4c714a9949f..96e163f0aef 100644 --- a/src/i18n/strings/et.json +++ b/src/i18n/strings/et.json @@ -3044,15 +3044,10 @@ "one": "%(count)s vastus", "other": "%(count)s vastust" }, - "empty_explainer": "Jutulõngad aitavad hoida vestlused teemakohastena ning mugavalt loetavatena.", - "empty_has_threads_tip": "Vasta jätkuvas jutulõngas või uue jutulõnga loomiseks kasuta „%(replyInThread)s“ valikut, mida kuvatakse hiire liigutamisel sõnumi kohal.", - "empty_heading": "Halda vestlusi jutulõngadena", - "empty_tip": "Soovitus: Sõnumi kohal avanevast valikust kasuta „%(replyInThread)s“ võimalust.", "error_start_thread_existing_relation": "Jutulõnga ei saa luua sõnumist, mis juba on jutulõnga osa", "my_threads": "Minu jutulõngad", "my_threads_description": "Näitab kõiki jutulõngasid, kus sa oled osalenud", "open_thread": "Ava jutulõng", - "show_all_threads": "Näita kõiki jutulõngasid", "show_thread_filter": "Näita:" }, "time": { diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json index 177029d11bd..f44567a25de 100644 --- a/src/i18n/strings/fi.json +++ b/src/i18n/strings/fi.json @@ -2695,12 +2695,9 @@ "one": "%(count)s vastaus", "other": "%(count)s vastausta" }, - "empty_explainer": "Ketjut auttavat pitämään keskustelut asiayhteyteen sopivina ja helposti seurattavina.", - "empty_heading": "Pidä keskustelut järjestyksessä ketjuissa", "my_threads": "Omat ketjut", "my_threads_description": "Näyttää kaikki ketjut, joissa olet ollut osallinen", "open_thread": "Avaa ketju", - "show_all_threads": "Näytä kaikki ketjut", "show_thread_filter": "Näytä:" }, "time": { diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json index a8df8fc902b..55fc6ad1d58 100644 --- a/src/i18n/strings/fr.json +++ b/src/i18n/strings/fr.json @@ -3125,16 +3125,11 @@ "one": "%(count)s réponse", "other": "%(count)s réponses" }, - "empty_explainer": "Les fils de discussion vous permettent de recentrer vos conversations et de les rendre facile à suivre.", - "empty_has_threads_tip": "Répondez à un fil de discussion en cours ou utilisez \"%(replyInThread)s\" lorsque vous passez la souris sur un message pour en commencer un nouveau.", - "empty_heading": "Garde les discussions organisées à l’aide de fils de discussion", - "empty_tip": "Conseil : Utilisez « %(replyInThread)s » en survolant un message.", "error_start_thread_existing_relation": "Impossible de créer un fil de discussion à partir d’un événement avec une relation existante", "mark_all_read": "Tout marquer comme lu", "my_threads": "Mes fils de discussion", "my_threads_description": "Affiche tous les fils de discussion auxquels vous avez participé", "open_thread": "Ouvrir le fil de discussion", - "show_all_threads": "Afficher tous les fils de discussion", "show_thread_filter": "Affiche :" }, "threads_activity_centre": { diff --git a/src/i18n/strings/gl.json b/src/i18n/strings/gl.json index 99b43886717..7f8fa3cb2d8 100644 --- a/src/i18n/strings/gl.json +++ b/src/i18n/strings/gl.json @@ -2598,15 +2598,10 @@ "one": "%(count)s resposta", "other": "%(count)s respostas" }, - "empty_explainer": "Os fíos axúdanche a manter as conversas no tema e facilitan o seguimento.", - "empty_has_threads_tip": "Responde a unha conversa en curso ou usa \"%(replyInThread)s\" cando pasas por enriba dunha mensaxe co rato para iniciar unha nova.", - "empty_heading": "Manter as conversas organizadas con fíos", - "empty_tip": "Truco: Usa \"%(replyInThread)s\" ao poñerte enriba dunha mensaxe.", "error_start_thread_existing_relation": "Non se pode crear un tema con unha relación existente desde un evento", "my_threads": "As miñas conversas", "my_threads_description": "Mostra tódalas conversas nas que participaches", "open_thread": "Abrir fío", - "show_all_threads": "Mostra tódolos temas", "show_thread_filter": "Mostrar:" }, "time": { diff --git a/src/i18n/strings/he.json b/src/i18n/strings/he.json index 4f8991ff6e7..8c67ee5dac9 100644 --- a/src/i18n/strings/he.json +++ b/src/i18n/strings/he.json @@ -2076,15 +2076,10 @@ "threads": { "all_threads": "כל הקישורים", "all_threads_description": "הצג את כל הקישורים מחדר זה", - "empty_explainer": "שרשורים עוזרים לשמור על השיחות שלכם בנושא וקל למעקב.", - "empty_has_threads_tip": "השיבו לשרשור מתמשך או השתמשו ב-\"%(replyInThread)s\" כשאתם מרחפים מעל הודעה כדי להתחיל הודעה חדשה.", - "empty_heading": "שימרו על דיונים מאורגנים בשרשורים", - "empty_tip": "טיפ: השתמש ב-\"%(replyInThread)s\" כשאתם מרחפים מעל הודעה.", "error_start_thread_existing_relation": "לא ניתן ליצור שרשור מאירוע עם קשר קיים", "my_threads": "הקישורים שלי", "my_threads_description": "הצג את כל השרשורים שאתם משתתפים בהם", "open_thread": "פתיחת שרשור", - "show_all_threads": "הצג את כל השרשורים", "show_thread_filter": "הצג:" }, "time": { diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json index 526bd81639d..6b90b22d1e5 100644 --- a/src/i18n/strings/hu.json +++ b/src/i18n/strings/hu.json @@ -3012,15 +3012,10 @@ "one": "%(count)s válasz", "other": "%(count)s válasz" }, - "empty_explainer": "Az üzenetszálak segítenek a különböző témájú beszélgetések figyelemmel kísérésében.", - "empty_has_threads_tip": "Válaszoljon egy meglévő üzenetszálban, vagy új üzenetszál indításához használja a „%(replyInThread)s” lehetőséget az üzenet sarkában megjelenő menüben.", - "empty_heading": "Beszélgetések üzenetszálakba rendezése", - "empty_tip": "Tipp: Használja a „%(replyInThread)s” lehetőséget a szöveg fölé navigálva.", "error_start_thread_existing_relation": "Nem lehet üzenetszálat indítani olyan eseményről ami már rendelkezik kapcsolattal", "my_threads": "Saját üzenetszálak", "my_threads_description": "Minden üzenetszál megjelenítése, amelyben részt vesz", "open_thread": "Üzenetszál megnyitása", - "show_all_threads": "Minden üzenetszál megjelenítése", "show_thread_filter": "Megjelenítés:" }, "time": { diff --git a/src/i18n/strings/id.json b/src/i18n/strings/id.json index 79697d7dad1..c3b8c462e27 100644 --- a/src/i18n/strings/id.json +++ b/src/i18n/strings/id.json @@ -3046,15 +3046,10 @@ "one": "%(count)s balasan", "other": "%(count)s balasan" }, - "empty_explainer": "Utasan membantu membuat obrolan sesuai topik dan mudah untuk dilacak.", - "empty_has_threads_tip": "Balas ke utasan yang sedang terjadi atau gunakan “%(replyInThread)s” ketika kursor diletakkan pada pesan untuk memulai yang baru.", - "empty_heading": "Buat diskusi tetap teratur dengan utasan", - "empty_tip": "Tip: Gunakan “%(replyInThread)s” ketika kursor di atas pesan.", "error_start_thread_existing_relation": "Tidak dapat membuat utasan dari sebuah peristiwa dengan relasi yang sudah ada", "my_threads": "Utasan saya", "my_threads_description": "Menampilkan semua utasan yang Anda berpartisipasi", "open_thread": "Buka utasan", - "show_all_threads": "Tampilkan semua utasan", "show_thread_filter": "Tampilkan:" }, "time": { diff --git a/src/i18n/strings/is.json b/src/i18n/strings/is.json index 10c477173af..3688882ada7 100644 --- a/src/i18n/strings/is.json +++ b/src/i18n/strings/is.json @@ -2505,12 +2505,9 @@ "one": "%(count)s svar", "other": "%(count)s svör" }, - "empty_explainer": "Spjallþræðir hjálpa til við að halda samræðum við efnið og gerir auðveldara að rekja þær.", - "empty_heading": "Haltu umræðum skipulögðum með spjallþráðum", "my_threads": "Spjallþræðirnir mínir", "my_threads_description": "Birtir alla spjallþræði sem þú hefur tekið þátt í", "open_thread": "Opna spjallþráð", - "show_all_threads": "Birta alla spjallþræði", "show_thread_filter": "Sýna:" }, "time": { diff --git a/src/i18n/strings/it.json b/src/i18n/strings/it.json index c8a700b6e61..59d807a9575 100644 --- a/src/i18n/strings/it.json +++ b/src/i18n/strings/it.json @@ -3090,15 +3090,10 @@ "one": "%(count)s risposta", "other": "%(count)s risposte" }, - "empty_explainer": "Le conversazioni ti aiutano a tenere le tue discussioni in tema e rintracciabili.", - "empty_has_threads_tip": "Rispondi ad una conversazione in corso o usa \"%(replyInThread)s\" passando sopra ad un messaggio per iniziarne una nuova.", - "empty_heading": "Tieni le discussioni organizzate in conversazioni", - "empty_tip": "Consiglio: usa \"%(replyInThread)s\" passando sopra un messaggio.", "error_start_thread_existing_relation": "Impossibile creare una conversazione da un evento con una relazione esistente", "my_threads": "Le mie conversazioni", "my_threads_description": "Mostra tutte le conversazioni a cui hai partecipato", "open_thread": "Apri conversazione", - "show_all_threads": "Mostra tutte le conversazioni", "show_thread_filter": "Mostra:" }, "threads_activity_centre": { diff --git a/src/i18n/strings/ja.json b/src/i18n/strings/ja.json index e07756ffd10..69aec14f82b 100644 --- a/src/i18n/strings/ja.json +++ b/src/i18n/strings/ja.json @@ -2827,15 +2827,10 @@ "other": "%(count)s件の返信", "one": "%(count)s件の返信" }, - "empty_explainer": "スレッド機能を使うと、会話のテーマを維持したり、会話を簡単に追跡したりすることができます。", - "empty_has_threads_tip": "既存のスレッドに返信するか、メッセージの「%(replyInThread)s」機能を使用すると新しいスレッドを開始できます。", - "empty_heading": "スレッド機能を使って、会話をまとめましょう", - "empty_tip": "ヒント:メッセージの「%(replyInThread)s」機能を使用すると新しいスレッドを開始できます。", "error_start_thread_existing_relation": "既存の関係のあるイベントからスレッドを作成することはできません", "my_threads": "自分のスレッド", "my_threads_description": "参加している全スレッドを表示", "open_thread": "スレッドを開く", - "show_all_threads": "全てのスレッドを表示", "show_thread_filter": "表示:" }, "time": { diff --git a/src/i18n/strings/lo.json b/src/i18n/strings/lo.json index 8cfe241876e..a7f36be946e 100644 --- a/src/i18n/strings/lo.json +++ b/src/i18n/strings/lo.json @@ -2457,15 +2457,10 @@ "one": "%(count)s ຕອບກັບ", "other": "%(count)s ຕອບກັບ" }, - "empty_explainer": "ກະທູ້ຊ່ວຍໃຫ້ການສົນທະນາຂອງທ່ານຢູ່ໃນຫົວຂໍ້ ແລະ ງ່າຍຕໍ່ການຕິດຕາມ.", - "empty_has_threads_tip": "ຕອບກັບຫາກະທູ້ທີ່ກຳລັງດຳເນີນ ຫຼືໃຊ້ ຢູ່“%(replyInThread)s” ເມື່ອເລື່ອນໃສ່ຂໍ້ຄວາມເພື່ອເລີ່ມຕົ້ນອັນໃໝ່.", - "empty_heading": "ຮັກສາການສົນທະນາທີ່ມີການຈັດລະບຽບ", - "empty_tip": "ເຄັດລັບ: ໃຊ້ “%(replyInThread)s” ເມື່ອເລື່ອນໃສ່ຂໍ້ຄວາມ.", "error_start_thread_existing_relation": "ບໍ່ສາມາດສ້າງກະທູ້ຈາກເຫດການທີ່ມີຄວາມສໍາພັນທີ່ມີຢູ່ແລ້ວ", "my_threads": "ກະທູ້ຂອງຂ້ອຍ", "my_threads_description": "ສະແດງຫົວຂໍ້ທັງໝົດທີ່ທ່ານໄດ້ເຂົ້າຮ່ວມ", "open_thread": "ເປີດກະທູ້", - "show_all_threads": "ສະແດງຫົວຂໍ້ທັງໝົດ", "show_thread_filter": "ສະແດງ:" }, "time": { diff --git a/src/i18n/strings/nl.json b/src/i18n/strings/nl.json index dbd0b4ddd3e..1927341c574 100644 --- a/src/i18n/strings/nl.json +++ b/src/i18n/strings/nl.json @@ -2620,15 +2620,10 @@ "one": "%(count)s reactie", "other": "%(count)s reacties" }, - "empty_explainer": "Threads helpen jou gesprekken on-topic te houden en gemakkelijk bij te houden.", - "empty_has_threads_tip": "Reageer op een lopende thread of gebruik \"%(replyInThread)s\" wanneer je de muisaanwijzer op een bericht plaatst om een nieuwe te starten.", - "empty_heading": "Houd threads georganiseerd", - "empty_tip": "Tip: Gebruik “%(replyInThread)s” met de muiscursor boven een bericht.", "error_start_thread_existing_relation": "Kan geen discussie maken van een gebeurtenis met een bestaande relatie", "my_threads": "Mijn discussies", "my_threads_description": "Toon alle threads waarin je hebt bijgedragen", "open_thread": "Open discussie", - "show_all_threads": "Threads weergeven", "show_thread_filter": "Toon:" }, "time": { diff --git a/src/i18n/strings/pl.json b/src/i18n/strings/pl.json index 671ec8c738d..90ea7ea9885 100644 --- a/src/i18n/strings/pl.json +++ b/src/i18n/strings/pl.json @@ -3197,16 +3197,11 @@ "one": "%(count)s odpowiedź", "other": "%(count)s odpowiedzi" }, - "empty_explainer": "Dzięki wątkom Twoje rozmowy są zorganizowane i łatwe do śledzenia.", - "empty_has_threads_tip": "Odpowiedz do trwającego już wątku lub użyj “%(replyInThread)s” najeżdżając na wiadomość, aby rozpocząć nową.", - "empty_heading": "Organizuj dyskusje za pomocą wątków", - "empty_tip": "Tip: Użyj “%(replyInThread)s” najeżdżając na wiadomość.", "error_start_thread_existing_relation": "Nie można utworzyć wątku z wydarzenia z istniejącą relacją", "mark_all_read": "Oznacz wszystkie jako przeczytane", "my_threads": "Moje wątki", "my_threads_description": "Pokazuje wszystkie wątki, w których brałeś udział", "open_thread": "Otwórz wątek", - "show_all_threads": "Pokaż wszystkie wątki", "show_thread_filter": "Pokaż:" }, "threads_activity_centre": { diff --git a/src/i18n/strings/ru.json b/src/i18n/strings/ru.json index 79afe8b52ab..45d229ca613 100644 --- a/src/i18n/strings/ru.json +++ b/src/i18n/strings/ru.json @@ -3074,15 +3074,10 @@ "one": "%(count)s ответ", "other": "%(count)s ответов" }, - "empty_explainer": "Обсуждения помогают поддерживать и легко отслеживать тематику бесед.", - "empty_has_threads_tip": "Ответьте в текущее обсуждение или создайте новое, наведя курсор на сообщение и нажав «%(replyInThread)s».", - "empty_heading": "Организуйте обсуждения с помощью обсуждений", - "empty_tip": "Совет: Используйте “%(replyInThread)s” при наведении курсора на сообщение.", "error_start_thread_existing_relation": "Невозможно создать обсуждение из события с существующей связью", "my_threads": "Мои обсуждения", "my_threads_description": "Показывает все обсуждения, в которых вы принимали участие", "open_thread": "Открыть ветку", - "show_all_threads": "Показать все обсуждения", "show_thread_filter": "Показать:" }, "time": { diff --git a/src/i18n/strings/sk.json b/src/i18n/strings/sk.json index e4bec502870..47a00bb12e0 100644 --- a/src/i18n/strings/sk.json +++ b/src/i18n/strings/sk.json @@ -3077,15 +3077,10 @@ "one": "%(count)s odpoveď", "other": "%(count)s odpovedí" }, - "empty_explainer": "Vlákna pomáhajú udržiavať konverzácie v téme a uľahčujú ich sledovanie.", - "empty_has_threads_tip": "Odpovedzte na prebiehajúce vlákno alebo použite \"%(replyInThread)s\", keď prejdete nad správu a začnete novú.", - "empty_heading": "Udržujte diskusie organizované pomocou vlákien", - "empty_tip": "Tip: Použite položku “%(replyInThread)s”, keď prejdete ponad správu.", "error_start_thread_existing_relation": "Nie je možné vytvoriť vlákno z udalosti s existujúcim vzťahom", "my_threads": "Moje vlákna", "my_threads_description": "Zobrazí všetky vlákna, v ktorých ste sa zúčastnili", "open_thread": "Otvoriť vlákno", - "show_all_threads": "Zobraziť všetky vlákna", "show_thread_filter": "Zobraziť:" }, "time": { diff --git a/src/i18n/strings/sq.json b/src/i18n/strings/sq.json index 6563ee0fd1e..5c67bb8d5b0 100644 --- a/src/i18n/strings/sq.json +++ b/src/i18n/strings/sq.json @@ -2894,15 +2894,10 @@ "one": "%(count)s përgjigje", "other": "%(count)s përgjigje" }, - "empty_explainer": "Rrjedhat ndihmojnë që të mbahen bisedat tuaja brenda temës dhe të ndiqen kollaj.", - "empty_has_threads_tip": "Përgjigjuni te një rrjedhë në zhvillim e sipër, ose përdorni “%(replyInThread)s”, kur kalohet kursori sipër një mesazhi për të filluar një të re.", - "empty_heading": "Mbajini diskutimet të sistemuara në rrjedha", - "empty_tip": "Ndihmëz: Përdorni “%(replyInThread)s”, teksa kaloni kursorin sipër një mesazhi.", "error_start_thread_existing_relation": "S’mund të krijohet një rrjedhë prej një akti me një marrëdhënie ekzistuese", "my_threads": "Rrjedhat e mia", "my_threads_description": "Shfaq krejt rrjedhat ku keni marrë pjesë", "open_thread": "Hape rrjedhën", - "show_all_threads": "Shfaqi krejt rrjedhat", "show_thread_filter": "Shfaq:" }, "time": { diff --git a/src/i18n/strings/sv.json b/src/i18n/strings/sv.json index 8e10fa33ac0..6774e882ef1 100644 --- a/src/i18n/strings/sv.json +++ b/src/i18n/strings/sv.json @@ -3089,15 +3089,10 @@ "one": "%(count)s svar", "other": "%(count)s svar" }, - "empty_explainer": "Trådar underlättar för att hålla konversationer till ämnet och gör dem lättare att följa.", - "empty_has_threads_tip": "Svara i en pågående tråd eller använd \"%(replyInThread)s\" när du håller över ett meddelande för att starta en ny tråd.", - "empty_heading": "Håll diskussioner organiserade med trådar", - "empty_tip": "Tips: Välj \"%(replyInThread)s\" när du håller över ett meddelande.", "error_start_thread_existing_relation": "Kan inte skapa tråd från en händelse med en existerande relation", "my_threads": "Mina trådar", "my_threads_description": "Visar alla trådar du har medverkat i", "open_thread": "Öppna tråd", - "show_all_threads": "Visa alla trådar", "show_thread_filter": "Visa:" }, "threads_activity_centre": { diff --git a/src/i18n/strings/uk.json b/src/i18n/strings/uk.json index 53300cf08cd..932b7e86898 100644 --- a/src/i18n/strings/uk.json +++ b/src/i18n/strings/uk.json @@ -3009,15 +3009,10 @@ "one": "%(count)s відповідь", "other": "%(count)s відповідей" }, - "empty_explainer": "Гілки допомагають підтримувати розмови за темою та за ними легко стежити.", - "empty_has_threads_tip": "Дайте відповідь у наявну гілку, або створіть нову, навівши курсор на повідомлення й натиснувши «%(replyInThread)s».", - "empty_heading": "Упорядкуйте обговорення за допомогою гілок", - "empty_tip": "Порада: Використовуйте «%(replyInThread)s» навівши вказівник на повідомлення.", "error_start_thread_existing_relation": "Неможливо створити гілку з події з наявним відношенням", "my_threads": "Мої гілки", "my_threads_description": "Показує всі гілки, де ви брали участь", "open_thread": "Відкрити гілку", - "show_all_threads": "Показати всі гілки", "show_thread_filter": "Показати:" }, "time": { diff --git a/src/i18n/strings/vi.json b/src/i18n/strings/vi.json index 7abc70dedc5..359c0e3182c 100644 --- a/src/i18n/strings/vi.json +++ b/src/i18n/strings/vi.json @@ -2768,10 +2768,8 @@ "one": "%(count)s trả lời", "other": "%(count)s trả lời" }, - "empty_heading": "Giữ các cuộc thảo luận được tổ chức với các chủ đề này", "my_threads": "Các chủ đề của tôi", "my_threads_description": "Hiển thị tất cả các chủ đề bạn đã tham gia", - "show_all_threads": "Hiển thị tất cả chủ đề", "show_thread_filter": "Hiển thị:" }, "time": { diff --git a/src/i18n/strings/zh_Hans.json b/src/i18n/strings/zh_Hans.json index 84579849412..3b2269e9a5a 100644 --- a/src/i18n/strings/zh_Hans.json +++ b/src/i18n/strings/zh_Hans.json @@ -2752,15 +2752,10 @@ "one": "%(count)s 条回复", "other": "%(count)s 条回复" }, - "empty_explainer": "消息列帮助保持你的对话切题并易于追踪。", - "empty_has_threads_tip": "回复进行中的消息列或当悬停在消息上时使用%(replyInThread)s来发起新的消息列。", - "empty_heading": "用消息列使讨论井然有序", - "empty_tip": "实用提示:悬停在消息上时使用“%(replyInThread)s”。", "error_start_thread_existing_relation": "无法从既有关系的事件创建消息列", "my_threads": "我的消息列", "my_threads_description": "显示您参与的所有消息列", "open_thread": "打开消息列", - "show_all_threads": "显示所有消息列", "show_thread_filter": "显示:" }, "time": { diff --git a/src/i18n/strings/zh_Hant.json b/src/i18n/strings/zh_Hant.json index 57b31e17691..8715591fcb6 100644 --- a/src/i18n/strings/zh_Hant.json +++ b/src/i18n/strings/zh_Hant.json @@ -3004,15 +3004,10 @@ "one": "%(count)s 回覆", "other": "%(count)s 回覆" }, - "empty_explainer": "「討論串」功能可以協助您的對話不離題且易於追蹤。", - "empty_has_threads_tip": "將滑鼠游標停留在訊息上來開始新的討論串時,回覆正在進行的討論串或使用「%(replyInThread)s」。", - "empty_heading": "使用「討論串」功能,讓討論保持有條不紊", - "empty_tip": "秘訣:在滑鼠游標停於訊息上時使用「%(replyInThread)s」。", "error_start_thread_existing_relation": "無法從討論串既有的關係建立活動", "my_threads": "我的討論串", "my_threads_description": "顯示您參與的所有討論串", "open_thread": "開啟討論串", - "show_all_threads": "顯示所有討論串", "show_thread_filter": "顯示:" }, "time": { From 2fd291c23c77f8d5cb85c5ee74c1efaabad3ed22 Mon Sep 17 00:00:00 2001 From: ElementRobot Date: Tue, 23 Jul 2024 07:20:25 +0100 Subject: [PATCH 04/69] [create-pull-request] automated change (#12804) Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com> --- playwright/plugins/homeserver/synapse/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/playwright/plugins/homeserver/synapse/index.ts b/playwright/plugins/homeserver/synapse/index.ts index b62c7376456..5cf63917203 100644 --- a/playwright/plugins/homeserver/synapse/index.ts +++ b/playwright/plugins/homeserver/synapse/index.ts @@ -28,7 +28,7 @@ import { randB64Bytes } from "../../utils/rand"; // Docker tag to use for `matrixdotorg/synapse` image. // We target a specific digest as every now and then a Synapse update will break our CI. // This digest is updated by the playwright-image-updates.yaml workflow periodically. -const DOCKER_TAG = "develop@sha256:14ca769c834220a478a1e97df041361c6fb0a541ccb2f0666d3ce911224f5f7e"; +const DOCKER_TAG = "develop@sha256:9e193236098ae5ff66c9bf79252e318fd561ceb1322d5495780a11d9dbdcfb17"; async function cfgDirFromTemplate(opts: StartHomeserverOpts): Promise> { const templateDir = path.join(__dirname, "templates", opts.template); From 5308c91842a241e8726d44de07246d3dfbf16863 Mon Sep 17 00:00:00 2001 From: David Baker Date: Tue, 23 Jul 2024 09:08:22 +0100 Subject: [PATCH 05/69] Close any open modals on logout (#12777) * Close any open modals on logout Split out from https://github.com/matrix-org/matrix-react-sdk/pull/12666 * Add test --- src/Modal.tsx | 18 +++++++++++++++++- test/Modal-test.ts | 25 +++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/src/Modal.tsx b/src/Modal.tsx index b72180097ce..b8dacdbc1e5 100644 --- a/src/Modal.tsx +++ b/src/Modal.tsx @@ -22,9 +22,10 @@ import { IDeferred, defer, sleep } from "matrix-js-sdk/src/utils"; import { TypedEventEmitter } from "matrix-js-sdk/src/matrix"; import { Glass } from "@vector-im/compound-web"; -import dis from "./dispatcher/dispatcher"; +import dis, { defaultDispatcher } from "./dispatcher/dispatcher"; import AsyncWrapper from "./AsyncWrapper"; import { Defaultize } from "./@types/common"; +import { ActionPayload } from "./dispatcher/payloads"; const DIALOG_CONTAINER_ID = "mx_Dialog_Container"; const STATIC_DIALOG_CONTAINER_ID = "mx_Dialog_StaticContainer"; @@ -114,6 +115,21 @@ export class ModalManager extends TypedEventEmitter { + if (payload.action === "logout") { + this.forceCloseAllModals(); + } + }; + public toggleCurrentDialogVisibility(): void { const modal = this.getCurrentModal(); if (!modal) return; diff --git a/test/Modal-test.ts b/test/Modal-test.ts index d7630bd2da6..61144467435 100644 --- a/test/Modal-test.ts +++ b/test/Modal-test.ts @@ -16,6 +16,7 @@ limitations under the License. import Modal from "../src/Modal"; import QuestionDialog from "../src/components/views/dialogs/QuestionDialog"; +import defaultDispatcher from "../src/dispatcher/dispatcher"; describe("Modal", () => { test("forceCloseAllModals should close all open modals", () => { @@ -29,4 +30,28 @@ describe("Modal", () => { Modal.forceCloseAllModals(); expect(Modal.hasDialogs()).toBe(false); }); + + test("open modals should be closed on logout", () => { + const modal1OnFinished = jest.fn(); + const modal2OnFinished = jest.fn(); + + Modal.createDialog(QuestionDialog, { + title: "Test dialog 1", + description: "This is a test dialog", + button: "Word", + onFinished: modal1OnFinished, + }); + + Modal.createDialog(QuestionDialog, { + title: "Test dialog 2", + description: "This is a test dialog", + button: "Word", + onFinished: modal2OnFinished, + }); + + defaultDispatcher.dispatch({ action: "logout" }, true); + + expect(modal1OnFinished).toHaveBeenCalled(); + expect(modal2OnFinished).toHaveBeenCalled(); + }); }); From 25fcd6a65fac2744ce3668421815eac2a28135bb Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Tue, 23 Jul 2024 10:12:07 +0100 Subject: [PATCH 06/69] Update Thread Panel to match latest designs (#12797) * Add reusable empty state for the right panel Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Update tests Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Improve coverage Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Update Thread Panel to match latest Figma Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Update tests Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * i18n Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Use --cpd-space var Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --------- Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- res/css/_common.pcss | 2 +- res/css/views/right_panel/_ThreadPanel.pcss | 9 +++++---- res/css/views/rooms/_EventTile.pcss | 4 ++-- res/img/element-icons/thread-summary.svg | 1 - src/components/structures/ThreadPanel.tsx | 4 ---- .../structures/__snapshots__/ThreadPanel-test.tsx.snap | 10 ---------- 6 files changed, 8 insertions(+), 22 deletions(-) delete mode 100644 res/img/element-icons/thread-summary.svg diff --git a/res/css/_common.pcss b/res/css/_common.pcss index a454789efcf..8264ccb704c 100644 --- a/res/css/_common.pcss +++ b/res/css/_common.pcss @@ -851,7 +851,7 @@ legend { @define-mixin ThreadSummaryIcon { content: ""; display: inline-block; - mask-image: url("$(res)/img/element-icons/thread-summary.svg"); + mask-image: url("@vector-im/compound-design-tokens/icons/threads.svg"); mask-position: center; mask-repeat: no-repeat; mask-size: contain; diff --git a/res/css/views/right_panel/_ThreadPanel.pcss b/res/css/views/right_panel/_ThreadPanel.pcss index 612fd967470..fc1d39c9cae 100644 --- a/res/css/views/right_panel/_ThreadPanel.pcss +++ b/res/css/views/right_panel/_ThreadPanel.pcss @@ -18,12 +18,13 @@ limitations under the License. height: 100px; overflow: visible; + /* Unset flex on the thread list, but not the thread view */ + &:not(.mx_ThreadView) .mx_BaseCard_header .mx_BaseCard_header_title { + flex: unset; + } + .mx_BaseCard_header { .mx_BaseCard_header_title { - .mx_BaseCard_header_title_heading { - margin-right: auto; - } - .mx_AccessibleButton { font-size: 12px; color: $secondary-content; diff --git a/res/css/views/rooms/_EventTile.pcss b/res/css/views/rooms/_EventTile.pcss index 46f0ba900f1..66c60f5f155 100644 --- a/res/css/views/rooms/_EventTile.pcss +++ b/res/css/views/rooms/_EventTile.pcss @@ -1024,7 +1024,7 @@ $left-gutter: 64px; $notification-dot-size: 8px; /* notification dot next to the timestamp */ margin: calc(var(--topOffset) + $hrHeight) 0 var(--topOffset); /* include the height of horizontal line */ - padding: $padding $spacing-24 $padding $padding; + padding: $padding; border-radius: $borderRadius; display: flex; @@ -1039,7 +1039,7 @@ $left-gutter: 64px; &::after { $inset-block-start: auto; - $inset-inline-end: calc(32px - $padding); + $inset-inline-end: calc(-1 * var(--cpd-space-2x)); $inset-block-end: calc(-1 * var(--topOffset) - $hrHeight); /* exclude the height of horizontal line */ $inset-inline-start: calc(var(--leftOffset) + $padding); inset: $inset-block-start $inset-inline-end $inset-block-end $inset-inline-start; diff --git a/res/img/element-icons/thread-summary.svg b/res/img/element-icons/thread-summary.svg deleted file mode 100644 index 2c4f0ead0cf..00000000000 --- a/res/img/element-icons/thread-summary.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/components/structures/ThreadPanel.tsx b/src/components/structures/ThreadPanel.tsx index 7c7761368d5..547d185bf1e 100644 --- a/src/components/structures/ThreadPanel.tsx +++ b/src/components/structures/ThreadPanel.tsx @@ -36,7 +36,6 @@ import Measured from "../views/elements/Measured"; import PosthogTrackers from "../../PosthogTrackers"; import { ButtonEvent } from "../views/elements/AccessibleButton"; import Spinner from "../views/elements/Spinner"; -import Heading from "../views/typography/Heading"; import { clearRoomNotification } from "../../utils/notifications"; import EmptyState from "../views/right_panel/EmptyState"; @@ -138,9 +137,6 @@ export const ThreadPanelHeader: React.FC<{ return (
- - {_t("common|threads")} - diff --git a/test/components/structures/__snapshots__/ThreadPanel-test.tsx.snap b/test/components/structures/__snapshots__/ThreadPanel-test.tsx.snap index 0a219b84034..21a08b8a6c3 100644 --- a/test/components/structures/__snapshots__/ThreadPanel-test.tsx.snap +++ b/test/components/structures/__snapshots__/ThreadPanel-test.tsx.snap @@ -5,11 +5,6 @@ exports[`ThreadPanel Header expect that All filter for ThreadPanelHeader properl
-

- Threads -

+ + + + +
+
+ + u + u
+ 2
-
-
- @user:example.com -
-
-
+ +
+ + + + +
+ + u + u
+ 2
-
-
- @user:example.com -
-
-
+
+ + + + +
+
+ + u + u
+ 2
-
-
- @user:example.com -
-
-
-
+ + u +
- u + @user:example.com
- +
+ + + + +
+
- @user:example.com + + u + + + u +
+ 2
-
Date: Tue, 23 Jul 2024 17:16:24 +0530 Subject: [PATCH 08/69] Add release announcement for the new room header (#12802) --- src/components/views/rooms/RoomHeader.tsx | 136 ++++++++++-------- src/i18n/strings/en_EN.json | 2 + src/stores/ReleaseAnnouncementStore.ts | 2 +- .../__snapshots__/RoomHeader-test.tsx.snap | 2 + test/stores/ReleaseAnnouncementStore-test.tsx | 17 ++- 5 files changed, 91 insertions(+), 68 deletions(-) diff --git a/src/components/views/rooms/RoomHeader.tsx b/src/components/views/rooms/RoomHeader.tsx index 19b368cd180..c7b1673166c 100644 --- a/src/components/views/rooms/RoomHeader.tsx +++ b/src/components/views/rooms/RoomHeader.tsx @@ -57,6 +57,9 @@ import { isVideoRoom } from "../../../utils/video-rooms"; import { notificationLevelToIndicator } from "../../../utils/notifications"; import { CallGuestLinkButton } from "./RoomHeader/CallGuestLinkButton"; import { ButtonEvent } from "../elements/AccessibleButton"; +import { ReleaseAnnouncement } from "../../structures/ReleaseAnnouncement"; +import { useIsReleaseAnnouncementOpen } from "../../../hooks/useIsReleaseAnnouncementOpen"; +import { ReleaseAnnouncementStore } from "../../../stores/ReleaseAnnouncementStore"; export default function RoomHeader({ room, @@ -238,74 +241,87 @@ export default function RoomHeader({ voiceCallButton = undefined; } + const isReleaseAnnouncementOpen = useIsReleaseAnnouncementOpen("newRoomHeader"); + return ( <> - + {roomTopic && ( + + {roomTopicBody} + + )} + + + {additionalButtons?.map((props) => { const label = props.label(); diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 12ad79607d6..37e69b7a77c 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1950,6 +1950,8 @@ "one": "Asking to join", "other": "%(count)s people asking to join" }, + "release_announcement_description": "Enjoy a simpler, more accessible room header.", + "release_announcement_header": "New design!", "room_is_public": "This room is public", "show_widgets_button": "Show Widgets", "video_call_button_ec": "Video call (%(brand)s)", diff --git a/src/stores/ReleaseAnnouncementStore.ts b/src/stores/ReleaseAnnouncementStore.ts index 604c13fc496..1fd3388982f 100644 --- a/src/stores/ReleaseAnnouncementStore.ts +++ b/src/stores/ReleaseAnnouncementStore.ts @@ -27,7 +27,7 @@ import { Features } from "../settings/Settings"; /** * The features are shown in the array order. */ -const FEATURES = ["threadsActivityCentre"] as const; +const FEATURES = ["threadsActivityCentre", "newRoomHeader"] as const; /** * All the features that can be shown in the release announcements. */ diff --git a/test/components/views/rooms/__snapshots__/RoomHeader-test.tsx.snap b/test/components/views/rooms/__snapshots__/RoomHeader-test.tsx.snap index 58abdb0991f..dd76c363676 100644 --- a/test/components/views/rooms/__snapshots__/RoomHeader-test.tsx.snap +++ b/test/components/views/rooms/__snapshots__/RoomHeader-test.tsx.snap @@ -7,6 +7,8 @@ exports[`RoomHeader does not show the face pile for DMs 1`] = ` style="--mx-flex-display: flex; --mx-flex-direction: row; --mx-flex-align: center; --mx-flex-justify: start; --mx-flex-gap: var(--cpd-space-3x);" >
@@ -36,10 +46,17 @@ exports[`FilePanel renders empty state 1`] = ` class="mx_Flex mx_EmptyState" style="--mx-flex-display: flex; --mx-flex-direction: column; --mx-flex-align: center; --mx-flex-justify: center; --mx-flex-gap: var(--cpd-space-4x);" > -
+ xmlns="http://www.w3.org/2000/svg" + > + +

diff --git a/test/components/views/elements/__snapshots__/AppTile-test.tsx.snap b/test/components/views/elements/__snapshots__/AppTile-test.tsx.snap index 2eab478930f..05094a2ca14 100644 --- a/test/components/views/elements/__snapshots__/AppTile-test.tsx.snap +++ b/test/components/views/elements/__snapshots__/AppTile-test.tsx.snap @@ -40,7 +40,17 @@ exports[`AppTile destroys non-persisted right panel widget on room change 1`] = class="_indicator-icon_133tf_26" style="--cpd-icon-button-size: 100%;" > -

+ + +
diff --git a/test/components/views/right_panel/__snapshots__/RoomSummaryCard-test.tsx.snap b/test/components/views/right_panel/__snapshots__/RoomSummaryCard-test.tsx.snap index 392e1da9491..7c1b43e7c09 100644 --- a/test/components/views/right_panel/__snapshots__/RoomSummaryCard-test.tsx.snap +++ b/test/components/views/right_panel/__snapshots__/RoomSummaryCard-test.tsx.snap @@ -118,12 +118,19 @@ exports[` has button to edit topic when expanded 1`] = ` data-kind="primary" role="menuitemcheckbox" > -