key backup settings: Make it display loading wheel and error

This commit is contained in:
manuroe
2019-01-31 10:19:27 +01:00
parent 4eeeff53f8
commit f15c0f952f
5 changed files with 52 additions and 4 deletions
@@ -27,6 +27,9 @@ import UIKit
func settingsKeyBackup(_ settingsKeyBackupTableViewSection: SettingsKeyBackupTableViewSection, showVerifyDevice deviceId:String)
func settingsKeyBackup(_ settingsKeyBackupTableViewSection: SettingsKeyBackupTableViewSection, showKeyBackupRecover keyBackupVersion:MXKeyBackupVersion)
func settingsKeyBackup(_ settingsKeyBackupTableViewSection: SettingsKeyBackupTableViewSection, showKeyBackupDeleteConfirm keyBackupVersion:MXKeyBackupVersion)
func settingsKeyBackup(_ settingsKeyBackupTableViewSection: SettingsKeyBackupTableViewSection, showActivityIndicator show:Bool)
func settingsKeyBackup(_ settingsKeyBackupTableViewSection: SettingsKeyBackupTableViewSection, showError error:Error)
}
@objc class SettingsKeyBackupTableViewSection: NSObject {
@@ -303,6 +306,17 @@ extension SettingsKeyBackupTableViewSection: SettingsKeyBackupViewModelViewDeleg
func settingsKeyBackupViewModel(_ viewModel: SettingsKeyBackupViewModelType, didUpdateViewState viewSate: SettingsKeyBackupViewState) {
self.render(viewState: viewSate)
}
func settingsKeyBackupViewModel(_ viewModel: SettingsKeyBackupViewModelType, didUpdateNetworkRequestViewState networkRequestViewSate: SettingsKeyBackupNetworkRequestViewState) {
switch networkRequestViewSate {
case .loading:
self.delegate?.settingsKeyBackup(self, showActivityIndicator: true)
case .loaded:
self.delegate?.settingsKeyBackup(self, showActivityIndicator: false)
case .error(let error):
self.delegate?.settingsKeyBackup(self, showError: error)
break
}
}
func settingsKeyBackupViewModelShowKeyBackupSetup(_ viewModel: SettingsKeyBackupViewModelType) {
self.delegate?.settingsKeyBackupTableViewSectionShowKeyBackupSetup(self)
@@ -135,11 +135,19 @@ class SettingsKeyBackupViewModel: SettingsKeyBackupViewModelType {
return
}
self.keyBackup.deleteVersion(keyBackupVersionVersion, success: {
self.viewDelegate?.settingsKeyBackupViewModel(self, didUpdateNetworkRequestViewState: .loading)
}) { (Error) in
}
self.keyBackup.deleteVersion(keyBackupVersionVersion, success: { [weak self] () in
guard let sself = self else {
return
}
sself.viewDelegate?.settingsKeyBackupViewModel(sself, didUpdateNetworkRequestViewState: .loaded)
}, failure: { [weak self] error in
guard let sself = self else {
return
}
sself.viewDelegate?.settingsKeyBackupViewModel(sself, didUpdateNetworkRequestViewState: .error(error))
})
}
}
@@ -18,6 +18,7 @@ import UIKit
protocol SettingsKeyBackupViewModelViewDelegate: class {
func settingsKeyBackupViewModel(_ viewModel: SettingsKeyBackupViewModelType, didUpdateViewState viewSate: SettingsKeyBackupViewState)
func settingsKeyBackupViewModel(_ viewModel: SettingsKeyBackupViewModelType, didUpdateNetworkRequestViewState networkRequestViewSate: SettingsKeyBackupNetworkRequestViewState)
func settingsKeyBackupViewModelShowKeyBackupSetup(_ viewModel: SettingsKeyBackupViewModelType)
func settingsKeyBackup(_ viewModel: SettingsKeyBackupViewModelType, showVerifyDevice deviceId:String)
@@ -31,3 +31,11 @@ enum SettingsKeyBackupViewState {
case backupAndRunning(MXKeyBackupVersion, MXKeyBackupVersionTrust, Progress)
case backupButNotTrusted(MXKeyBackupVersion, MXKeyBackupVersionTrust)
}
/// State representing a network request made by the module
/// Only SettingsKeyBackupViewAction.delete generates such states
enum SettingsKeyBackupNetworkRequestViewState {
case loading
case loaded
case error(Error)
}