User verification: Add possibility to present on session detail from UserVerificationCoordinator.

This commit is contained in:
SBiOSoftWhare 2020-01-31 17:46:03 +01:00
parent c2d1442f94
commit beb185dc02
3 changed files with 48 additions and 5 deletions

View file

@ -147,6 +147,8 @@ final class UserVerificationSessionStatusViewController: UIViewController {
let badgeImage: UIImage let badgeImage: UIImage
let title: String let title: String
self.untrustedSessionContainerView.isHidden = viewData.isDeviceTrusted
if viewData.isDeviceTrusted { if viewData.isDeviceTrusted {
badgeImage = Asset.Images.encryptionTrusted.image badgeImage = Asset.Images.encryptionTrusted.image
title = "Trusted" title = "Trusted"

View file

@ -30,6 +30,7 @@ final class UserVerificationCoordinator: NSObject, UserVerificationCoordinatorTy
private let session: MXSession private let session: MXSession
private let userId: String private let userId: String
private let userDisplayName: String? private let userDisplayName: String?
private var deviceId: String?
// MARK: Public // MARK: Public
@ -48,6 +49,11 @@ final class UserVerificationCoordinator: NSObject, UserVerificationCoordinatorTy
self.userDisplayName = userDisplayName self.userDisplayName = userDisplayName
} }
convenience init(presenter: Presentable, session: MXSession, userId: String, userDisplayName: String?, deviceId: String) {
self.init(presenter: presenter, session: session, userId: userId, userDisplayName: userDisplayName)
self.deviceId = deviceId
}
// MARK: - Public methods // MARK: - Public methods
func start() { func start() {
@ -56,8 +62,14 @@ final class UserVerificationCoordinator: NSObject, UserVerificationCoordinatorTy
return return
} }
let rootCoordinator = UserVerificationSessionsStatusCoordinator(session: self.session, userId: self.userId) let rootCoordinator: Coordinator & Presentable
rootCoordinator.delegate = self
if let deviceId = self.deviceId {
rootCoordinator = self.createSessionStatusCoordinator(with: deviceId, for: self.userId, userDisplayName: self.userDisplayName)
} else {
rootCoordinator = self.createUserVerificationSessionsStatusCoordinator()
}
rootCoordinator.start() rootCoordinator.start()
self.add(childCoordinator: rootCoordinator) self.add(childCoordinator: rootCoordinator)
@ -70,7 +82,7 @@ final class UserVerificationCoordinator: NSObject, UserVerificationCoordinatorTy
rootViewController.modalPresentationStyle = .formSheet rootViewController.modalPresentationStyle = .formSheet
self.presenter.toPresentable().present(rootViewController, animated: true, completion: nil) self.presenter.toPresentable().present(rootViewController, animated: true, completion: nil)
} }
func toPresentable() -> UIViewController { func toPresentable() -> UIViewController {
return self.navigationRouter.toPresentable() return self.navigationRouter.toPresentable()
@ -78,9 +90,20 @@ final class UserVerificationCoordinator: NSObject, UserVerificationCoordinatorTy
// MARK: - Private methods // MARK: - Private methods
private func presentSessionStatus(with deviceId: String, for userId: String, userDisplayName: String?) { private func createUserVerificationSessionsStatusCoordinator() -> UserVerificationSessionsStatusCoordinator {
let coordinator = UserVerificationSessionsStatusCoordinator(session: self.session, userId: self.userId)
coordinator.delegate = self
return coordinator
}
private func createSessionStatusCoordinator(with deviceId: String, for userId: String, userDisplayName: String?) -> UserVerificationSessionStatusCoordinator {
let coordinator = UserVerificationSessionStatusCoordinator(session: self.session, userId: userId, userDisplayName: userDisplayName, deviceId: deviceId) let coordinator = UserVerificationSessionStatusCoordinator(session: self.session, userId: userId, userDisplayName: userDisplayName, deviceId: deviceId)
coordinator.delegate = self coordinator.delegate = self
return coordinator
}
private func presentSessionStatus(with deviceId: String, for userId: String, userDisplayName: String?) {
let coordinator = self.createSessionStatusCoordinator(with: deviceId, for: userId, userDisplayName: userDisplayName)
coordinator.start() coordinator.start()
self.navigationRouter.push(coordinator, animated: true) { self.navigationRouter.push(coordinator, animated: true) {

View file

@ -35,6 +35,7 @@ final class UserVerificationCoordinatorBridgePresenter: NSObject {
private let session: MXSession private let session: MXSession
private let userId: String private let userId: String
private let userDisplayName: String? private let userDisplayName: String?
private var deviceId: String?
private var coordinator: Coordinator? private var coordinator: Coordinator?
@ -52,6 +53,15 @@ final class UserVerificationCoordinatorBridgePresenter: NSObject {
super.init() super.init()
} }
init(presenter: UIViewController, session: MXSession, userId: String, userDisplayName: String?, deviceId: String) {
self.presenter = presenter
self.session = session
self.userId = userId
self.userDisplayName = userDisplayName
self.deviceId = deviceId
super.init()
}
// MARK: - Public // MARK: - Public
func start() { func start() {
@ -59,7 +69,15 @@ final class UserVerificationCoordinatorBridgePresenter: NSObject {
} }
func present() { func present() {
let userVerificationCoordinator = UserVerificationCoordinator(presenter: self.presenter, session: self.session, userId: self.userId, userDisplayName: self.userDisplayName)
let userVerificationCoordinator: UserVerificationCoordinator
if let deviceId = self.deviceId {
userVerificationCoordinator = UserVerificationCoordinator(presenter: self.presenter, session: self.session, userId: self.userId, userDisplayName: self.userDisplayName, deviceId: deviceId)
} else {
userVerificationCoordinator = UserVerificationCoordinator(presenter: self.presenter, session: self.session, userId: self.userId, userDisplayName: self.userDisplayName)
}
userVerificationCoordinator.start() userVerificationCoordinator.start()
self.coordinator = userVerificationCoordinator self.coordinator = userVerificationCoordinator
} }