From f84e2815d065a5524b7b6df645c29a0abc67b836 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Thu, 4 Dec 2025 15:38:18 +0000 Subject: [PATCH] Make code scanning happier (#31243) * Make code scanning happier Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Add tests Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> * Discard changes to src/components/views/auth/CaptchaForm.tsx --------- Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- .../tabs/room/RolesRoomSettingsTab.tsx | 35 ++++------------- .../tabs/room/RolesRoomSettingsTab-test.tsx | 38 +++++++++++++++++++ 2 files changed, 46 insertions(+), 27 deletions(-) diff --git a/src/components/views/settings/tabs/room/RolesRoomSettingsTab.tsx b/src/components/views/settings/tabs/room/RolesRoomSettingsTab.tsx index a7e0e3755b..4c720a2372 100644 --- a/src/components/views/settings/tabs/room/RolesRoomSettingsTab.tsx +++ b/src/components/views/settings/tabs/room/RolesRoomSettingsTab.tsx @@ -7,16 +7,9 @@ Please see LICENSE files in the repository root for full details. */ import React, { type JSX } from "react"; -import { - EventType, - type RoomMember, - type RoomState, - RoomStateEvent, - type Room, - type IContent, -} from "matrix-js-sdk/src/matrix"; +import { EventType, type RoomMember, type RoomState, RoomStateEvent, type Room } from "matrix-js-sdk/src/matrix"; import { logger } from "matrix-js-sdk/src/logger"; -import { throttle, get } from "lodash"; +import { throttle, get, set } from "lodash"; import { KnownMembership, type RoomPowerLevelsEventContent } from "matrix-js-sdk/src/types"; import { _t, _td, type TranslationKey } from "../../../../../languageHandler"; @@ -137,6 +130,8 @@ interface RolesRoomSettingsTabState { isReady: boolean; } +const EVENTS_LEVEL_PREFIX = "event_levels_"; + export default class RolesRoomSettingsTab extends React.Component { public static contextType = MatrixClientContext; declare public context: React.ContextType; @@ -199,24 +194,10 @@ export default class RolesRoomSettingsTab extends React.Component diff --git a/test/unit-tests/components/views/settings/tabs/room/RolesRoomSettingsTab-test.tsx b/test/unit-tests/components/views/settings/tabs/room/RolesRoomSettingsTab-test.tsx index 7681ec0c7b..44ec287862 100644 --- a/test/unit-tests/components/views/settings/tabs/room/RolesRoomSettingsTab-test.tsx +++ b/test/unit-tests/components/views/settings/tabs/room/RolesRoomSettingsTab-test.tsx @@ -247,4 +247,42 @@ describe("RolesRoomSettingsTab", () => { deferred.reject("Error"); await waitFor(() => expect(selector).toHaveValue("100")); }); + + it("should allow changing events power levels", async () => { + mocked(cli.sendStateEvent).mockResolvedValue({ event_id: "$eventId" }); + mocked(cli.getRoom).mockReturnValue(room); + mocked(room.currentState.mayClientSendStateEvent).mockReturnValue(true); + const { container } = await renderTab(); + + const selector = container.querySelector(`[placeholder="Change topic"]`)!; + fireEvent.change(selector, { target: { value: "0" } }); + + expect(cli.sendStateEvent).toHaveBeenCalledWith( + room.roomId, + "m.room.power_levels", + expect.objectContaining({ + events: expect.objectContaining({ + "m.room.topic": 0, + }), + }), + ); + }); + + it("should allow changing top level power levels", async () => { + mocked(cli.sendStateEvent).mockResolvedValue({ event_id: "$eventId" }); + mocked(cli.getRoom).mockReturnValue(room); + mocked(room.currentState.mayClientSendStateEvent).mockReturnValue(true); + const { container } = await renderTab(); + + const selector = container.querySelector(`[placeholder="Remove users"]`)!; + fireEvent.change(selector, { target: { value: "0" } }); + + expect(cli.sendStateEvent).toHaveBeenCalledWith( + room.roomId, + "m.room.power_levels", + expect.objectContaining({ + kick: 0, + }), + ); + }); });