diff --git a/Riot/Assets/en.lproj/Vector.strings b/Riot/Assets/en.lproj/Vector.strings index da5664a40..5535ce24b 100644 --- a/Riot/Assets/en.lproj/Vector.strings +++ b/Riot/Assets/en.lproj/Vector.strings @@ -794,6 +794,13 @@ "sign_out_key_backup_in_progress_alert_cancel_action" = "I'll wait"; // MARK: - Device Verification +"device_verification_title" = "Verify device"; // MARK: - Start -"device_verification_start_verify_button" = "Verify"; +"device_verification_start_title" = "Verify by comparing a short text string"; +"device_verification_start_security_advise" = "For maximum security, we recommend you do this in person or use another trusted means of communication"; +"device_verification_start_wait_partner" = "Waiting for partner to accept..."; +"device_verification_start_verify_button" = "Begin Verifying"; +"device_verification_start_use_legacy_action" = "Use Legacy Verification (for older clients)"; + + diff --git a/Riot/Generated/Strings.swift b/Riot/Generated/Strings.swift index 29015294a..04a9c6a07 100644 --- a/Riot/Generated/Strings.swift +++ b/Riot/Generated/Strings.swift @@ -426,10 +426,30 @@ internal enum VectorL10n { internal static var decline: String { return VectorL10n.tr("Vector", "decline") } - /// Verify + /// For maximum security, we recommend you do this in person or use another trusted means of communication + internal static var deviceVerificationStartSecurityAdvise: String { + return VectorL10n.tr("Vector", "device_verification_start_security_advise") + } + /// Verify by comparing a short text string + internal static var deviceVerificationStartTitle: String { + return VectorL10n.tr("Vector", "device_verification_start_title") + } + /// Use Legacy Verification (for older clients) + internal static var deviceVerificationStartUseLegacyAction: String { + return VectorL10n.tr("Vector", "device_verification_start_use_legacy_action") + } + /// Begin Verifying internal static var deviceVerificationStartVerifyButton: String { return VectorL10n.tr("Vector", "device_verification_start_verify_button") } + /// Waiting for partner to accept... + internal static var deviceVerificationStartWaitPartner: String { + return VectorL10n.tr("Vector", "device_verification_start_wait_partner") + } + /// Verify device + internal static var deviceVerificationTitle: String { + return VectorL10n.tr("Vector", "device_verification_title") + } /// %tu rooms internal static func directoryCellDescription(_ p1: Int) -> String { return VectorL10n.tr("Vector", "directory_cell_description", p1) diff --git a/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartCoordinator.swift b/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartCoordinator.swift index 8f283cc91..b3259b0b4 100644 --- a/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartCoordinator.swift +++ b/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartCoordinator.swift @@ -60,7 +60,11 @@ final class DeviceVerificationStartCoordinator: DeviceVerificationStartCoordinat // MARK: - DeviceVerificationStartViewModelCoordinatorDelegate extension DeviceVerificationStartCoordinator: DeviceVerificationStartViewModelCoordinatorDelegate { - + func deviceVerificationStartViewModelUseLegacyVerification(_ viewModel: DeviceVerificationStartViewModelType) { + // TODO + self.delegate?.deviceVerificationStartCoordinatorDidCancel(self) + } + func deviceVerificationStartViewModel(_ viewModel: DeviceVerificationStartViewModelType, didCompleteWithOutgoingTransaction transaction: MXSASTransaction) { self.delegate?.deviceVerificationStartCoordinator(self, didCompleteWithOutgoingTransaction: transaction) } diff --git a/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewAction.swift b/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewAction.swift index 90d6d2c28..ce7024a06 100644 --- a/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewAction.swift +++ b/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewAction.swift @@ -20,7 +20,7 @@ import Foundation /// DeviceVerificationStartViewController view actions exposed to view model enum DeviceVerificationStartViewAction { - case sayHello + case useLegacyVerification case beginVerifying case cancel } diff --git a/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewController.storyboard b/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewController.storyboard index 1a6ffab2d..621055610 100644 --- a/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewController.storyboard +++ b/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewController.storyboard @@ -22,30 +22,72 @@ - + - + - + + + + + + + + - + - + + + + + + + + + + + + + @@ -55,7 +97,7 @@ - + @@ -63,13 +105,13 @@ - + - + @@ -79,9 +121,12 @@ - + + + + diff --git a/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewController.swift b/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewController.swift index 403505b2c..ee617ad48 100644 --- a/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewController.swift +++ b/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewController.swift @@ -31,10 +31,13 @@ final class DeviceVerificationStartViewController: UIViewController { // MARK: Outlets @IBOutlet private weak var scrollView: UIScrollView! - - @IBOutlet private weak var messageLabel: UILabel! + + @IBOutlet private weak var titleLabel: UILabel! + @IBOutlet private weak var informationLabel: UILabel! + @IBOutlet weak var verifyButtonBackgroundView: UIView! @IBOutlet private weak var verifyButton: UIButton! - + @IBOutlet weak var useLegacyVerificationButton: UIButton! + // MARK: Private private var viewModel: DeviceVerificationStartViewModelType! @@ -59,7 +62,7 @@ final class DeviceVerificationStartViewController: UIViewController { // Do any additional setup after loading the view. - self.title = "Template" + self.title = VectorL10n.deviceVerificationTitle self.setupViews() self.keyboardAvoider = KeyboardAvoider(scrollViewContainerView: self.view, scrollView: self.scrollView) @@ -70,8 +73,6 @@ final class DeviceVerificationStartViewController: UIViewController { self.update(theme: self.theme) self.viewModel.viewDelegate = self - - self.viewModel.process(viewAction: .sayHello) } override func viewWillAppear(_ animated: Bool) { @@ -109,12 +110,13 @@ final class DeviceVerificationStartViewController: UIViewController { theme.applyStyle(onNavigationBar: navigationBar) } - - // TODO: - self.messageLabel.textColor = theme.textPrimaryColor + self.titleLabel.textColor = theme.textPrimaryColor + self.informationLabel.textColor = theme.textPrimaryColor self.verifyButton.backgroundColor = theme.backgroundColor theme.applyStyle(onButton: self.verifyButton) + + theme.applyStyle(onButton: self.useLegacyVerificationButton) } private func registerThemeServiceDidChangeThemeNotification() { @@ -134,10 +136,11 @@ final class DeviceVerificationStartViewController: UIViewController { self.scrollView.keyboardDismissMode = .interactive + self.titleLabel.text = VectorL10n.deviceVerificationStartTitle + self.informationLabel.text = VectorL10n.deviceVerificationStartSecurityAdvise + self.verifyButton.setTitle(VectorL10n.deviceVerificationStartVerifyButton, for: .normal) - - self.messageLabel.text = "VectorL10n.deviceVerificationStartTitle" - self.messageLabel.isHidden = true + self.useLegacyVerificationButton.setTitle(VectorL10n.deviceVerificationStartUseLegacyAction, for: .normal) } private func render(viewState: DeviceVerificationStartViewState) { @@ -157,9 +160,7 @@ final class DeviceVerificationStartViewController: UIViewController { private func renderLoaded() { self.activityPresenter.removeCurrentActivityIndicator(animated: true) - - self.messageLabel.text = self.viewModel.message - self.messageLabel.isHidden = false + //self.informationLabel.text = self.viewModel.message } private func render(error: Error) { @@ -174,6 +175,10 @@ final class DeviceVerificationStartViewController: UIViewController { self.viewModel.process(viewAction: .beginVerifying) } + @IBAction private func useLegacyVerificationButtonAction(_ sender: Any) { + self.viewModel.process(viewAction: .useLegacyVerification) + } + private func cancelButtonAction() { self.viewModel.process(viewAction: .cancel) } diff --git a/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewModel.swift b/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewModel.swift index cbbd63935..e048d0f7c 100644 --- a/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewModel.swift +++ b/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewModel.swift @@ -53,12 +53,12 @@ final class DeviceVerificationStartViewModel: DeviceVerificationStartViewModelTy func process(viewAction: DeviceVerificationStartViewAction) { switch viewAction { + case .useLegacyVerification: + self.coordinatorDelegate?.deviceVerificationStartViewModelUseLegacyVerification(self) case .beginVerifying: self.beginVerifying() case .cancel: self.coordinatorDelegate?.deviceVerificationStartViewModelDidCancel(self) - case .sayHello: - break } } diff --git a/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewModelType.swift b/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewModelType.swift index b9b6c5859..c4a6c64de 100644 --- a/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewModelType.swift +++ b/Riot/Modules/DeviceVerification/Start/DeviceVerificationStartViewModelType.swift @@ -23,6 +23,8 @@ protocol DeviceVerificationStartViewModelViewDelegate: class { } protocol DeviceVerificationStartViewModelCoordinatorDelegate: class { + func deviceVerificationStartViewModelUseLegacyVerification(_ viewModel: DeviceVerificationStartViewModelType) + func deviceVerificationStartViewModel(_ viewModel: DeviceVerificationStartViewModelType, didCompleteWithOutgoingTransaction transaction: MXSASTransaction) func deviceVerificationStartViewModel(_ viewModel: DeviceVerificationStartViewModelType, didTransactionCancelled transaction: MXSASTransaction)