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.
-