From db95f26ffaf1371cea0a4b4cc7433b98b144ee39 Mon Sep 17 00:00:00 2001 From: Hubert Chathi Date: Fri, 12 Jul 2024 17:10:16 -0400 Subject: [PATCH] remove "Manually verify all remote sessions" setting (#12706) * remove "Manually verify all remote sessions" setting And remove all of the advanced encryption settings section, since that was the only setting in there. * yarn i18n * also remove now-unused OrderedMultiController and PushToMatrixClientController --- .../views/settings/E2eAdvancedPanel.tsx | 42 ------------- .../tabs/user/SecurityUserSettingsTab.tsx | 5 +- src/i18n/strings/en_EN.json | 2 - src/settings/Settings.tsx | 15 ----- .../controllers/OrderedMultiController.ts | 59 ------------------- .../PushToMatrixClientController.ts | 37 ------------ .../SecurityUserSettingsTab-test.tsx.snap | 49 --------------- 7 files changed, 1 insertion(+), 208 deletions(-) delete mode 100644 src/components/views/settings/E2eAdvancedPanel.tsx delete mode 100644 src/settings/controllers/OrderedMultiController.ts delete mode 100644 src/settings/controllers/PushToMatrixClientController.ts diff --git a/src/components/views/settings/E2eAdvancedPanel.tsx b/src/components/views/settings/E2eAdvancedPanel.tsx deleted file mode 100644 index f63cbefb22..0000000000 --- a/src/components/views/settings/E2eAdvancedPanel.tsx +++ /dev/null @@ -1,42 +0,0 @@ -/* -Copyright 2020 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 { _t } from "../../../languageHandler"; -import { SettingLevel } from "../../../settings/SettingLevel"; -import SettingsStore from "../../../settings/SettingsStore"; -import SettingsFlag from "../elements/SettingsFlag"; -import SettingsSubsection, { SettingsSubsectionText } from "./shared/SettingsSubsection"; - -const SETTING_MANUALLY_VERIFY_ALL_SESSIONS = "e2ee.manuallyVerifyAllSessions"; - -const E2eAdvancedPanel: React.FC = () => { - return ( - - - - {_t("settings|security|encryption_individual_verification_mode")} - - - ); -}; - -export default E2eAdvancedPanel; - -export function isE2eAdvancedPanelPossible(): boolean { - return SettingsStore.canSetValue(SETTING_MANUALLY_VERIFY_ALL_SESSIONS, null, SettingLevel.DEVICE); -} diff --git a/src/components/views/settings/tabs/user/SecurityUserSettingsTab.tsx b/src/components/views/settings/tabs/user/SecurityUserSettingsTab.tsx index 3b0dfb2dfc..64c16bcc90 100644 --- a/src/components/views/settings/tabs/user/SecurityUserSettingsTab.tsx +++ b/src/components/views/settings/tabs/user/SecurityUserSettingsTab.tsx @@ -28,7 +28,6 @@ import { SettingLevel } from "../../../../../settings/SettingLevel"; import SecureBackupPanel from "../../SecureBackupPanel"; import SettingsStore from "../../../../../settings/SettingsStore"; import { UIFeature } from "../../../../../settings/UIFeature"; -import E2eAdvancedPanel, { isE2eAdvancedPanelPossible } from "../../E2eAdvancedPanel"; import { ActionPayload } from "../../../../../dispatcher/payloads"; import CryptographyPanel from "../../CryptographyPanel"; import SettingsFlag from "../../../elements/SettingsFlag"; @@ -361,14 +360,12 @@ export default class SecurityUserSettingsTab extends React.Component : null; // only show the section if there's something to show - if (ignoreUsersPanel || invitesPanel || e2ePanel) { + if (ignoreUsersPanel || invitesPanel) { advancedSection = ( {ignoreUsersPanel} {invitesPanel} - {e2ePanel} ); } diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index b019346156..60f59fb6e9 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -2728,7 +2728,6 @@ "dialog_title": "Settings: Security & Privacy", "e2ee_default_disabled_warning": "Your server admin has disabled end-to-end encryption by default in private rooms & Direct Messages.", "enable_message_search": "Enable message search in encrypted rooms", - "encryption_individual_verification_mode": "Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices.", "encryption_section": "Encryption", "error_loading_key_backup_status": "Unable to load key backup status", "export_megolm_keys": "Export E2E room keys", @@ -2747,7 +2746,6 @@ "key_backup_inactive": "This session is not backing up your keys, but you do have an existing backup you can restore from and add to going forward.", "key_backup_inactive_warning": "Your keys are not being backed up from this session.", "key_backup_latest_version": "Latest backup version on server:", - "manually_verify_all_sessions": "Manually verify all remote sessions", "message_search_disable_warning": "If disabled, messages from encrypted rooms won't appear in search results.", "message_search_disabled": "Securely cache encrypted messages locally for them to appear in search results.", "message_search_enabled": { diff --git a/src/settings/Settings.tsx b/src/settings/Settings.tsx index 130eb70bd7..360cd7ab69 100644 --- a/src/settings/Settings.tsx +++ b/src/settings/Settings.tsx @@ -15,7 +15,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -import { MatrixClient } from "matrix-js-sdk/src/matrix"; import React, { ReactNode } from "react"; import { _t, _td, TranslationKey } from "../languageHandler"; @@ -24,7 +23,6 @@ import { NotificationsEnabledController, } from "./controllers/NotificationControllers"; import ThemeController from "./controllers/ThemeController"; -import PushToMatrixClientController from "./controllers/PushToMatrixClientController"; import ReloadOnChangeController from "./controllers/ReloadOnChangeController"; import FontSizeController from "./controllers/FontSizeController"; import SystemFontController from "./controllers/SystemFontController"; @@ -33,7 +31,6 @@ import SettingController from "./controllers/SettingController"; import { IS_MAC } from "../Keyboard"; import UIFeatureController from "./controllers/UIFeatureController"; import { UIFeature } from "./UIFeature"; -import { OrderedMultiController } from "./controllers/OrderedMultiController"; import { Layout } from "./enums/Layout"; import ReducedMotionController from "./controllers/ReducedMotionController"; import IncompatibleController from "./controllers/IncompatibleController"; @@ -1008,18 +1005,6 @@ export const SETTINGS: { [setting: string]: ISetting } = { default: true, controller: new UIFeatureController(UIFeature.Voip), }, - "e2ee.manuallyVerifyAllSessions": { - supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS, - displayName: _td("settings|security|manually_verify_all_sessions"), - default: false, - controller: new OrderedMultiController([ - // Apply the feature controller first to ensure that the setting doesn't - // show up and can't be toggled. PushToMatrixClientController doesn't - // do any overrides anyways. - new UIFeatureController(UIFeature.AdvancedEncryption), - new PushToMatrixClientController(MatrixClient.prototype.setCryptoTrustCrossSignedDevices, true), - ]), - }, "ircDisplayNameWidth": { // We specifically want to have room-device > device so that users may set a device default // with a per-room override. diff --git a/src/settings/controllers/OrderedMultiController.ts b/src/settings/controllers/OrderedMultiController.ts deleted file mode 100644 index fa8535ffd6..0000000000 --- a/src/settings/controllers/OrderedMultiController.ts +++ /dev/null @@ -1,59 +0,0 @@ -/* -Copyright 2020 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 SettingController from "./SettingController"; -import { SettingLevel } from "../SettingLevel"; - -/** - * Allows for multiple controllers to affect a setting. The first controller - * provided to this class which overrides the setting value will affect - * the value - other controllers are not called. Change notification handlers - * are proxied through to all controllers. - * - * Similarly, the first controller which indicates that a setting is disabled - * will be used - other controllers will not be considered. - */ -export class OrderedMultiController extends SettingController { - public constructor(public readonly controllers: SettingController[]) { - super(); - } - - public getValueOverride( - level: SettingLevel, - roomId: string, - calculatedValue: any, - calculatedAtLevel: SettingLevel | null, - ): any { - for (const controller of this.controllers) { - const override = controller.getValueOverride(level, roomId, calculatedValue, calculatedAtLevel); - if (override !== undefined && override !== null) return override; - } - return null; // no override - } - - public onChange(level: SettingLevel, roomId: string, newValue: any): void { - for (const controller of this.controllers) { - controller.onChange(level, roomId, newValue); - } - } - - public get settingDisabled(): boolean { - for (const controller of this.controllers) { - if (controller.settingDisabled) return true; - } - return false; - } -} diff --git a/src/settings/controllers/PushToMatrixClientController.ts b/src/settings/controllers/PushToMatrixClientController.ts deleted file mode 100644 index f6985c25f5..0000000000 --- a/src/settings/controllers/PushToMatrixClientController.ts +++ /dev/null @@ -1,37 +0,0 @@ -/* -Copyright 2020 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 { MatrixClientPeg } from "../../MatrixClientPeg"; -import { SettingLevel } from "../SettingLevel"; -import SettingController from "./SettingController"; - -/** - * When the value changes, call a setter function on the matrix client with the new value - */ -export default class PushToMatrixClientController extends SettingController { - public constructor( - private setter: Function, - private inverse: boolean, - ) { - super(); - } - - public onChange(level: SettingLevel, roomId: string, newValue: any): void { - // XXX does this work? This surely isn't necessarily the effective value, - // but it's what NotificationsEnabledController does... - this.setter.call(MatrixClientPeg.get(), this.inverse ? !newValue : newValue); - } -} diff --git a/test/components/views/settings/tabs/user/__snapshots__/SecurityUserSettingsTab-test.tsx.snap b/test/components/views/settings/tabs/user/__snapshots__/SecurityUserSettingsTab-test.tsx.snap index 19b7089de0..4ccca2a02c 100644 --- a/test/components/views/settings/tabs/user/__snapshots__/SecurityUserSettingsTab-test.tsx.snap +++ b/test/components/views/settings/tabs/user/__snapshots__/SecurityUserSettingsTab-test.tsx.snap @@ -404,55 +404,6 @@ exports[` renders security section 1`] = ` -
-
-

- Encryption -

-
-
-
- -
-
-
-
-
- Individually verify each session used by a user to mark it as trusted, not trusting cross-signed devices. -
-
-