From 5a67bd4b463b160821bd430bee63f9635446451d Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Mon, 20 Jan 2020 20:35:21 +0000 Subject: [PATCH] Repair cross-signing panel with async status This repairs the cross-signing panel after recent changes that made the panel's status an async function. Regressed by https://github.com/matrix-org/matrix-react-sdk/pull/3864 Fixes https://github.com/vector-im/riot-web/issues/11952 --- .../views/settings/CrossSigningPanel.js | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/components/views/settings/CrossSigningPanel.js b/src/components/views/settings/CrossSigningPanel.js index 49046cd051..f7d3d62b4f 100644 --- a/src/components/views/settings/CrossSigningPanel.js +++ b/src/components/views/settings/CrossSigningPanel.js @@ -1,5 +1,5 @@ /* -Copyright 2019 The Matrix.org Foundation C.I.C. +Copyright 2019, 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. @@ -29,7 +29,9 @@ export default class CrossSigningPanel extends React.PureComponent { this.state = { error: null, - ...this._getUpdatedStatus(), + crossSigningPublicKeysOnDevice: false, + crossSigningPrivateKeysInStorage: false, + secretStorageKeyInAccount: false, }; } @@ -38,6 +40,7 @@ export default class CrossSigningPanel extends React.PureComponent { cli.on("accountData", this.onAccountData); cli.on("userTrustStatusChanged", this.onStatusChanged); cli.on("crossSigning.keysChanged", this.onStatusChanged); + this._getUpdatedStatus(); } componentWillUnmount() { @@ -52,12 +55,12 @@ export default class CrossSigningPanel extends React.PureComponent { onAccountData = (event) => { const type = event.getType(); if (type.startsWith("m.cross_signing") || type.startsWith("m.secret_storage")) { - this.setState(this._getUpdatedStatus()); + this._getUpdatedStatus(); } }; onStatusChanged = () => { - this.setState(this._getUpdatedStatus()); + this._getUpdatedStatus(); }; async _getUpdatedStatus() { @@ -69,11 +72,11 @@ export default class CrossSigningPanel extends React.PureComponent { const crossSigningPrivateKeysInStorage = await crossSigning.isStoredInSecretStorage(secretStorage); const secretStorageKeyInAccount = await secretStorage.hasKey(); - return { + this.setState({ crossSigningPublicKeysOnDevice, crossSigningPrivateKeysInStorage, secretStorageKeyInAccount, - }; + }); } /** @@ -93,7 +96,7 @@ export default class CrossSigningPanel extends React.PureComponent { console.error("Error bootstrapping secret storage", e); } if (this._unmounted) return; - this.setState(this._getUpdatedStatus()); + this._getUpdatedStatus(); } render() {