Skip to content

Commit

Permalink
Repair cross-signing panel with async status
Browse files Browse the repository at this point in the history
This repairs the cross-signing panel after recent changes that made the panel's
status an async function.

Regressed by #3864
Fixes element-hq/element-web#11952
  • Loading branch information
jryans committed Jan 20, 2020
1 parent 7193e7d commit 5a67bd4
Showing 1 changed file with 10 additions and 7 deletions.
17 changes: 10 additions & 7 deletions src/components/views/settings/CrossSigningPanel.js
Original file line number Diff line number Diff line change
@@ -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.
Expand Down Expand Up @@ -29,7 +29,9 @@ export default class CrossSigningPanel extends React.PureComponent {

this.state = {
error: null,
...this._getUpdatedStatus(),
crossSigningPublicKeysOnDevice: false,
crossSigningPrivateKeysInStorage: false,
secretStorageKeyInAccount: false,
};
}

Expand All @@ -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() {
Expand All @@ -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() {
Expand All @@ -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,
};
});
}

/**
Expand All @@ -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() {
Expand Down

0 comments on commit 5a67bd4

Please sign in to comment.