From 28d28b55d1608c5749f3f9d981412cf64f8e0265 Mon Sep 17 00:00:00 2001
From: Matthew Hodgson
Date: Fri, 3 Feb 2017 01:49:22 +0000
Subject: [PATCH] correctly reflect verify/blacklist state in UI
---
.../views/elements/DeviceVerifyButtons.js | 40 ++++++++++++++-----
1 file changed, 31 insertions(+), 9 deletions(-)
diff --git a/src/components/views/elements/DeviceVerifyButtons.js b/src/components/views/elements/DeviceVerifyButtons.js
index aeb93e866c..7e209232b6 100644
--- a/src/components/views/elements/DeviceVerifyButtons.js
+++ b/src/components/views/elements/DeviceVerifyButtons.js
@@ -27,6 +27,28 @@ export default React.createClass({
device: React.PropTypes.object.isRequired,
},
+ getInitialState: function() {
+ return {
+ device: this.props.device
+ };
+ },
+
+ componentWillMount: function() {
+ const cli = MatrixClientPeg.get();
+ cli.on("deviceVerificationChanged", this.onDeviceVerificationChanged);
+ },
+
+ componentWillUnmount: function() {
+ const cli = MatrixClientPeg.get();
+ cli.removeListener("deviceVerificationChanged", this.onDeviceVerificationChanged);
+ },
+
+ onDeviceVerificationChanged: function(userId, deviceId) {
+ if (userId === this.props.userId && deviceId === this.props.device.deviceId) {
+ this.setState({ device: MatrixClientPeg.get().getStoredDevice(userId, deviceId) });
+ }
+ },
+
onVerifyClick: function() {
var QuestionDialog = sdk.getComponent("dialogs.QuestionDialog");
Modal.createDialog(QuestionDialog, {
@@ -41,9 +63,9 @@ export default React.createClass({
- - { this.props.device.getDisplayName() }
- -
{ this.props.device.deviceId}
- -
{ this.props.device.getFingerprint() }
+ - { this.state.device.getDisplayName() }
+ -
{ this.state.device.deviceId}
+ -
{ this.state.device.getFingerprint() }
@@ -60,7 +82,7 @@ export default React.createClass({
onFinished: confirm=>{
if (confirm) {
MatrixClientPeg.get().setDeviceVerified(
- this.props.userId, this.props.device.deviceId, true
+ this.props.userId, this.state.device.deviceId, true
);
}
},
@@ -69,26 +91,26 @@ export default React.createClass({
onUnverifyClick: function() {
MatrixClientPeg.get().setDeviceVerified(
- this.props.userId, this.props.device.deviceId, false
+ this.props.userId, this.state.device.deviceId, false
);
},
onBlacklistClick: function() {
MatrixClientPeg.get().setDeviceBlocked(
- this.props.userId, this.props.device.deviceId, true
+ this.props.userId, this.state.device.deviceId, true
);
},
onUnblacklistClick: function() {
MatrixClientPeg.get().setDeviceBlocked(
- this.props.userId, this.props.device.deviceId, false
+ this.props.userId, this.state.device.deviceId, false
);
},
render: function() {
var blacklistButton = null, verifyButton = null;
- if (this.props.device.isBlocked()) {
+ if (this.state.device.isBlocked()) {
blacklistButton = (