diff --git a/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewModel.swift b/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewModel.swift index e048d0f7c..c449e1758 100644 --- a/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewModel.swift +++ b/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewModel.swift @@ -28,10 +28,10 @@ final class DeviceVerificationStartViewModel: DeviceVerificationStartViewModelTy private let verificationManager: MXDeviceVerificationManager private let otherUser: MXUser private let otherDevice: MXDeviceInfo + + private var transaction: MXSASTransaction! // MARK: Public - - var message: String? weak var viewDelegate: DeviceVerificationStartViewModelViewDelegate? weak var coordinatorDelegate: DeviceVerificationStartViewModelCoordinatorDelegate? @@ -43,7 +43,6 @@ final class DeviceVerificationStartViewModel: DeviceVerificationStartViewModelTy self.verificationManager = session.crypto.deviceVerificationManager self.otherUser = otherUser self.otherDevice = otherDevice - self.message = nil } deinit { @@ -54,10 +53,12 @@ final class DeviceVerificationStartViewModel: DeviceVerificationStartViewModelTy func process(viewAction: DeviceVerificationStartViewAction) { switch viewAction { case .useLegacyVerification: + self.cancelTransaction() self.coordinatorDelegate?.deviceVerificationStartViewModelUseLegacyVerification(self) case .beginVerifying: self.beginVerifying() case .cancel: + self.cancelTransaction() self.coordinatorDelegate?.deviceVerificationStartViewModelDidCancel(self) } } @@ -65,7 +66,6 @@ final class DeviceVerificationStartViewModel: DeviceVerificationStartViewModelTy // MARK: - Private private func beginVerifying() { - self.update(viewState: .loading) self.verificationManager.beginKeyVerification(withUserId: self.otherUser.userId, andDeviceId: self.otherDevice.deviceId, method: kMXKeyVerificationMethodSAS, complete: { [weak self] (transaction) in @@ -77,14 +77,20 @@ final class DeviceVerificationStartViewModel: DeviceVerificationStartViewModelTy return } - sself.message = transaction?.description + sself.transaction = sasTransaction sself.registerTransactionDidStateChangeNotification(transaction: sasTransaction) sself.update(viewState: .loaded) - - print("\(String(describing: transaction))") }) } + + private func cancelTransaction() { + guard let transaction = self.transaction else { + return + } + + transaction.cancel(with: MXTransactionCancelCode.user()) + } private func update(viewState: DeviceVerificationStartViewState) { self.viewDelegate?.deviceVerificationStartViewModel(self, didUpdateViewState: viewState) @@ -102,13 +108,8 @@ final class DeviceVerificationStartViewModel: DeviceVerificationStartViewModelTy return } - // TODO: To remove - self.message = transaction.description - self.update(viewState: .loaded) - switch transaction.state { case MXOutgoingSASTransactionStateShowSAS: - self.message = transaction.sasEmoji?.description self.coordinatorDelegate?.deviceVerificationStartViewModel(self, didCompleteWithOutgoingTransaction: transaction) case MXOutgoingSASTransactionStateCancelled: self.coordinatorDelegate?.deviceVerificationStartViewModel(self, didTransactionCancelled: transaction) diff --git a/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewModelType.swift b/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewModelType.swift index c4a6c64de..be3bf3b29 100644 --- a/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewModelType.swift +++ b/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewModelType.swift @@ -32,10 +32,7 @@ protocol DeviceVerificationStartViewModelCoordinatorDelegate: class { } /// Protocol describing the view model used by `DeviceVerificationStartViewController` -protocol DeviceVerificationStartViewModelType { - - var message: String? { get set } - +protocol DeviceVerificationStartViewModelType { var viewDelegate: DeviceVerificationStartViewModelViewDelegate? { get set } var coordinatorDelegate: DeviceVerificationStartViewModelCoordinatorDelegate? { get set }