diff --git a/CHANGES.rst b/CHANGES.rst index 5d98d634a..32eac4f93 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -7,6 +7,7 @@ Changes to be released in next version 🙌 Improvements * Pin: Implement not allowed PINs feature. There is no restriction by default. * Room: New Room Settings screen. + * Complete Security: Come back to the root screen if device verification is cancelled. 🐛 Bugfix * Timeline: Hide encrypted history (pre-invite) (#3660). diff --git a/Riot/Modules/KeyVerification/Common/KeyVerificationCoordinator.swift b/Riot/Modules/KeyVerification/Common/KeyVerificationCoordinator.swift index 856d106f4..a9045ffc2 100644 --- a/Riot/Modules/KeyVerification/Common/KeyVerificationCoordinator.swift +++ b/Riot/Modules/KeyVerification/Common/KeyVerificationCoordinator.swift @@ -29,6 +29,7 @@ final class KeyVerificationCoordinator: KeyVerificationCoordinatorType { private let session: MXSession private let verificationFlow: KeyVerificationFlow private let verificationKind: KeyVerificationKind + private var completeSecurityCoordinator: KeyVerificationSelfVerifyWaitCoordinatorType? private var otherUserId: String { @@ -133,7 +134,9 @@ final class KeyVerificationCoordinator: KeyVerificationCoordinatorType { case .incomingSASTransaction(let incomingSASTransaction): rootCoordinator = self.createDataLoadingScreenCoordinator(otherUserId: incomingSASTransaction.otherUserId, otherDeviceId: incomingSASTransaction.otherDeviceId) case .completeSecurity(let isNewSignIn): - rootCoordinator = self.createCompleteSecurityCoordinator(isNewSignIn: isNewSignIn) + let coordinator = self.createCompleteSecurityCoordinator(isNewSignIn: isNewSignIn) + self.completeSecurityCoordinator = coordinator + rootCoordinator = coordinator } rootCoordinator.start() @@ -162,6 +165,12 @@ final class KeyVerificationCoordinator: KeyVerificationCoordinatorType { } private func didCancel() { + if self.completeSecurityCoordinator != nil && childCoordinators.count > 1 { + NSLog("[KeyVerificationCoordinator] didCancel: popToRootModule"); + self.navigationRouter.popToRootModule(animated: true) + return + } + self.delegate?.keyVerificationCoordinatorDidCancel(self) }