Adjust secret storage to work before sync

This adjusts to changed JS SDK APIs that allow secret storage to optionally ask
the server for any account data needed at login.

Fixes https://github.com/vector-im/riot-web/issues/11901
pull/21833/head
J. Ryan Stinnett 2020-01-17 17:59:08 +00:00
parent e88f062f01
commit 4a82e86859
2 changed files with 4 additions and 4 deletions

View File

@ -107,7 +107,7 @@ export async function accessSecretStorage(func = async () => { }) {
cachingAllowed = true; cachingAllowed = true;
try { try {
if (!cli.hasSecretStorageKey()) { if (!await cli.hasSecretStorageKey()) {
// This dialog calls bootstrap itself after guiding the user through // This dialog calls bootstrap itself after guiding the user through
// passphrase creation. // passphrase creation.
const { finished } = Modal.createTrackedDialogAsync('Create Secret Storage dialog', '', const { finished } = Modal.createTrackedDialogAsync('Create Secret Storage dialog', '',

View File

@ -60,14 +60,14 @@ export default class CrossSigningPanel extends React.PureComponent {
this.setState(this._getUpdatedStatus()); this.setState(this._getUpdatedStatus());
}; };
_getUpdatedStatus() { async _getUpdatedStatus() {
// XXX: Add public accessors if we keep this around in production // XXX: Add public accessors if we keep this around in production
const cli = MatrixClientPeg.get(); const cli = MatrixClientPeg.get();
const crossSigning = cli._crypto._crossSigningInfo; const crossSigning = cli._crypto._crossSigningInfo;
const secretStorage = cli._crypto._secretStorage; const secretStorage = cli._crypto._secretStorage;
const crossSigningPublicKeysOnDevice = crossSigning.getId(); const crossSigningPublicKeysOnDevice = crossSigning.getId();
const crossSigningPrivateKeysInStorage = crossSigning.isStoredInSecretStorage(secretStorage); const crossSigningPrivateKeysInStorage = await crossSigning.isStoredInSecretStorage(secretStorage);
const secretStorageKeyInAccount = secretStorage.hasKey(); const secretStorageKeyInAccount = await secretStorage.hasKey();
return { return {
crossSigningPublicKeysOnDevice, crossSigningPublicKeysOnDevice,