Tweak the flow for changing a recovery key. (#3452)

* Rename Chat Backup setting to Encryption.

* Update Key Storage strings on SecureBackupScreen.

* Update strings/design on SecureBackupRecoveryKeyScreen.
This commit is contained in:
Doug
2024-10-28 12:28:13 +00:00
committed by GitHub
parent 4e812f72b9
commit 7c28d9709f
43 changed files with 175 additions and 116 deletions
@@ -25,7 +25,8 @@ class SecureBackupScreenViewModel: SecureBackupScreenViewModelType, SecureBackup
self.secureBackupController = secureBackupController
self.userIndicatorController = userIndicatorController
super.init(initialViewState: .init(chatBackupDetailsURL: chatBackupDetailsURL))
super.init(initialViewState: .init(chatBackupDetailsURL: chatBackupDetailsURL,
bindings: SecureBackupScreenViewStateBindings(keyStorageEnabled: secureBackupController.keyBackupState.value.toggleState)))
secureBackupController.recoveryState
.receive(on: DispatchQueue.main)
@@ -34,7 +35,11 @@ class SecureBackupScreenViewModel: SecureBackupScreenViewModelType, SecureBackup
secureBackupController.keyBackupState
.receive(on: DispatchQueue.main)
.weakAssign(to: \.state.keyBackupState, on: self)
.sink { [weak self] state in
guard let self else { return }
self.state.keyBackupState = state
self.state.bindings.keyStorageEnabled = state.toggleState
}
.store(in: &cancellables)
}
@@ -44,11 +49,14 @@ class SecureBackupScreenViewModel: SecureBackupScreenViewModelType, SecureBackup
switch viewAction {
case .recoveryKey:
actionsSubject.send(.recoveryKey)
case .keyBackup:
switch secureBackupController.keyBackupState.value {
case .unknown:
case .keyStorageToggled(let enable):
let keyBackupState = secureBackupController.keyBackupState.value
switch (keyBackupState, enable) {
case (.unknown, true):
state.bindings.keyStorageEnabled = keyBackupState.toggleState // Reset the toggle in case enabling fails
enableBackup()
case .enabled:
case (.enabled, false):
state.bindings.keyStorageEnabled = keyBackupState.toggleState // Reset the toggle in case the user cancels
actionsSubject.send(.keyBackup)
default:
break
@@ -74,3 +82,12 @@ class SecureBackupScreenViewModel: SecureBackupScreenViewModelType, SecureBackup
}
}
}
private extension SecureBackupKeyBackupState {
var toggleState: Bool {
switch self {
case .unknown, .enabling: false
case .enabled, .disabling: true
}
}
}