From 574b820d1194eef7c7291b82a93f67c7b4f3452a Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Wed, 17 May 2017 16:40:48 +0100 Subject: [PATCH] Factor out DeviceVerifyDialog --- .../views/dialogs/DeviceVerifyDialog.js | 74 +++++++++++++++++++ .../views/elements/DeviceVerifyButtons.js | 40 +--------- 2 files changed, 78 insertions(+), 36 deletions(-) create mode 100644 src/components/views/dialogs/DeviceVerifyDialog.js diff --git a/src/components/views/dialogs/DeviceVerifyDialog.js b/src/components/views/dialogs/DeviceVerifyDialog.js new file mode 100644 index 0000000000..8446334afb --- /dev/null +++ b/src/components/views/dialogs/DeviceVerifyDialog.js @@ -0,0 +1,74 @@ +/* +Copyright 2016 OpenMarket Ltd +Copyright 2017 Vector Creations 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 MatrixClientPeg from '../../../MatrixClientPeg'; +import sdk from '../../../index'; + +export default function DeviceVerifyDialog(props) { + const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog"); + + const body = ( +
+

+ To verify that this device can be trusted, please contact its + owner using some other means (e.g. in person or a phone call) + and ask them whether the key they see in their User Settings + for this device matches the key below: +

+
+
    +
  • { props.device.getDisplayName() }
  • +
  • { props.device.deviceId}
  • +
  • { props.device.getFingerprint() }
  • +
+
+

+ If it matches, press the verify button below. + If it doesnt, then someone else is intercepting this device + and you probably want to press the blacklist button instead. +

+

+ In future this verification process will be more sophisticated. +

+
+ ); + + function onFinished(confirm) { + if (confirm) { + MatrixClientPeg.get().setDeviceVerified( + props.userId, props.device.deviceId, true, + ); + } + props.onFinished(confirm); + } + + return ( + + ); +} + +DeviceVerifyDialog.propTypes = { + userId: React.PropTypes.string.isRequired, + device: React.PropTypes.object.isRequired, + onFinished: React.PropTypes.func.isRequired, +}; diff --git a/src/components/views/elements/DeviceVerifyButtons.js b/src/components/views/elements/DeviceVerifyButtons.js index fdd34e6ad2..28a36c429e 100644 --- a/src/components/views/elements/DeviceVerifyButtons.js +++ b/src/components/views/elements/DeviceVerifyButtons.js @@ -50,42 +50,10 @@ export default React.createClass({ }, onVerifyClick: function() { - var QuestionDialog = sdk.getComponent("dialogs.QuestionDialog"); - Modal.createDialog(QuestionDialog, { - title: "Verify device", - description: ( -
-

- To verify that this device can be trusted, please contact its - owner using some other means (e.g. in person or a phone call) - and ask them whether the key they see in their User Settings - for this device matches the key below: -

-
-
    -
  • { this.state.device.getDisplayName() }
  • -
  • { this.state.device.deviceId}
  • -
  • { this.state.device.getFingerprint() }
  • -
-
-

- If it matches, press the verify button below. - If it doesnt, then someone else is intercepting this device - and you probably want to press the blacklist button instead. -

-

- In future this verification process will be more sophisticated. -

-
- ), - button: "I verify that the keys match", - onFinished: confirm=>{ - if (confirm) { - MatrixClientPeg.get().setDeviceVerified( - this.props.userId, this.state.device.deviceId, true - ); - } - }, + const DeviceVerifyDialog = sdk.getComponent('views.dialogs.DeviceVerifyDialog'); + Modal.createDialog(DeviceVerifyDialog, { + userId: this.props.userId, + device: this.state.device, }); },