diff --git a/Riot/Categories/MXRecoveryService.swift b/Riot/Categories/MXRecoveryService.swift new file mode 100644 index 000000000..b48a08fd1 --- /dev/null +++ b/Riot/Categories/MXRecoveryService.swift @@ -0,0 +1,28 @@ +/* + Copyright 2020 New Vector Ltd + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +import Foundation + +extension MXRecoveryService { + + var vc_availability: SecretsRecoveryAvailability { + guard self.hasRecovery() else { + return .notAvailable + } + let secretsRecoveryMode: SecretsRecoveryMode = self.usePassphrase() ? .passphraseOrKey : .onlyKey + return .available(secretsRecoveryMode) + } +} diff --git a/Riot/Modules/KeyVerification/Device/SelfVerifyWait/KeyVerificationSelfVerifyWaitViewModel.swift b/Riot/Modules/KeyVerification/Device/SelfVerifyWait/KeyVerificationSelfVerifyWaitViewModel.swift index ed21fba47..702e7fc83 100644 --- a/Riot/Modules/KeyVerification/Device/SelfVerifyWait/KeyVerificationSelfVerifyWaitViewModel.swift +++ b/Riot/Modules/KeyVerification/Device/SelfVerifyWait/KeyVerificationSelfVerifyWaitViewModel.swift @@ -28,10 +28,7 @@ final class KeyVerificationSelfVerifyWaitViewModel: KeyVerificationSelfVerifyWai private let keyVerificationService: KeyVerificationService private let verificationManager: MXKeyVerificationManager private let isNewSignIn: Bool - private lazy var secretsRecoveryAvailability: SecretsRecoveryAvailability = { - return self.secretsRecoveryAvailability(from: self.session.crypto.recoveryService) - }() - + private let secretsRecoveryAvailability: SecretsRecoveryAvailability private var keyVerificationRequest: MXKeyVerificationRequest? // MARK: Public @@ -46,6 +43,7 @@ final class KeyVerificationSelfVerifyWaitViewModel: KeyVerificationSelfVerifyWai self.verificationManager = session.crypto.keyVerificationManager self.keyVerificationService = KeyVerificationService() self.isNewSignIn = isNewSignIn + self.secretsRecoveryAvailability = session.crypto.recoveryService.vc_availability } deinit { @@ -96,14 +94,6 @@ final class KeyVerificationSelfVerifyWaitViewModel: KeyVerificationSelfVerifyWai self.registerTransactionDidStateChangeNotification() } - private func secretsRecoveryAvailability(from recoveryService: MXRecoveryService) -> SecretsRecoveryAvailability { - guard recoveryService.hasRecovery() else { - return .notAvailable - } - let secretsRecoveryMode: SecretsRecoveryMode = recoveryService.usePassphrase() ? .passphraseOrKey : .onlyKey - return .available(secretsRecoveryMode) - } - private func cancel() { self.unregisterKeyVerificationManagerNewRequestNotification() self.cancelKeyVerificationRequest()