KeyVerificationCoordinator: Handle QR code confirmation screen.

This commit is contained in:
SBiOSoftWhare
2020-04-16 18:46:18 +02:00
parent 9c82869754
commit 3628e45a62
@@ -102,7 +102,7 @@ final class KeyVerificationCoordinator: KeyVerificationCoordinatorType {
func start() {
let rootCoordinator: Coordinator & Presentable
switch self.verificationFlow {
case .verifyUser(let roomMember):
rootCoordinator = self.createUserVerificationStartCoordinator(with: roomMember)
@@ -119,11 +119,11 @@ final class KeyVerificationCoordinator: KeyVerificationCoordinatorType {
case .completeSecurity:
rootCoordinator = self.createCompleteSecurityCoordinator()
}
rootCoordinator.start()
self.add(childCoordinator: rootCoordinator)
if self.navigationRouter.modules.isEmpty == false {
self.navigationRouter.push(rootCoordinator, animated: true, popCompletion: { [weak self] in
self?.remove(childCoordinator: rootCoordinator)
@@ -232,6 +232,17 @@ final class KeyVerificationCoordinator: KeyVerificationCoordinatorType {
self?.remove(childCoordinator: coordinator)
}
}
private func showScanConfirmation(for transaction: MXQRCodeTransaction, codeScanning: KeyVerificationScanning, animated: Bool) {
let coordinator = KeyVerificationScanConfirmationCoordinator(session: self.session, transaction: transaction, codeScanning: codeScanning, verificationKind: self.verificationKind)
coordinator.delegate = self
coordinator.start()
self.add(childCoordinator: coordinator)
self.navigationRouter.push(coordinator, animated: animated) { [weak self] in
self?.remove(childCoordinator: coordinator)
}
}
private func showVerified(animated: Bool) {
let viewController = KeyVerificationVerifiedViewController.instantiate(with: self.verificationKind)
@@ -350,10 +361,14 @@ extension KeyVerificationCoordinator: KeyVerificationVerifyByScanningCoordinator
self.showVerified(animated: true)
}
func keyVerificationVerifyByScanningCoordinatorDidCompleteQRCodeVerification(_ coordinator: KeyVerificationVerifyByScanningCoordinatorType) {
self.showVerified(animated: true)
func keyVerificationVerifyByScanningCoordinator(_ coordinator: KeyVerificationVerifyByScanningCoordinatorType, didScanOtherQRCodeData qrCodeData: MXQRCodeData, withTransaction transaction: MXQRCodeTransaction) {
self.showScanConfirmation(for: transaction, codeScanning: .scannedOtherQRCode(qrCodeData), animated: true)
}
func keyVerificationVerifyByScanningCoordinator(_ coordinator: KeyVerificationVerifyByScanningCoordinatorType, qrCodeDidScannedByOtherWithTransaction transaction: MXQRCodeTransaction) {
self.showScanConfirmation(for: transaction, codeScanning: .myQRCodeScanned, animated: true)
}
func keyVerificationVerifyByScanningCoordinator(_ coordinator: KeyVerificationVerifyByScanningCoordinatorType, didCompleteWithSASTransaction transaction: MXSASTransaction) {
self.showVerifyBySAS(transaction: transaction, animated: true)
}
@@ -381,3 +396,15 @@ extension KeyVerificationCoordinator: KeyVerificationSelfVerifyWaitCoordinatorDe
self.didCancel()
}
}
// MARK: - KeyVerificationScanConfirmationCoordinatorDelegate
extension KeyVerificationCoordinator: KeyVerificationScanConfirmationCoordinatorDelegate {
func keyVerificationScanConfirmationCoordinatorDidComplete(_ coordinator: KeyVerificationScanConfirmationCoordinatorType) {
self.showVerified(animated: true)
}
func keyVerificationScanConfirmationCoordinatorDidCancel(_ coordinator: KeyVerificationScanConfirmationCoordinatorType) {
self.didCancel()
}
}