#4746 - Updated ScreenTemplate to include viewState in the viewModel.

This commit is contained in:
Stefan Ceriu
2021-08-26 17:38:01 +03:00
committed by Stefan Ceriu
parent 3600d41611
commit c684a5c6f7
4 changed files with 15 additions and 8 deletions
@@ -32,6 +32,12 @@ final class TemplateScreenViewModel: TemplateScreenViewModelType {
weak var viewDelegate: TemplateScreenViewModelViewDelegate?
weak var coordinatorDelegate: TemplateScreenViewModelCoordinatorDelegate?
private(set) var viewState: TemplateScreenViewState = .idle {
didSet {
self.viewDelegate?.templateScreenViewModel(self, didUpdateViewState: viewState)
}
}
// MARK: - Setup
init(session: MXSession) {
@@ -60,7 +66,7 @@ final class TemplateScreenViewModel: TemplateScreenViewModelType {
private func loadData() {
self.update(viewState: .loading)
viewState = .loading
// Check first that the user homeserver is federated with the Riot-bot homeserver
self.currentOperation = self.session.matrixRestClient.displayName(forUser: self.session.myUser.userId) { [weak self] (response) in
@@ -71,18 +77,14 @@ final class TemplateScreenViewModel: TemplateScreenViewModelType {
switch response {
case .success(let userDisplayName):
self.update(viewState: .loaded(userDisplayName))
self.viewState = .loaded(userDisplayName)
self.userDisplayName = userDisplayName
case .failure(let error):
self.update(viewState: .error(error))
self.viewState = .error(error)
}
}
}
private func update(viewState: TemplateScreenViewState) {
self.viewDelegate?.templateScreenViewModel(self, didUpdateViewState: viewState)
}
private func cancelOperations() {
self.currentOperation?.cancel()
}