diff --git a/Riot/Modules/KeyVerification/Common/KeyVerificationCoordinator.swift b/Riot/Modules/KeyVerification/Common/KeyVerificationCoordinator.swift index 43764b71c..37e097b28 100644 --- a/Riot/Modules/KeyVerification/Common/KeyVerificationCoordinator.swift +++ b/Riot/Modules/KeyVerification/Common/KeyVerificationCoordinator.swift @@ -173,6 +173,17 @@ final class KeyVerificationCoordinator: KeyVerificationCoordinatorType { return coordinator } + private func showSecretsRecovery(with recoveryMode: SecretsRecoveryMode) { + let coordinator = SecretsRecoveryCoordinator(session: self.session, recoveryMode: recoveryMode, navigationRouter: self.navigationRouter) + coordinator.delegate = self + coordinator.start() + + self.add(childCoordinator: coordinator) + self.navigationRouter.setRootModule(coordinator) { [weak self] in + self?.remove(childCoordinator: coordinator) + } + } + private func createSelfVerificationCoordinator(otherDeviceId: String) -> KeyVerificationSelfVerifyStartCoordinator { let coordinator = KeyVerificationSelfVerifyStartCoordinator(session: self.session, otherDeviceId: otherDeviceId) coordinator.delegate = self @@ -412,6 +423,10 @@ extension KeyVerificationCoordinator: KeyVerificationSelfVerifyWaitCoordinatorDe func keyVerificationSelfVerifyWaitCoordinatorDidCancel(_ coordinator: KeyVerificationSelfVerifyWaitCoordinatorType) { self.didCancel() } + + func keyVerificationSelfVerifyWaitCoordinator(_ coordinator: KeyVerificationSelfVerifyWaitCoordinatorType, wantsToRecoverSecretsWith secretsRecoveryMode: SecretsRecoveryMode) { + self.showSecretsRecovery(with: secretsRecoveryMode) + } } // MARK: - KeyVerificationScanConfirmationCoordinatorDelegate @@ -425,3 +440,15 @@ extension KeyVerificationCoordinator: KeyVerificationScanConfirmationCoordinator self.didCancel() } } + +// MARK: - SecretsRecoveryCoordinatorDelegate +extension KeyVerificationCoordinator: SecretsRecoveryCoordinatorDelegate { + + func secretsRecoveryCoordinatorDidRecover(_ coordinator: SecretsRecoveryCoordinatorType) { + self.showVerified(animated: true) + } + + func secretsRecoveryCoordinatorDidCancel(_ coordinator: SecretsRecoveryCoordinatorType) { + self.didCancel() + } +}