From 48cfd08ea65b7895ecb4987edc3075f5ec088dd0 Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Tue, 11 Dec 2018 12:42:52 +0100 Subject: [PATCH] move logout dialog to own component so we can reuse it --- src/components/structures/UserSettings.js | 28 +-------- src/components/views/dialogs/LogoutDialog.js | 61 ++++++++++++++++++++ 2 files changed, 63 insertions(+), 26 deletions(-) create mode 100644 src/components/views/dialogs/LogoutDialog.js diff --git a/src/components/structures/UserSettings.js b/src/components/structures/UserSettings.js index 07d726e3aa..3a3d6e1e91 100644 --- a/src/components/structures/UserSettings.js +++ b/src/components/structures/UserSettings.js @@ -382,32 +382,8 @@ module.exports = React.createClass({ }, onLogoutClicked: function(ev) { - const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog"); - Modal.createTrackedDialog('Logout E2E Export', '', QuestionDialog, { - title: _t("Sign out"), - description: -
- { _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.") } -
, - button: _t("Sign out"), - extraButtons: [ - , - ], - onFinished: (confirmed) => { - if (confirmed) { - dis.dispatch({action: 'logout'}); - if (this.props.onFinished) { - this.props.onFinished(); - } - } - }, - }); + const LogoutDialog = sdk.getComponent("dialogs.LogoutDialog"); + Modal.createTrackedDialog('Logout E2E Export', '', LogoutDialog); }, onPasswordChangeError: function(err) { diff --git a/src/components/views/dialogs/LogoutDialog.js b/src/components/views/dialogs/LogoutDialog.js new file mode 100644 index 0000000000..0c72279f3a --- /dev/null +++ b/src/components/views/dialogs/LogoutDialog.js @@ -0,0 +1,61 @@ +/* +Copyright 2018 New Vector Ltd + +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 QuestionDialog from './QuestionDialog'; +import Modal from '../../../Modal'; +import dis from '../../../dispatcher'; +import { _t } from '../../../languageHandler'; +import MatrixClientPeg from '../../../MatrixClientPeg'; + +export default (props) => { + const description = _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."); + + const onExportE2eKeysClicked = () => { + Modal.createTrackedDialogAsync('Export E2E Keys', '', + import('../../../async-components/views/dialogs/ExportE2eKeysDialog'), + { + matrixClient: MatrixClientPeg.get(), + }, + ); + }; + + const onFinished = (confirmed) => { + if (confirmed) { + dis.dispatch({action: 'logout'}); + if (props.onFinished) { + props.onFinished(); + } + } + }; + + return ({description}} + button={_t("Sign out")} + extraButtons={[ + (), + ]} + onFinished={onFinished} + />); +};