Show progress when loading keys
							parent
							
								
									d8ab1f0ddc
								
							
						
					
					
						commit
						7ef3b446f4
					
				|  | @ -59,6 +59,7 @@ export default class RestoreKeyBackupDialog extends React.PureComponent { | |||
|             forceRecoveryKey: false, | ||||
|             passPhrase: '', | ||||
|             restoreType: null, | ||||
|             progress: { stage: "prefetch" }, | ||||
|         }; | ||||
|     } | ||||
| 
 | ||||
|  | @ -80,6 +81,12 @@ export default class RestoreKeyBackupDialog extends React.PureComponent { | |||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     _progressCallback = (data) => { | ||||
|         this.setState({ | ||||
|             progress: data, | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     _onResetRecoveryClick = () => { | ||||
|         this.props.onFinished(false); | ||||
|         Modal.createTrackedDialogAsync('Key Backup', 'Key Backup', | ||||
|  | @ -110,6 +117,7 @@ export default class RestoreKeyBackupDialog extends React.PureComponent { | |||
|             // is the right one and restoring it is currently the only way we can do this.
 | ||||
|             const recoverInfo = await MatrixClientPeg.get().restoreKeyBackupWithPassword( | ||||
|                 this.state.passPhrase, undefined, undefined, this.state.backupInfo, | ||||
|                 { progressCallback: this._progressCallback }, | ||||
|             ); | ||||
|             if (this.props.keyCallback) { | ||||
|                 const key = await MatrixClientPeg.get().keyBackupKeyFromPassword( | ||||
|  | @ -146,6 +154,7 @@ export default class RestoreKeyBackupDialog extends React.PureComponent { | |||
|         try { | ||||
|             const recoverInfo = await MatrixClientPeg.get().restoreKeyBackupWithRecoveryKey( | ||||
|                 this.state.recoveryKey, undefined, undefined, this.state.backupInfo, | ||||
|                 { progressCallback: this._progressCallback }, | ||||
|             ); | ||||
|             if (this.props.keyCallback) { | ||||
|                 const key = MatrixClientPeg.get().keyBackupKeyFromRecoveryKey(this.state.recoveryKey); | ||||
|  | @ -185,6 +194,7 @@ export default class RestoreKeyBackupDialog extends React.PureComponent { | |||
|             const recoverInfo = await accessSecretStorage(async () => { | ||||
|                 return MatrixClientPeg.get().restoreKeyBackupWithSecretStorage( | ||||
|                     this.state.backupInfo, | ||||
|                     { progressCallback: this._progressCallback }, | ||||
|                 ); | ||||
|             }); | ||||
|             this.setState({ | ||||
|  | @ -207,6 +217,7 @@ export default class RestoreKeyBackupDialog extends React.PureComponent { | |||
|                 undefined, /* targetRoomId */ | ||||
|                 undefined, /* targetSessionId */ | ||||
|                 backupInfo, | ||||
|                 { progressCallback: this._progressCallback }, | ||||
|             ); | ||||
|             this.setState({ | ||||
|                 recoverInfo, | ||||
|  | @ -273,7 +284,19 @@ export default class RestoreKeyBackupDialog extends React.PureComponent { | |||
|         let title; | ||||
|         if (this.state.loading) { | ||||
|             title = _t("Loading..."); | ||||
|             content = <Spinner />; | ||||
|             let details; | ||||
|             if (this.state.progress.stage === "fetch") { | ||||
|                 details = _t("Downloading from server..."); | ||||
|             } else if (this.state.progress.stage === "load_keys") { | ||||
|                 const { total, successes, failures } = this.state.progress; | ||||
|                 details = _t("Loaded %(completed)s of %(total)s", { total, completed: successes + failures }); | ||||
|             } else if (this.state.progress.stage === "prefetch") { | ||||
|                 details = _t("Requesting from server..."); | ||||
|             } | ||||
|             content = <div> | ||||
|                 <div>{details}</div> | ||||
|                 <Spinner /> | ||||
|             </div>; | ||||
|         } else if (this.state.loadError) { | ||||
|             title = _t("Error"); | ||||
|             content = _t("Unable to load backup status"); | ||||
|  |  | |||
|  | @ -1794,6 +1794,9 @@ | |||
|     "Not a valid recovery key": "Not a valid recovery key", | ||||
|     "Access your secure message history and your cross-signing identity for verifying other sessions by entering your recovery key.": "Access your secure message history and your cross-signing identity for verifying other sessions by entering your recovery key.", | ||||
|     "If you've forgotten your recovery key you can <button>set up new recovery options</button>.": "If you've forgotten your recovery key you can <button>set up new recovery options</button>.", | ||||
|     "Downloading from server": "Downloading from server", | ||||
|     "Loaded %(completed)s of %(total)s": "Loaded %(completed)s of %(total)s", | ||||
|     "Requesting from server...": "Requesting from server...", | ||||
|     "Unable to load backup status": "Unable to load backup status", | ||||
|     "Recovery key mismatch": "Recovery key mismatch", | ||||
|     "Backup could not be decrypted with this recovery key: please verify that you entered the correct recovery key.": "Backup could not be decrypted with this recovery key: please verify that you entered the correct recovery key.", | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Zoe
						Zoe