mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-16 06:28:27 +02:00
#4746 - Updated ScreenTemplate to include viewState in the viewModel.
This commit is contained in:
committed by
Stefan Ceriu
parent
4c60dc9a8e
commit
199709978a
@@ -129,6 +129,8 @@ final class TemplateScreenViewController: UIViewController {
|
||||
|
||||
private func render(viewState: TemplateScreenViewState) {
|
||||
switch viewState {
|
||||
case .idle:
|
||||
break
|
||||
case .loading:
|
||||
self.renderLoading()
|
||||
case .loaded(let displayName):
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
@@ -32,4 +32,6 @@ protocol TemplateScreenViewModelType {
|
||||
var coordinatorDelegate: TemplateScreenViewModelCoordinatorDelegate? { get set }
|
||||
|
||||
func process(viewAction: TemplateScreenViewAction)
|
||||
|
||||
var viewState: TemplateScreenViewState { get }
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ import Foundation
|
||||
|
||||
/// TemplateScreenViewController view state
|
||||
enum TemplateScreenViewState {
|
||||
case idle
|
||||
case loading
|
||||
case loaded(_ displayName: String)
|
||||
case error(Error)
|
||||
|
||||
Reference in New Issue
Block a user