From 98402e7eae5a59b6ea8d3fe85d12c69e400377f2 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 27 Feb 2019 11:45:00 +0000 Subject: [PATCH] Fix backup button in logout dialog We set the caption appropriately but forgot to actually do the right thing depending on whether there was a key backup already. Also fix the loadihng spinner which was never shown. Fixes https://github.com/vector-im/riot-web/issues/8369 --- src/components/views/dialogs/LogoutDialog.js | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/components/views/dialogs/LogoutDialog.js b/src/components/views/dialogs/LogoutDialog.js index 53b9f01da4f..617c455dfb0 100644 --- a/src/components/views/dialogs/LogoutDialog.js +++ b/src/components/views/dialogs/LogoutDialog.js @@ -34,13 +34,15 @@ export default class LogoutDialog extends React.Component { this._onSetRecoveryMethodClick = this._onSetRecoveryMethodClick.bind(this); this._onLogoutConfirm = this._onLogoutConfirm.bind(this); + const shouldLoadBackupStatus = !MatrixClientPeg.get().getKeyBackupEnabled(); + this.state = { - loading: false, + loading: shouldLoadBackupStatus, backupInfo: null, error: null, }; - if (!MatrixClientPeg.get().getKeyBackupEnabled()) { + if (shouldLoadBackupStatus) { this._loadBackupStatus(); } } @@ -84,9 +86,17 @@ export default class LogoutDialog extends React.Component { } _onSetRecoveryMethodClick() { - Modal.createTrackedDialogAsync('Key Backup', 'Key Backup', - import('../../../async-components/views/dialogs/keybackup/CreateKeyBackupDialog'), - ); + if (this.state.backupInfo) { + // A key backup exists for this account, but the creating device is not + // verified, so restore the backup which will give us the keys from it and + // allow us to trust it (ie. upload keys to it) + const RestoreKeyBackupDialog = sdk.getComponent('dialogs.keybackup.RestoreKeyBackupDialog'); + Modal.createTrackedDialog('Restore Backup', '', RestoreKeyBackupDialog, {}); + } else { + Modal.createTrackedDialogAsync("Key Backup", "Key Backup", + import("../../../async-components/views/dialogs/keybackup/CreateKeyBackupDialog"), + ); + } // close dialog this.props.onFinished();