Security settings: Manage the case where the is a key backup but no secure backup

This commit is contained in:
manuroe
2021-06-16 12:25:01 +02:00
parent 6719aee247
commit 90355a14f2
3 changed files with 25 additions and 8 deletions

View File

@@ -141,6 +141,14 @@ private enum BackupRows {
.description(text: VectorL10n.securitySettingsSecureBackupDescription)
]
case .noSecureBackupButKeyBackup(let keyBackupVersion, let keyBackupVersionTrust):
backupRows = [
.info(text: VectorL10n.securitySettingsSecureBackupInfoValid),
.restoreFromKeyBackupAction(keyBackupVersion: keyBackupVersion, title: VectorL10n.securitySettingsSecureBackupRestore),
.deleteKeyBackupAction(keyBackupVersion: keyBackupVersion),
.description(text: VectorL10n.securitySettingsSecureBackupDescription)
]
case .noKeyBackup:
let noBackup = VectorL10n.settingsKeyBackupInfoNone
let signoutWarning = VectorL10n.settingsKeyBackupInfoSignoutWarning

View File

@@ -85,12 +85,6 @@ final class SettingsSecureBackupViewModel: SettingsSecureBackupViewModelType {
private func computeState(withBackupVersionTrust keyBackupVersionTrust: MXKeyBackupVersionTrust? = nil) {
// We want to have a secure backup before having a key backup
if recoveryService.hasRecovery() == false {
self.viewDelegate?.settingsSecureBackupViewModel(self, didUpdateViewState: .noSecureBackup)
return
}
var viewState: SettingsSecureBackupViewState?
switch self.keyBackup.state {
@@ -129,9 +123,23 @@ final class SettingsSecureBackupViewModel: SettingsSecureBackupViewModelType {
default:
break
}
// We want to have a secure backup before having a key backup
if recoveryService.hasRecovery() == false {
switch viewState {
case .checkingBackup:
break
case .keyBackup(let keyBackupVersion, let keyBackupVersionTrust),
.keyBackupAndRunning(let keyBackupVersion, let keyBackupVersionTrust, _),
.keyBackupNotTrusted(let keyBackupVersion, let keyBackupVersionTrust):
viewState = .noSecureBackupButKeyBackup(keyBackupVersion, keyBackupVersionTrust)
default:
viewState = .noSecureBackup
}
}
if let vviewState = viewState {
self.viewDelegate?.settingsSecureBackupViewModel(self, didUpdateViewState: vviewState)
if let viewState = viewState {
self.viewDelegate?.settingsSecureBackupViewModel(self, didUpdateViewState: viewState)
}
}

View File

@@ -27,6 +27,7 @@ import UIKit
enum SettingsSecureBackupViewState {
case checkingBackup
case noSecureBackup
case noSecureBackupButKeyBackup(MXKeyBackupVersion, MXKeyBackupVersionTrust)
case noKeyBackup
case keyBackup(MXKeyBackupVersion, MXKeyBackupVersionTrust)
case keyBackupAndRunning(MXKeyBackupVersion, MXKeyBackupVersionTrust, Progress)