Merge pull request #4225 from matrix-org/jryans/comp-sec-restore-slow
Restore key backup in background after complete security
This commit is contained in:
commit
fac4561ac8
1 changed files with 24 additions and 3 deletions
|
@ -63,9 +63,30 @@ export default class CompleteSecurity extends React.Component {
|
||||||
const backupInfo = await cli.getKeyBackupVersion();
|
const backupInfo = await cli.getKeyBackupVersion();
|
||||||
this.setState({backupInfo});
|
this.setState({backupInfo});
|
||||||
|
|
||||||
await accessSecretStorage(async () => {
|
// The control flow is fairly twisted here...
|
||||||
await cli.checkOwnCrossSigningTrust();
|
// For the purposes of completing security, we only wait on getting
|
||||||
if (backupInfo) await cli.restoreKeyBackupWithSecretStorage(backupInfo);
|
// as far as the trust check and then show a green shield.
|
||||||
|
// We also begin the key backup restore as well, which we're
|
||||||
|
// awaiting inside `accessSecretStorage` only so that it keeps your
|
||||||
|
// passphase cached for that work. This dialog itself will only wait
|
||||||
|
// on the first trust check, and the key backup restore will happen
|
||||||
|
// in the background.
|
||||||
|
await new Promise((resolve, reject) => {
|
||||||
|
try {
|
||||||
|
accessSecretStorage(async () => {
|
||||||
|
await cli.checkOwnCrossSigningTrust();
|
||||||
|
resolve();
|
||||||
|
if (backupInfo) {
|
||||||
|
// A complete restore can take many minutes for large
|
||||||
|
// accounts / slow servers, so we allow the dialog
|
||||||
|
// to advance before this.
|
||||||
|
await cli.restoreKeyBackupWithSecretStorage(backupInfo);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
reject(e);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if (cli.getCrossSigningId()) {
|
if (cli.getCrossSigningId()) {
|
||||||
|
|
Loading…
Reference in a new issue