Update screen template.

This commit is contained in:
SBiOSoftWhare
2020-05-07 10:50:31 +02:00
parent 2f882b904d
commit d5f319b477
9 changed files with 64 additions and 59 deletions
@@ -24,9 +24,10 @@ final class TemplateScreenViewModel: TemplateScreenViewModelType {
private let session: MXSession
// MARK: Public
private var currentOperation: MXHTTPOperation?
private var userDisplayName: String?
var message: String?
// MARK: Public
weak var viewDelegate: TemplateScreenViewModelViewDelegate?
weak var coordinatorDelegate: TemplateScreenViewModelCoordinatorDelegate?
@@ -35,46 +36,45 @@ final class TemplateScreenViewModel: TemplateScreenViewModelType {
init(session: MXSession) {
self.session = session
self.message = nil
}
deinit {
self.cancelOperations()
}
// MARK: - Public
func process(viewAction: TemplateScreenViewAction) {
switch viewAction {
case .sayHello:
self.setupHelloMessage()
case .loadData:
self.loadData()
case .complete:
if let message = self.message {
self.coordinatorDelegate?.templateScreenViewModel(self, didCompleteWithMessage: message)
}
self.coordinatorDelegate?.templateScreenViewModel(self, didCompleteWithUserDisplayName: self.userDisplayName)
case .cancel:
self.cancelOperations()
self.coordinatorDelegate?.templateScreenViewModelDidCancel(self)
}
}
// MARK: - Private
private func setupHelloMessage() {
private func loadData() {
self.update(viewState: .loading)
// Check first that the user homeserver is federated with the Riot-bot homeserver
self.session.matrixRestClient.displayName(forUser: self.session.myUser.userId) { [weak self] (response) in
self.currentOperation = self.session.matrixRestClient.displayName(forUser: self.session.myUser.userId) { [weak self] (response) in
guard let sself = self else {
guard let self = self else {
return
}
switch response {
case .success:
sself.message = "Hello \(response.value ?? "you")"
sself.update(viewState: .loaded)
case .success(let userDisplayName):
self.update(viewState: .loaded(userDisplayName))
self.userDisplayName = userDisplayName
case .failure(let error):
sself.update(viewState: .error(error))
self.update(viewState: .error(error))
}
}
}
@@ -82,4 +82,8 @@ final class TemplateScreenViewModel: TemplateScreenViewModelType {
private func update(viewState: TemplateScreenViewState) {
self.viewDelegate?.templateScreenViewModel(self, didUpdateViewState: viewState)
}
private func cancelOperations() {
self.currentOperation?.cancel()
}
}