diff --git a/Riot/Assets/en.lproj/Vector.strings b/Riot/Assets/en.lproj/Vector.strings index 80cc33a07..7d011f333 100644 --- a/Riot/Assets/en.lproj/Vector.strings +++ b/Riot/Assets/en.lproj/Vector.strings @@ -719,6 +719,11 @@ "key_backup_recover_title" = "Secure Messages"; +"key_backup_recover_invalid_passphrase_title" = "Incorrect Recovery Passphrase"; +"key_backup_recover_invalid_passphrase" = "Backup could not be decrypted with this passphrase: please verify that you entered the correct recovery passphrase."; +"key_backup_recover_invalid_recovery_key_title" = "Recovery Key Mismatch"; +"key_backup_recover_invalid_recovery_key" = "Backup could not be decrypted with this key: please verify that you entered the correct recovery key."; + // Recover from passphrase "key_backup_recover_from_passphrase_info" = "Use your recovery passphrase to unlock your secure message history"; diff --git a/Riot/Generated/Strings.swift b/Riot/Generated/Strings.swift index fc11075f1..22a9c2ac3 100644 --- a/Riot/Generated/Strings.swift +++ b/Riot/Generated/Strings.swift @@ -722,6 +722,22 @@ internal enum VectorL10n { internal static var keyBackupRecoverFromRecoveryKeyRecoveryKeyTitle: String { return VectorL10n.tr("Vector", "key_backup_recover_from_recovery_key_recovery_key_title") } + /// Backup could not be decrypted with this passphrase: please verify that you entered the correct recovery passphrase. + internal static var keyBackupRecoverInvalidPassphrase: String { + return VectorL10n.tr("Vector", "key_backup_recover_invalid_passphrase") + } + /// Incorrect Recovery Passphrase + internal static var keyBackupRecoverInvalidPassphraseTitle: String { + return VectorL10n.tr("Vector", "key_backup_recover_invalid_passphrase_title") + } + /// Backup could not be decrypted with this key: please verify that you entered the correct recovery key. + internal static var keyBackupRecoverInvalidRecoveryKey: String { + return VectorL10n.tr("Vector", "key_backup_recover_invalid_recovery_key") + } + /// Recovery Key Mismatch + internal static var keyBackupRecoverInvalidRecoveryKeyTitle: String { + return VectorL10n.tr("Vector", "key_backup_recover_invalid_recovery_key_title") + } /// Backup Restored! internal static var keyBackupRecoverSuccessInfo: String { return VectorL10n.tr("Vector", "key_backup_recover_success_info") diff --git a/Riot/Modules/KeyBackup/Recover/Passphrase/KeyBackupRecoverFromPassphraseViewController.swift b/Riot/Modules/KeyBackup/Recover/Passphrase/KeyBackupRecoverFromPassphraseViewController.swift index 2d0464031..8230cd89c 100644 --- a/Riot/Modules/KeyBackup/Recover/Passphrase/KeyBackupRecoverFromPassphraseViewController.swift +++ b/Riot/Modules/KeyBackup/Recover/Passphrase/KeyBackupRecoverFromPassphraseViewController.swift @@ -181,7 +181,19 @@ final class KeyBackupRecoverFromPassphraseViewController: UIViewController { private func render(error: Error) { self.activityPresenter.removeCurrentActivityIndicator(animated: true) - self.errorPresenter.presentError(from: self, forError: error, animated: true, handler: nil) + + if (error as NSError).domain == MXKeyBackupErrorDomain + && (error as NSError).code == Int(MXKeyBackupErrorInvalidRecoveryKeyCode.rawValue) { + + self.errorPresenter.presentError(from: self, + title: VectorL10n.keyBackupRecoverInvalidPassphraseTitle, + message: VectorL10n.keyBackupRecoverInvalidPassphrase, + animated: true, + handler: nil) + } + else { + self.errorPresenter.presentError(from: self, forError: error, animated: true, handler: nil) + } } // MARK: - Actions diff --git a/Riot/Modules/KeyBackup/Recover/RecoveryKey/KeyBackupRecoverFromRecoveryKeyViewController.swift b/Riot/Modules/KeyBackup/Recover/RecoveryKey/KeyBackupRecoverFromRecoveryKeyViewController.swift index 1da22c4a9..d29f3a027 100644 --- a/Riot/Modules/KeyBackup/Recover/RecoveryKey/KeyBackupRecoverFromRecoveryKeyViewController.swift +++ b/Riot/Modules/KeyBackup/Recover/RecoveryKey/KeyBackupRecoverFromRecoveryKeyViewController.swift @@ -179,7 +179,19 @@ final class KeyBackupRecoverFromRecoveryKeyViewController: UIViewController { private func render(error: Error) { self.activityPresenter.removeCurrentActivityIndicator(animated: true) - self.errorPresenter.presentError(from: self, forError: error, animated: true, handler: nil) + + if (error as NSError).domain == MXKeyBackupErrorDomain + && (error as NSError).code == Int(MXKeyBackupErrorInvalidRecoveryKeyCode.rawValue) { + + self.errorPresenter.presentError(from: self, + title: VectorL10n.keyBackupRecoverInvalidRecoveryKeyTitle, + message: VectorL10n.keyBackupRecoverInvalidRecoveryKey, + animated: true, + handler: nil) + } + else { + self.errorPresenter.presentError(from: self, forError: error, animated: true, handler: nil) + } } private func showFileSelection() {