From dddcc8c637f79052f8fbec30885440d133c2283c Mon Sep 17 00:00:00 2001 From: "sebastien.heurtematte" Date: Tue, 25 Nov 2025 18:28:33 +0100 Subject: [PATCH 1/3] Add option to show ACL message or to hide them Signed-off-by: sebastien.heurtematte --- src/components/structures/RoomView.tsx | 6 ++++++ .../settings/tabs/user/PreferencesUserSettingsTab.tsx | 1 + src/contexts/RoomContext.ts | 1 + src/i18n/strings/en_EN.json | 1 + src/settings/Settings.tsx | 7 +++++++ src/shouldHideEvent.ts | 1 + test/test-utils/room.ts | 1 + .../unit-tests/components/structures/MessagePanel-test.tsx | 1 + .../components/views/rooms/SendMessageComposer-test.tsx | 1 + 9 files changed, 20 insertions(+) diff --git a/src/components/structures/RoomView.tsx b/src/components/structures/RoomView.tsx index cb3256dc65a..e32f9f6f932 100644 --- a/src/components/structures/RoomView.tsx +++ b/src/components/structures/RoomView.tsx @@ -252,6 +252,7 @@ export interface IRoomState { showJoinLeaves: boolean; showAvatarChanges: boolean; showDisplaynameChanges: boolean; + showServerAclChanges: boolean; matrixClientIsReady: boolean; showUrlPreview?: boolean; e2eStatus?: E2EStatus; @@ -461,6 +462,7 @@ export class RoomView extends React.Component { showJoinLeaves: true, showAvatarChanges: true, showDisplaynameChanges: true, + showServerAclChanges: true, matrixClientIsReady: context.client?.isInitialSyncComplete(), mainSplitContentType: MainSplitContentType.Timeline, timelineRenderingType: TimelineRenderingType.Room, @@ -616,6 +618,7 @@ export class RoomView extends React.Component { showJoinLeaves: SettingsStore.getValue("showJoinLeaves", roomId), showAvatarChanges: SettingsStore.getValue("showAvatarChanges", roomId), showDisplaynameChanges: SettingsStore.getValue("showDisplaynameChanges", roomId), + showServerAclChanges: SettingsStore.getValue("showServerAclChanges", roomId), wasContextSwitch: wasContextSwitch, mainSplitContentType: room ? this.getMainSplitContentType(room) : undefined, initialEventId: undefined, // default to clearing this, will get set later in the method if needed @@ -690,6 +693,9 @@ export class RoomView extends React.Component { SettingsStore.watchSetting("showDisplaynameChanges", roomId, (...[, , , value]) => this.setState({ showDisplaynameChanges: value as boolean }), ), + SettingsStore.watchSetting("showServerAclChanges", roomId, (...[, , , value]) => + this.setState({ showServerAclChanges: value as boolean }), + ), ]); if (!initial && this.state.shouldPeek && !newState.shouldPeek) { diff --git a/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.tsx b/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.tsx index d373aee60e5..24907e4d6e6 100644 --- a/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.tsx +++ b/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.tsx @@ -157,6 +157,7 @@ export default class PreferencesUserSettingsTab extends React.Component({ showJoinLeaves: true, showAvatarChanges: true, showDisplaynameChanges: true, + showServerAclChanges: true, matrixClientIsReady: false, showUrlPreview: false, timelineRenderingType: TimelineRenderingType.Room, diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index f1f4f4dc7ca..ed930ca626b 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -3068,6 +3068,7 @@ "show_chat_effects": "Show chat effects (animations when receiving e.g. confetti)", "show_displayname_changes": "Show display name changes", "show_join_leave": "Show join/leave messages (invites/removes/bans unaffected)", + "show_server_acl_changes": "Show server ACL changes", "show_message_previews": "Show message previews", "show_nsfw_content": "Show NSFW content", "show_read_receipts": "Show read receipts sent by other users", diff --git a/src/settings/Settings.tsx b/src/settings/Settings.tsx index 2b2a57c2c58..8df8359b429 100644 --- a/src/settings/Settings.tsx +++ b/src/settings/Settings.tsx @@ -252,6 +252,7 @@ export interface Settings { "showJoinLeaves": IBaseSetting; "showAvatarChanges": IBaseSetting; "showDisplaynameChanges": IBaseSetting; + "showServerAclChanges": IBaseSetting; "showReadReceipts": IBaseSetting; "showTwelveHourTimestamps": IBaseSetting; "alwaysShowTimestamps": IBaseSetting; @@ -810,6 +811,12 @@ export const SETTINGS: Settings = { default: true, invertedSettingName: "hideDisplaynameChanges", }, + "showServerAclChanges": { + supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM, + displayName: _td("settings|show_server_acl_changes"), + default: true, + invertedSettingName: "hideServerAclChanges", + }, "showReadReceipts": { supportedLevels: LEVELS_ROOM_SETTINGS, displayName: _td("settings|show_read_receipts"), diff --git a/src/shouldHideEvent.ts b/src/shouldHideEvent.ts index f8bc2fc5179..7cd0dfbbe55 100644 --- a/src/shouldHideEvent.ts +++ b/src/shouldHideEvent.ts @@ -56,6 +56,7 @@ export default function shouldHideEvent(ev: MatrixEvent, ctx?: IRoomState): bool ? (name: keyof IRoomState) => ctx[name] : (name: SettingKey) => SettingsStore.getValue(name, ev.getRoomId()); + if (ev.getType() === EventType.RoomServerAcl && !isEnabled("showServerAclChanges")) return true; // Hide redacted events // Deleted events with a thread are always shown regardless of user preference // to make sure that a thread can be accessible even if the root message is deleted diff --git a/test/test-utils/room.ts b/test/test-utils/room.ts index ecce6818b04..73c87b2faa4 100644 --- a/test/test-utils/room.ts +++ b/test/test-utils/room.ts @@ -75,6 +75,7 @@ export function getRoomContext(room: Room, override: Partial): showJoinLeaves: true, showAvatarChanges: true, showDisplaynameChanges: true, + showServerAclChanges: true, matrixClientIsReady: false, timelineRenderingType: TimelineRenderingType.Room, mainSplitContentType: MainSplitContentType.Timeline, diff --git a/test/unit-tests/components/structures/MessagePanel-test.tsx b/test/unit-tests/components/structures/MessagePanel-test.tsx index 71234bea3b0..2d358b09533 100644 --- a/test/unit-tests/components/structures/MessagePanel-test.tsx +++ b/test/unit-tests/components/structures/MessagePanel-test.tsx @@ -90,6 +90,7 @@ describe("MessagePanel", function () { showJoinLeaves: false, showAvatarChanges: false, showDisplaynameChanges: true, + showServerAclChanges: true, showHiddenEvents: false, } as unknown as RoomContextType; diff --git a/test/unit-tests/components/views/rooms/SendMessageComposer-test.tsx b/test/unit-tests/components/views/rooms/SendMessageComposer-test.tsx index fcc215a73fb..40fc7139e28 100644 --- a/test/unit-tests/components/views/rooms/SendMessageComposer-test.tsx +++ b/test/unit-tests/components/views/rooms/SendMessageComposer-test.tsx @@ -67,6 +67,7 @@ describe("", () => { showJoinLeaves: true, showAvatarChanges: true, showDisplaynameChanges: true, + showServerAclChanges: true, matrixClientIsReady: false, timelineRenderingType: TimelineRenderingType.Room, mainSplitContentType: MainSplitContentType.Timeline, From 214affd3304f1526c1d8f49d42d3b2cd066f7b26 Mon Sep 17 00:00:00 2001 From: "sebastien.heurtematte" Date: Tue, 25 Nov 2025 23:13:48 +0100 Subject: [PATCH 2/3] fix: remove hideServerAclChanges Signed-off-by: sebastien.heurtematte --- src/settings/Settings.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/settings/Settings.tsx b/src/settings/Settings.tsx index 8df8359b429..834b59eaf84 100644 --- a/src/settings/Settings.tsx +++ b/src/settings/Settings.tsx @@ -815,7 +815,6 @@ export const SETTINGS: Settings = { supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM, displayName: _td("settings|show_server_acl_changes"), default: true, - invertedSettingName: "hideServerAclChanges", }, "showReadReceipts": { supportedLevels: LEVELS_ROOM_SETTINGS, From 8f0ea6800ddabc7eb3bd5adde0bb3fa759f4fe60 Mon Sep 17 00:00:00 2001 From: "sebastien.heurtematte" Date: Wed, 26 Nov 2025 00:44:08 +0100 Subject: [PATCH 3/3] fix: jest snapshot Signed-off-by: sebastien.heurtematte --- .../PreferencesUserSettingsTab-test.tsx.snap | 57 ++++++++++++++----- 1 file changed, 42 insertions(+), 15 deletions(-) diff --git a/test/unit-tests/components/views/settings/tabs/user/__snapshots__/PreferencesUserSettingsTab-test.tsx.snap b/test/unit-tests/components/views/settings/tabs/user/__snapshots__/PreferencesUserSettingsTab-test.tsx.snap index 65b8049fc13..664363805fd 100644 --- a/test/unit-tests/components/views/settings/tabs/user/__snapshots__/PreferencesUserSettingsTab-test.tsx.snap +++ b/test/unit-tests/components/views/settings/tabs/user/__snapshots__/PreferencesUserSettingsTab-test.tsx.snap @@ -989,13 +989,13 @@ exports[`PreferencesUserSettingsTab should render 1`] = ` - Show chat effects (animations when receiving e.g. confetti) + Show server ACL changes
- Show profile picture changes + Show chat effects (animations when receiving e.g. confetti)
- Show avatars in user, room and event mentions + Show profile picture changes
- Enable big emoji in chat + Show avatars in user, room and event mentions
- Jump to the bottom of the timeline when you send a message + Enable big emoji in chat
+ + Jump to the bottom of the timeline when you send a message + + +
+
+
+
+
+