From e1970df70458419ce0649fa8f30b74a44ded34e8 Mon Sep 17 00:00:00 2001 From: Will Hunt Date: Fri, 21 Mar 2025 17:08:37 +0000 Subject: [PATCH] Add report room dialog button/dialog. (#29513) * Add report room dialog button/dialog. * Update copy * fixup tests / lint * Fix title in test. * update snapshot * Add unit tests for dialog * lint --- .../e2e/right-panel/right-panel.spec.ts | 14 +- .../with-leave-room-linux.png | Bin 27602 -> 28527 bytes res/css/_components.pcss | 1 + res/css/views/dialogs/_ReportRoomDialog.pcss | 16 + .../views/right_panel/_RoomSummaryCard.pcss | 4 +- .../views/dialogs/ReportRoomDialog.tsx | 95 +++++ .../views/right_panel/RoomSummaryCard.tsx | 31 +- src/i18n/strings/en_EN.json | 7 + .../views/dialogs/ReportRoomDialog-test.tsx | 66 ++++ .../ReportRoomDialog-test.tsx.snap | 100 +++++ .../RoomSummaryCard-test.tsx.snap | 345 ++++++++++++------ 11 files changed, 556 insertions(+), 123 deletions(-) create mode 100644 res/css/views/dialogs/_ReportRoomDialog.pcss create mode 100644 src/components/views/dialogs/ReportRoomDialog.tsx create mode 100644 test/unit-tests/components/views/dialogs/ReportRoomDialog-test.tsx create mode 100644 test/unit-tests/components/views/dialogs/__snapshots__/ReportRoomDialog-test.tsx.snap diff --git a/playwright/e2e/right-panel/right-panel.spec.ts b/playwright/e2e/right-panel/right-panel.spec.ts index cc03963801..44b051c987 100644 --- a/playwright/e2e/right-panel/right-panel.spec.ts +++ b/playwright/e2e/right-panel/right-panel.spec.ts @@ -1,5 +1,5 @@ /* -Copyright 2024 New Vector Ltd. +Copyright 2024, 2025 New Vector Ltd. Copyright 2022 The Matrix.org Foundation C.I.C. SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial @@ -10,6 +10,7 @@ import { type Locator, type Page } from "@playwright/test"; import { test, expect } from "../../element-web-test"; import { checkRoomSummaryCard, viewRoomSummaryByName } from "./utils"; +import { isDendrite } from "../../plugins/homeserver/dendrite"; const ROOM_NAME = "Test room"; const ROOM_NAME_LONG = @@ -133,6 +134,17 @@ test.describe("RightPanel", () => { await page.getByLabel("Room info").nth(1).click(); await checkRoomSummaryCard(page, ROOM_NAME); }); + test.describe("room reporting", () => { + test.skip(isDendrite, "Dendrite does not implement room reporting"); + test("should handle reporting a room", async ({ page, app }) => { + await viewRoomSummaryByName(page, app, ROOM_NAME); + await page.getByRole("menuitem", { name: "Report room" }).click(); + const dialog = await page.getByRole("dialog", { name: "Report Room" }); + await dialog.getByLabel("reason").fill("This room should be reported"); + await dialog.getByRole("button", { name: "Send report" }).click(); + await expect(page.getByText("Your report was sent.")).toBeVisible(); + }); + }); }); test.describe("in spaces", () => { diff --git a/playwright/snapshots/right-panel/right-panel.spec.ts/with-leave-room-linux.png b/playwright/snapshots/right-panel/right-panel.spec.ts/with-leave-room-linux.png index a2bc63aaf4194ebb9da29ccfa94e32cf33de9623..63a49dc751266cb362eaea707378a70d114f5d52 100644 GIT binary patch literal 28527 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 z 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%0Db+thfJT=gOie)akEK^2 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 F{{xXDTPpwn literal 27602 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�AYY-{zt)V=Uus-dxyxSNpfs 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 diff --git a/res/css/_components.pcss b/res/css/_components.pcss index bd927c9843..9df9dcb8cb 100644 --- a/res/css/_components.pcss +++ b/res/css/_components.pcss @@ -152,6 +152,7 @@ @import "./views/dialogs/_ModalWidgetDialog.pcss"; @import "./views/dialogs/_PollCreateDialog.pcss"; @import "./views/dialogs/_RegistrationEmailPromptDialog.pcss"; +@import "./views/dialogs/_ReportRoomDialog.pcss"; @import "./views/dialogs/_RoomSettingsDialog.pcss"; @import "./views/dialogs/_RoomSettingsDialogBridges.pcss"; @import "./views/dialogs/_RoomUpgradeDialog.pcss"; diff --git a/res/css/views/dialogs/_ReportRoomDialog.pcss b/res/css/views/dialogs/_ReportRoomDialog.pcss new file mode 100644 index 0000000000..7323ac65c9 --- /dev/null +++ b/res/css/views/dialogs/_ReportRoomDialog.pcss @@ -0,0 +1,16 @@ +/* +Copyright 2025 New Vector Ltd. + +SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial +Please see LICENSE files in the repository root for full details. +*/ + +.mx_ReportRoomDialog { + textarea { + font: var(--cpd-font-body-md-regular); + border: 1px solid var(--cpd-color-border-interactive-primary); + background: var(--cpd-color-bg-canvas-default); + border-radius: 0.5rem; + padding: var(--cpd-space-3x) var(--cpd-space-4x); + } +} diff --git a/res/css/views/right_panel/_RoomSummaryCard.pcss b/res/css/views/right_panel/_RoomSummaryCard.pcss index eb3b14579f..3c1c07677c 100644 --- a/res/css/views/right_panel/_RoomSummaryCard.pcss +++ b/res/css/views/right_panel/_RoomSummaryCard.pcss @@ -1,5 +1,5 @@ /* -Copyright 2024 New Vector Ltd. +Copyright 2024, 2025 New Vector Ltd. Copyright 2020 The Matrix.org Foundation C.I.C. SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial @@ -101,6 +101,6 @@ Please see LICENSE files in the repository root for full details. margin: $spacing-12 0 $spacing-4; } -.mx_RoomSummaryCard_leave { +.mx_RoomSummaryCard_bottomOptions { margin: 0 0 var(--cpd-space-8x); } diff --git a/src/components/views/dialogs/ReportRoomDialog.tsx b/src/components/views/dialogs/ReportRoomDialog.tsx new file mode 100644 index 0000000000..ff4e96ea97 --- /dev/null +++ b/src/components/views/dialogs/ReportRoomDialog.tsx @@ -0,0 +1,95 @@ +/* +Copyright 2025 New Vector Ltd. + +SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial +Please see LICENSE files in the repository root for full details. +*/ + +import React, { type ChangeEventHandler, useCallback, useState } from "react"; +import { Root, Field, Label, InlineSpinner, ErrorMessage } from "@vector-im/compound-web"; + +import { _t } from "../../../languageHandler"; +import SdkConfig from "../../../SdkConfig"; +import Markdown from "../../../Markdown"; +import BaseDialog from "./BaseDialog"; +import DialogButtons from "../elements/DialogButtons"; +import { MatrixClientPeg } from "../../../MatrixClientPeg"; + +interface IProps { + roomId: string; + onFinished(complete: boolean): void; +} + +/* + * A dialog for reporting a room. + */ + +export const ReportRoomDialog: React.FC = function ({ roomId, onFinished }) { + const [error, setErr] = useState(); + const [busy, setBusy] = useState(false); + const [sent, setSent] = useState(false); + const [reason, setReason] = useState(""); + const client = MatrixClientPeg.safeGet(); + + const onReasonChange = useCallback>((e) => setReason(e.target.value), []); + const onCancel = useCallback(() => onFinished(sent), [sent, onFinished]); + const onSubmit = useCallback(async () => { + setBusy(true); + try { + await client.reportRoom(roomId, reason); + setSent(true); + } catch (ex) { + if (ex instanceof Error) { + setErr(ex.message); + } else { + setErr("Unknown error"); + } + } finally { + setBusy(false); + } + }, [roomId, reason, client]); + + const adminMessageMD = SdkConfig.getObject("report_event")?.get("admin_message_md", "adminMessageMD"); + let adminMessage: JSX.Element | undefined; + if (adminMessageMD) { + const html = new Markdown(adminMessageMD).toHTML({ externalLinks: true }); + adminMessage =

; + } + + return ( + onFinished(sent)} + title={_t("report_room|title")} + contentId="mx_ReportEventDialog" + > + {sent &&

{_t("report_room|sent")}

} + {!sent && ( + +

{_t("report_room|description")}

+ {adminMessage} + + +