Merge pull request #2599 from matrix-org/dbkr/unlabs_keybackup_sas

Remove key backup & sas from labs
This commit is contained in:
David Baker 2019-02-08 17:41:54 +00:00 committed by GitHub
commit 09bf8099e0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 55 additions and 103 deletions

View file

@ -1635,7 +1635,6 @@ module.exports = React.createClass({
); );
const showRoomRecoveryReminder = ( const showRoomRecoveryReminder = (
SettingsStore.isFeatureEnabled("feature_keybackup") &&
SettingsStore.getValue("showRoomRecoveryReminder") && SettingsStore.getValue("showRoomRecoveryReminder") &&
MatrixClientPeg.get().isRoomEncrypted(this.state.room.roomId) && MatrixClientPeg.get().isRoomEncrypted(this.state.room.roomId) &&
!MatrixClientPeg.get().getKeyBackupEnabled() !MatrixClientPeg.get().getKeyBackupEnabled()

View file

@ -22,7 +22,6 @@ import MatrixClientPeg from '../../../MatrixClientPeg';
import sdk from '../../../index'; import sdk from '../../../index';
import * as FormattingUtils from '../../../utils/FormattingUtils'; import * as FormattingUtils from '../../../utils/FormattingUtils';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
import SettingsStore from '../../../settings/SettingsStore';
import {verificationMethods} from 'matrix-js-sdk/lib/crypto'; import {verificationMethods} from 'matrix-js-sdk/lib/crypto';
const MODE_LEGACY = 'legacy'; const MODE_LEGACY = 'legacy';
@ -48,7 +47,7 @@ export default class DeviceVerifyDialog extends React.Component {
this._showSasEvent = null; this._showSasEvent = null;
this.state = { this.state = {
phase: PHASE_START, phase: PHASE_START,
mode: SettingsStore.isFeatureEnabled("feature_sas") ? MODE_SAS : MODE_LEGACY, mode: MODE_SAS,
sasVerified: false, sasVerified: false,
}; };
} }

View file

@ -20,7 +20,6 @@ import sdk from '../../../index';
import dis from '../../../dispatcher'; import dis from '../../../dispatcher';
import { _t } from '../../../languageHandler'; import { _t } from '../../../languageHandler';
import MatrixClientPeg from '../../../MatrixClientPeg'; import MatrixClientPeg from '../../../MatrixClientPeg';
import SettingsStore from "../../../settings/SettingsStore";
export default class LogoutDialog extends React.Component { export default class LogoutDialog extends React.Component {
constructor() { constructor() {
@ -79,86 +78,59 @@ export default class LogoutDialog extends React.Component {
} }
render() { render() {
let description; const description = <div>
if (SettingsStore.isFeatureEnabled("feature_keybackup")) { <p>{_t(
description = <div> "When you log out, you'll lose your secure message history. To prevent " +
<p>{_t( "this, set up a recovery method.",
"When you log out, you'll lose your secure message history. To prevent " + )}</p>
"this, set up a recovery method.", <p>{_t(
)}</p> "Alternatively, advanced users can also manually export encryption keys in " +
<p>{_t( "<a>Settings</a> before logging out.", {},
"Alternatively, advanced users can also manually export encryption keys in " + {
"<a>Settings</a> before logging out.", {}, a: sub => <a href='#/settings' onClick={this._onSettingsLinkClick}>{sub}</a>,
{ },
a: sub => <a href='#/settings' onClick={this._onSettingsLinkClick}>{sub}</a>, )}</p>
}, </div>;
)}</p>
</div>;
} else {
description = <div>{_t(
"For security, logging out will delete any end-to-end " +
"encryption keys from this browser. If you want to be able " +
"to decrypt your conversation history from future Riot sessions, " +
"please export your room keys for safe-keeping.",
)}</div>;
}
if (SettingsStore.isFeatureEnabled("feature_keybackup")) { if (!MatrixClientPeg.get().getKeyBackupEnabled()) {
if (!MatrixClientPeg.get().getKeyBackupEnabled()) { const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog');
const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog'); const DialogButtons = sdk.getComponent('views.elements.DialogButtons');
const DialogButtons = sdk.getComponent('views.elements.DialogButtons'); // Not quite a standard question dialog as the primary button cancels
// Not quite a standard question dialog as the primary button cancels // the action and does something else instead, whilst non-default button
// the action and does something else instead, whilst non-default button // confirms the action.
// confirms the action. return (<BaseDialog
return (<BaseDialog title={_t("Warning!")}
title={_t("Warning!")} contentId='mx_Dialog_content'
contentId='mx_Dialog_content' hasCancel={false}
onFinsihed={this._onFinished}
>
<div className="mx_Dialog_content" id='mx_Dialog_content'>
{ description }
</div>
<DialogButtons primaryButton={_t('Set a Recovery Method')}
hasCancel={false} hasCancel={false}
onFinsihed={this._onFinished} onPrimaryButtonClick={this._onSetRecoveryMethodClick}
focus={true}
> >
<div className="mx_Dialog_content" id='mx_Dialog_content'> <button onClick={this._onLogoutConfirm}>
{ description } {_t("I understand, log out without")}
</div> </button>
<DialogButtons primaryButton={_t('Set a Recovery Method')} </DialogButtons>
hasCancel={false} </BaseDialog>);
onPrimaryButtonClick={this._onSetRecoveryMethodClick}
focus={true}
>
<button onClick={this._onLogoutConfirm}>
{_t("I understand, log out without")}
</button>
</DialogButtons>
</BaseDialog>);
} else {
const QuestionDialog = sdk.getComponent('views.dialogs.QuestionDialog');
return (<QuestionDialog
hasCancelButton={true}
title={_t("Sign out")}
// TODO: This is made up by me and would need to also mention verifying
// once you can restorew a backup by verifying a device
description={_t(
"When signing in again, you can access encrypted chat history by " +
"restoring your key backup. You'll need your recovery passphrase " +
"or, if you didn't set a recovery passphrase, your recovery key " +
"(that you downloaded).",
)}
button={_t("Sign out")}
onFinished={this._onFinished}
/>);
}
} else { } else {
const QuestionDialog = sdk.getComponent('views.dialogs.QuestionDialog'); const QuestionDialog = sdk.getComponent('views.dialogs.QuestionDialog');
return (<QuestionDialog return (<QuestionDialog
hasCancelButton={true} hasCancelButton={true}
title={_t("Sign out")} title={_t("Sign out")}
description={description} // TODO: This is made up by me and would need to also mention verifying
// once you can restore a backup by verifying a device
description={_t(
"When signing in again, you can access encrypted chat history by " +
"restoring your key backup. You'll need your recovery passphrase " +
"or, if you didn't set a recovery passphrase, your recovery key " +
"(that you downloaded).",
)}
button={_t("Sign out")} button={_t("Sign out")}
extraButtons={[
(<button key="export" className="mx_Dialog_primary"
onClick={this._onExportE2eKeysClicked}>
{ _t("Export E2E room keys") }
</button>),
]}
onFinished={this._onFinished} onFinished={this._onFinished}
/>); />);
} }

View file

@ -17,7 +17,7 @@ limitations under the License.
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import {_t} from "../../../../languageHandler"; import {_t} from "../../../../languageHandler";
import SettingsStore, {SettingLevel} from "../../../../settings/SettingsStore"; import {SettingLevel} from "../../../../settings/SettingsStore";
import MatrixClientPeg from "../../../../MatrixClientPeg"; import MatrixClientPeg from "../../../../MatrixClientPeg";
import * as FormattingUtils from "../../../../utils/FormattingUtils"; import * as FormattingUtils from "../../../../utils/FormattingUtils";
import AccessibleButton from "../../elements/AccessibleButton"; import AccessibleButton from "../../elements/AccessibleButton";
@ -196,18 +196,15 @@ export default class SecuritySettingsTab extends React.Component {
const DevicesPanel = sdk.getComponent('views.settings.DevicesPanel'); const DevicesPanel = sdk.getComponent('views.settings.DevicesPanel');
const SettingsFlag = sdk.getComponent('views.elements.SettingsFlag'); const SettingsFlag = sdk.getComponent('views.elements.SettingsFlag');
let keyBackup = null; const KeyBackupPanel = sdk.getComponent('views.settings.KeyBackupPanel');
if (SettingsStore.isFeatureEnabled("feature_keybackup")) { const keyBackup = (
const KeyBackupPanel = sdk.getComponent('views.settings.KeyBackupPanel'); <div className='mx_SettingsTab_section'>
keyBackup = ( <span className="mx_SettingsTab_subheading">{_t("Key backup")}</span>
<div className='mx_SettingsTab_section'> <div className='mx_SettingsTab_subsectionText'>
<span className="mx_SettingsTab_subheading">{_t("Key backup")}</span> <KeyBackupPanel />
<div className='mx_SettingsTab_subsectionText'>
<KeyBackupPanel />
</div>
</div> </div>
); </div>
} );
return ( return (
<div className="mx_SettingsTab mx_SecuritySettingsTab"> <div className="mx_SettingsTab mx_SecuritySettingsTab">

View file

@ -271,9 +271,7 @@
"Message Pinning": "Message Pinning", "Message Pinning": "Message Pinning",
"Custom user status messages": "Custom user status messages", "Custom user status messages": "Custom user status messages",
"Group & filter rooms by custom tags (refresh to apply changes)": "Group & filter rooms by custom tags (refresh to apply changes)", "Group & filter rooms by custom tags (refresh to apply changes)": "Group & filter rooms by custom tags (refresh to apply changes)",
"Backup of encryption keys to server": "Backup of encryption keys to server",
"Render simple counters in room header": "Render simple counters in room header", "Render simple counters in room header": "Render simple counters in room header",
"Two-way device verification using short text": "Two-way device verification using short text",
"Enable Emoji suggestions while typing": "Enable Emoji suggestions while typing", "Enable Emoji suggestions while typing": "Enable Emoji suggestions while typing",
"Use compact timeline layout": "Use compact timeline layout", "Use compact timeline layout": "Use compact timeline layout",
"Show a placeholder for removed messages": "Show a placeholder for removed messages", "Show a placeholder for removed messages": "Show a placeholder for removed messages",
@ -372,7 +370,7 @@
"Robot": "Robot", "Robot": "Robot",
"Hat": "Hat", "Hat": "Hat",
"Glasses": "Glasses", "Glasses": "Glasses",
"Wrench": "Wrench", "Spanner": "Spanner",
"Santa": "Santa", "Santa": "Santa",
"Thumbs up": "Thumbs up", "Thumbs up": "Thumbs up",
"Umbrella": "Umbrella", "Umbrella": "Umbrella",
@ -1105,7 +1103,6 @@
"Updating Riot": "Updating Riot", "Updating Riot": "Updating Riot",
"When you log out, you'll lose your secure message history. To prevent this, set up a recovery method.": "When you log out, you'll lose your secure message history. To prevent this, set up a recovery method.", "When you log out, you'll lose your secure message history. To prevent this, set up a recovery method.": "When you log out, you'll lose your secure message history. To prevent this, set up a recovery method.",
"Alternatively, advanced users can also manually export encryption keys in <a>Settings</a> before logging out.": "Alternatively, advanced users can also manually export encryption keys in <a>Settings</a> before logging out.", "Alternatively, advanced users can also manually export encryption keys in <a>Settings</a> before logging out.": "Alternatively, advanced users can also manually export encryption keys in <a>Settings</a> before logging out.",
"For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.",
"Set a Recovery Method": "Set a Recovery Method", "Set a Recovery Method": "Set a Recovery Method",
"I understand, log out without": "I understand, log out without", "I understand, log out without": "I understand, log out without",
"When signing in again, you can access encrypted chat history by restoring your key backup. You'll need your recovery passphrase or, if you didn't set a recovery passphrase, your recovery key (that you downloaded).": "When signing in again, you can access encrypted chat history by restoring your key backup. You'll need your recovery passphrase or, if you didn't set a recovery passphrase, your recovery key (that you downloaded).", "When signing in again, you can access encrypted chat history by restoring your key backup. You'll need your recovery passphrase or, if you didn't set a recovery passphrase, your recovery key (that you downloaded).": "When signing in again, you can access encrypted chat history by restoring your key backup. You'll need your recovery passphrase or, if you didn't set a recovery passphrase, your recovery key (that you downloaded).",

View file

@ -105,24 +105,12 @@ export const SETTINGS = {
supportedLevels: LEVELS_FEATURE, supportedLevels: LEVELS_FEATURE,
default: false, default: false,
}, },
"feature_keybackup": {
isFeature: true,
displayName: _td("Backup of encryption keys to server"),
supportedLevels: LEVELS_FEATURE,
default: false,
},
"feature_state_counters": { "feature_state_counters": {
isFeature: true, isFeature: true,
displayName: _td("Render simple counters in room header"), displayName: _td("Render simple counters in room header"),
supportedLevels: LEVELS_FEATURE, supportedLevels: LEVELS_FEATURE,
default: false, default: false,
}, },
"feature_sas": {
isFeature: true,
displayName: _td("Two-way device verification using short text"),
supportedLevels: LEVELS_FEATURE,
default: false,
},
"MessageComposerInput.suggestEmoji": { "MessageComposerInput.suggestEmoji": {
supportedLevels: LEVELS_ACCOUNT_SETTINGS, supportedLevels: LEVELS_ACCOUNT_SETTINGS,
displayName: _td('Enable Emoji suggestions while typing'), displayName: _td('Enable Emoji suggestions while typing'),