Key verification: Add new state for complete security flow.

This commit is contained in:
SBiOSoftWhare
2020-04-23 11:55:19 +02:00
parent dbbe0f39bf
commit 6e4d31d6de
9 changed files with 29 additions and 17 deletions
@@ -38,10 +38,10 @@ final class KeyVerificationSelfVerifyWaitCoordinator: KeyVerificationSelfVerifyW
// MARK: - Setup
init(session: MXSession) {
init(session: MXSession, isNewSignIn: Bool) {
self.session = session
let keyVerificationSelfVerifyWaitViewModel = KeyVerificationSelfVerifyWaitViewModel(session: self.session)
let keyVerificationSelfVerifyWaitViewModel = KeyVerificationSelfVerifyWaitViewModel(session: self.session, isNewSignIn: isNewSignIn)
let keyVerificationSelfVerifyWaitViewController = KeyVerificationSelfVerifyWaitViewController.instantiate(with: keyVerificationSelfVerifyWaitViewModel)
self.keyVerificationSelfVerifyWaitViewModel = keyVerificationSelfVerifyWaitViewModel
self.keyVerificationSelfVerifyWaitViewController = keyVerificationSelfVerifyWaitViewController
@@ -35,6 +35,8 @@ final class KeyVerificationSelfVerifyWaitViewController: UIViewController {
private var theme: Theme!
private var errorPresenter: MXKErrorPresentation!
private var activityPresenter: ActivityIndicatorPresenter!
private weak var cancelBarButtonItem: UIBarButtonItem?
// MARK: - Setup
@@ -97,6 +99,7 @@ final class KeyVerificationSelfVerifyWaitViewController: UIViewController {
}
self.navigationItem.rightBarButtonItem = cancelBarButtonItem
self.cancelBarButtonItem = cancelBarButtonItem
self.title = VectorL10n.deviceVerificationSelfVerifyWaitTitle
@@ -108,8 +111,8 @@ final class KeyVerificationSelfVerifyWaitViewController: UIViewController {
switch viewState {
case .loading:
self.renderLoading()
case .loaded:
self.renderLoaded()
case .loaded(let isNewSignIn):
self.renderLoaded(isNewSignIn: isNewSignIn)
case .error(let error):
self.render(error: error)
}
@@ -119,8 +122,10 @@ final class KeyVerificationSelfVerifyWaitViewController: UIViewController {
self.activityPresenter.presentActivityIndicator(on: self.view, animated: true)
}
private func renderLoaded() {
private func renderLoaded(isNewSignIn: Bool) {
self.activityPresenter.removeCurrentActivityIndicator(animated: true)
self.cancelBarButtonItem?.title = isNewSignIn ? VectorL10n.skip : VectorL10n.cancel
}
private func render(error: Error) {
@@ -27,8 +27,8 @@ final class KeyVerificationSelfVerifyWaitViewModel: KeyVerificationSelfVerifyWai
private let session: MXSession
private let keyVerificationService: KeyVerificationService
private let verificationManager: MXKeyVerificationManager
private let isNewSignIn: Bool
// private var verificationManager: MXKeyVerificationManager?
private var keyVerificationRequest: MXKeyVerificationRequest?
// MARK: Public
@@ -38,10 +38,11 @@ final class KeyVerificationSelfVerifyWaitViewModel: KeyVerificationSelfVerifyWai
// MARK: - Setup
init(session: MXSession) {
init(session: MXSession, isNewSignIn: Bool) {
self.session = session
self.verificationManager = session.crypto.keyVerificationManager
self.keyVerificationService = KeyVerificationService()
self.isNewSignIn = isNewSignIn
}
deinit {
@@ -62,6 +63,7 @@ final class KeyVerificationSelfVerifyWaitViewModel: KeyVerificationSelfVerifyWai
private func loadData() {
self.registerKeyVerificationManagerNewRequestNotification(for: self.verificationManager)
self.update(viewState: .loaded(self.isNewSignIn))
}
private func cancel() {
@@ -21,6 +21,6 @@ import Foundation
/// KeyVerificationSelfVerifyWaitViewController view state
enum KeyVerificationSelfVerifyWaitViewState {
case loading
case loaded
case loaded(_ isNewSignIn: Bool)
case error(Error)
}