diff --git a/src/components/views/settings/KeyBackupPanel.js b/src/components/views/settings/KeyBackupPanel.js index 3976196b57..cc1b3fd017 100644 --- a/src/components/views/settings/KeyBackupPanel.js +++ b/src/components/views/settings/KeyBackupPanel.js @@ -42,7 +42,7 @@ export default class KeyBackupPanel extends React.PureComponent { } componentWillMount() { - this._loadBackupStatus(); + this._checkKeyBackupStatus(); MatrixClientPeg.get().on('crypto.keyBackupStatus', this._onKeyBackupStatus); MatrixClientPeg.get().on( @@ -70,9 +70,32 @@ export default class KeyBackupPanel extends React.PureComponent { } _onKeyBackupStatus() { + // This just loads the current backup status rather than forcing + // a re-check otherwise we risk causing infinite loops this._loadBackupStatus(); } + async _checkKeyBackupStatus() { + try { + const {backupInfo, trustInfo} = await MatrixClientPeg.get().checkKeyBackup(); + this.setState({ + backupInfo, + backupSigStatus: trustInfo, + error: null, + loading: false, + }); + } catch (e) { + console.log("Unable to fetch check backup status", e); + if (this._unmounted) return; + this.setState({ + error: e, + backupInfo: null, + backupSigStatus: null, + loading: false, + }); + } + } + async _loadBackupStatus() { this.setState({loading: true}); try { @@ -80,6 +103,7 @@ export default class KeyBackupPanel extends React.PureComponent { const backupSigStatus = await MatrixClientPeg.get().isKeyBackupTrusted(backupInfo); if (this._unmounted) return; this.setState({ + error: null, backupInfo, backupSigStatus, loading: false, @@ -89,9 +113,10 @@ export default class KeyBackupPanel extends React.PureComponent { if (this._unmounted) return; this.setState({ error: e, + backupInfo: null, + backupSigStatus: null, loading: false, }); - return; } }