diff --git a/CHANGES.rst b/CHANGES.rst index d39122e9d..4a95b11c6 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -25,6 +25,7 @@ Improvements: * Privacy: Settings: Add a Discovery section (#2606). * Privacy: Make NSContactsUsageDescription more generic and mention that 3pids are now uploaded hashed (#2521). * Privacy: Settings: Add IDENTITY SERVER section (#2604). + * Privacy: Make IS terms wording clearer when we fallback to vector.im (#2760). Bug fix: * Theme: Make button theming work (#2734). diff --git a/Riot/AppDelegate.m b/Riot/AppDelegate.m index a3a8b4184..2fbd1ebbc 100644 --- a/Riot/AppDelegate.m +++ b/Riot/AppDelegate.m @@ -4823,6 +4823,8 @@ NSString *const AppDelegateDidValidateEmailNotificationClientSecretKey = @"AppDe - (void)handleIdentityServiceTermsNotSignedNotification:(NSNotification*)notification { + NSLog(@"[AppDelegate] IS Terms: handleIdentityServiceTermsNotSignedNotification."); + NSString *baseURL; NSString *accessToken; @@ -4844,6 +4846,7 @@ NSString *const AppDelegateDidValidateEmailNotificationClientSecretKey = @"AppDe ServiceTermsModalCoordinatorBridgePresenter *serviceTermsModalCoordinatorBridgePresenter = [[ServiceTermsModalCoordinatorBridgePresenter alloc] initWithSession:mxSession baseUrl:baseURL serviceType:MXServiceTypeIdentityService + outOfContext:YES accessToken:accessToken]; serviceTermsModalCoordinatorBridgePresenter.delegate = self; @@ -4862,6 +4865,24 @@ NSString *const AppDelegateDidValidateEmailNotificationClientSecretKey = @"AppDe self.serviceTermsModalCoordinatorBridgePresenter = nil; } +- (void)serviceTermsModalCoordinatorBridgePresenterDelegateDidDecline:(ServiceTermsModalCoordinatorBridgePresenter *)coordinatorBridgePresenter session:(MXSession *)session +{ + NSLog(@"[AppDelegate] IS Terms: User has declined the use of the default IS."); + + // The user does not want to use the proposed IS. + // Disable IS feature on user's account + [session setIdentityServer:nil andAccessToken:nil]; + [session setAccountDataIdentityServer:nil success:^{ + } failure:^(NSError *error) { + NSLog(@"[AppDelegate] IS Terms: Error: %@", error); + }]; + + [coordinatorBridgePresenter dismissWithAnimated:YES completion:^{ + + }]; + self.serviceTermsModalCoordinatorBridgePresenter = nil; +} + - (void)serviceTermsModalCoordinatorBridgePresenterDelegateDidCancel:(ServiceTermsModalCoordinatorBridgePresenter * _Nonnull)coordinatorBridgePresenter { [coordinatorBridgePresenter dismissWithAnimated:YES completion:^{ diff --git a/Riot/Assets/en.lproj/Vector.strings b/Riot/Assets/en.lproj/Vector.strings index f1f5923d9..7dffc2faa 100644 --- a/Riot/Assets/en.lproj/Vector.strings +++ b/Riot/Assets/en.lproj/Vector.strings @@ -784,11 +784,19 @@ // Service terms "service_terms_modal_title" = "Terms Of Service"; -"service_terms_modal_message" = "To continue you need to accept the Terms of this service (%@)."; +"service_terms_modal_message" = "To continue you need to accept the terms of this service (%@)."; "service_terms_modal_accept_button" = "Accept"; -"service_terms_modal_description_for_identity_server" = "Be discoverable by others"; +"service_terms_modal_decline_button" = "Decline"; + +"service_terms_modal_description_for_identity_server_1" = "Find others by phone or email"; +"service_terms_modal_description_for_identity_server_2" = "Be found by phone or email"; "service_terms_modal_description_for_integration_manager" = "Use Bots, bridges, widgets and sticker packs"; +// Service terms - Variant for identity server when displayed out of a context +"service_terms_modal_title_identity_server" = "Contact discovery"; +"service_terms_modal_message_identity_server" = "Accept the terms of the identity server (%@) to discover contacts."; + + // Deactivate account "deactivate_account_title" = "Deactivate Account"; diff --git a/Riot/Generated/Strings.swift b/Riot/Generated/Strings.swift index b538feab9..ef7a91758 100644 --- a/Riot/Generated/Strings.swift +++ b/Riot/Generated/Strings.swift @@ -2518,22 +2518,38 @@ internal enum VectorL10n { internal static var serviceTermsModalAcceptButton: String { return VectorL10n.tr("Vector", "service_terms_modal_accept_button") } - /// Be discoverable by others - internal static var serviceTermsModalDescriptionForIdentityServer: String { - return VectorL10n.tr("Vector", "service_terms_modal_description_for_identity_server") + /// Decline + internal static var serviceTermsModalDeclineButton: String { + return VectorL10n.tr("Vector", "service_terms_modal_decline_button") + } + /// Find others by phone or email + internal static var serviceTermsModalDescriptionForIdentityServer1: String { + return VectorL10n.tr("Vector", "service_terms_modal_description_for_identity_server_1") + } + /// Be found by phone or email + internal static var serviceTermsModalDescriptionForIdentityServer2: String { + return VectorL10n.tr("Vector", "service_terms_modal_description_for_identity_server_2") } /// Use Bots, bridges, widgets and sticker packs internal static var serviceTermsModalDescriptionForIntegrationManager: String { return VectorL10n.tr("Vector", "service_terms_modal_description_for_integration_manager") } - /// To continue you need to accept the Terms of this service (%@). + /// To continue you need to accept the terms of this service (%@). internal static func serviceTermsModalMessage(_ p1: String) -> String { return VectorL10n.tr("Vector", "service_terms_modal_message", p1) } + /// Accept the terms of the identity server (%@) to discover contacts. + internal static func serviceTermsModalMessageIdentityServer(_ p1: String) -> String { + return VectorL10n.tr("Vector", "service_terms_modal_message_identity_server", p1) + } /// Terms Of Service internal static var serviceTermsModalTitle: String { return VectorL10n.tr("Vector", "service_terms_modal_title") } + /// Contact discovery + internal static var serviceTermsModalTitleIdentityServer: String { + return VectorL10n.tr("Vector", "service_terms_modal_title_identity_server") + } /// Add email address internal static var settingsAddEmailAddress: String { return VectorL10n.tr("Vector", "settings_add_email_address") diff --git a/Riot/Modules/Integrations/IntegrationManagerViewController.m b/Riot/Modules/Integrations/IntegrationManagerViewController.m index 470556421..6a412fd24 100644 --- a/Riot/Modules/Integrations/IntegrationManagerViewController.m +++ b/Riot/Modules/Integrations/IntegrationManagerViewController.m @@ -707,6 +707,7 @@ NSString *const kIntegrationManagerAddIntegrationScreen = @"add_integ"; ServiceTermsModalCoordinatorBridgePresenter *serviceTermsModalCoordinatorBridgePresenter = [[ServiceTermsModalCoordinatorBridgePresenter alloc] initWithSession:mxSession baseUrl:config.baseUrl serviceType:MXServiceTypeIntegrationManager + outOfContext:NO accessToken:config.scalarToken]; serviceTermsModalCoordinatorBridgePresenter.delegate = self; diff --git a/Riot/Modules/Integrations/Widgets/WidgetViewController.m b/Riot/Modules/Integrations/Widgets/WidgetViewController.m index fb085077c..81f888184 100644 --- a/Riot/Modules/Integrations/Widgets/WidgetViewController.m +++ b/Riot/Modules/Integrations/Widgets/WidgetViewController.m @@ -406,7 +406,9 @@ NSString *const kJavascriptSendResponseToPostMessageAPI = @"riotIOS.sendResponse NSLog(@"[WidgetVC] presentTerms for %@", config.baseUrl); ServiceTermsModalCoordinatorBridgePresenter *serviceTermsModalCoordinatorBridgePresenter = [[ServiceTermsModalCoordinatorBridgePresenter alloc] initWithSession:widget.mxSession baseUrl:config.baseUrl - serviceType:MXServiceTypeIntegrationManager accessToken:config.scalarToken]; + serviceType:MXServiceTypeIntegrationManager + outOfContext:NO + accessToken:config.scalarToken]; serviceTermsModalCoordinatorBridgePresenter.delegate = self; [serviceTermsModalCoordinatorBridgePresenter presentFrom:self animated:YES]; diff --git a/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenCoordinator.swift b/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenCoordinator.swift index d10923dee..5fcd0e632 100644 --- a/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenCoordinator.swift +++ b/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenCoordinator.swift @@ -37,9 +37,9 @@ final class ServiceTermsModalScreenCoordinator: ServiceTermsModalScreenCoordinat // MARK: - Setup - init(serviceTerms: MXServiceTerms) { + init(serviceTerms: MXServiceTerms, outOfContext: Bool = false) { - let serviceTermsModalScreenViewModel = ServiceTermsModalScreenViewModel(serviceTerms: serviceTerms) + let serviceTermsModalScreenViewModel = ServiceTermsModalScreenViewModel(serviceTerms: serviceTerms, outOfContext: outOfContext) let serviceTermsModalScreenViewController = ServiceTermsModalScreenViewController.instantiate(with: serviceTermsModalScreenViewModel) self.serviceTermsModalScreenViewModel = serviceTermsModalScreenViewModel self.serviceTermsModalScreenViewController = serviceTermsModalScreenViewController @@ -66,7 +66,11 @@ extension ServiceTermsModalScreenCoordinator: ServiceTermsModalScreenViewModelCo func serviceTermsModalScreenViewModel(_ coordinator: ServiceTermsModalScreenViewModelType, displayPolicy policy: MXLoginPolicyData) { self.delegate?.serviceTermsModalScreenCoordinator(self, displayPolicy: policy) } - + + func serviceTermsModalScreenViewModelDidDecline(_ viewModel: ServiceTermsModalScreenViewModelType) { + self.delegate?.serviceTermsModalScreenCoordinatorDidDecline(self) + } + func serviceTermsModalScreenViewModelDidCancel(_ viewModel: ServiceTermsModalScreenViewModelType) { self.delegate?.serviceTermsModalScreenCoordinatorDidCancel(self) } diff --git a/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenCoordinatorType.swift b/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenCoordinatorType.swift index 9cffa38d7..ebf6adc6e 100644 --- a/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenCoordinatorType.swift +++ b/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenCoordinatorType.swift @@ -21,6 +21,7 @@ import Foundation protocol ServiceTermsModalScreenCoordinatorDelegate: class { func serviceTermsModalScreenCoordinatorDidAccept(_ coordinator: ServiceTermsModalScreenCoordinatorType) func serviceTermsModalScreenCoordinator(_ coordinator: ServiceTermsModalScreenCoordinatorType, displayPolicy policy: MXLoginPolicyData) + func serviceTermsModalScreenCoordinatorDidDecline(_ coordinator: ServiceTermsModalScreenCoordinatorType) func serviceTermsModalScreenCoordinatorDidCancel(_ coordinator: ServiceTermsModalScreenCoordinatorType) } diff --git a/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewAction.swift b/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewAction.swift index 62a856c0b..27bb11e05 100644 --- a/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewAction.swift +++ b/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewAction.swift @@ -23,5 +23,6 @@ enum ServiceTermsModalScreenViewAction { case load case display(MXLoginPolicyData) case accept + case decline case cancel } diff --git a/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewController.storyboard b/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewController.storyboard index 9631169c5..f7c793731 100644 --- a/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewController.storyboard +++ b/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewController.storyboard @@ -37,32 +37,49 @@ - + - + + + + + + + - - - + + + - + @@ -98,6 +115,7 @@ + diff --git a/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewController.swift b/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewController.swift index 30f91177e..042975c2f 100644 --- a/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewController.swift +++ b/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewController.swift @@ -31,7 +31,8 @@ final class ServiceTermsModalScreenViewController: UIViewController { @IBOutlet private weak var messageLabel: UILabel! @IBOutlet private weak var tableView: UITableView! @IBOutlet private weak var acceptButton: UIButton! - + @IBOutlet private weak var declineButton: UIButton! + // MARK: Private private var viewModel: ServiceTermsModalScreenViewModelType! @@ -94,6 +95,9 @@ final class ServiceTermsModalScreenViewController: UIViewController { self.acceptButton.backgroundColor = theme.backgroundColor theme.applyStyle(onButton: self.acceptButton) + theme.applyStyle(onButton: self.declineButton) + self.declineButton.setTitleColor(self.theme.warningColor, for: .normal) + self.refreshViews() } @@ -120,6 +124,17 @@ final class ServiceTermsModalScreenViewController: UIViewController { self.acceptButton.setTitle(VectorL10n.serviceTermsModalAcceptButton, for: .normal) self.acceptButton.setTitle(VectorL10n.serviceTermsModalAcceptButton, for: .highlighted) self.refreshAcceptButton() + + if self.viewModel.outOfContext + && self.viewModel.serviceType == MXServiceTypeIdentityService { + self.title = VectorL10n.serviceTermsModalTitleIdentityServer + self.messageLabel.text = VectorL10n.serviceTermsModalMessageIdentityServer(self.viewModel.serviceUrl) + + self.declineButton.setTitle(VectorL10n.serviceTermsModalDeclineButton, for: .normal) + self.declineButton.setTitle(VectorL10n.serviceTermsModalDeclineButton, for: .highlighted) + } else { + self.declineButton.isHidden = true + } } private func setupTableView() { @@ -196,6 +211,10 @@ final class ServiceTermsModalScreenViewController: UIViewController { self.viewModel.process(viewAction: .accept) } + @IBAction private func declineButtonAction(_ sender: Any) { + self.viewModel.process(viewAction: .decline) + } + private func cancelButtonAction() { self.viewModel.process(viewAction: .cancel) } @@ -269,7 +288,9 @@ extension ServiceTermsModalScreenViewController: UITableViewDataSource { var labelDetail: String = "" switch self.viewModel.serviceType { case MXServiceTypeIdentityService: - labelDetail = VectorL10n.serviceTermsModalDescriptionForIdentityServer + labelDetail = VectorL10n.serviceTermsModalDescriptionForIdentityServer1 + + "\n" + + VectorL10n.serviceTermsModalDescriptionForIdentityServer2 case MXServiceTypeIntegrationManager: labelDetail = VectorL10n.serviceTermsModalDescriptionForIntegrationManager default: break @@ -280,7 +301,6 @@ extension ServiceTermsModalScreenViewController: UITableViewDataSource { label.append(NSAttributedString(string: "\n")) label.append(NSAttributedString(string: labelDetail, attributes: [.foregroundColor: theme.textSecondaryColor])) - return label } } diff --git a/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewModel.swift b/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewModel.swift index 919aaa874..063b45552 100644 --- a/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewModel.swift +++ b/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewModel.swift @@ -19,9 +19,10 @@ import Foundation final class ServiceTermsModalScreenViewModel: ServiceTermsModalScreenViewModelType { - + // MARK: - Properties - + let outOfContext: Bool + // MARK: Private private let serviceTerms: MXServiceTerms @@ -42,8 +43,9 @@ final class ServiceTermsModalScreenViewModel: ServiceTermsModalScreenViewModelTy // MARK: - Setup - init(serviceTerms: MXServiceTerms) { + init(serviceTerms: MXServiceTerms, outOfContext: Bool) { self.serviceTerms = serviceTerms + self.outOfContext = outOfContext } deinit { @@ -59,6 +61,8 @@ final class ServiceTermsModalScreenViewModel: ServiceTermsModalScreenViewModelTy self.coordinatorDelegate?.serviceTermsModalScreenViewModel(self, displayPolicy: policy) case .accept: self.acceptTerms() + case .decline: + self.coordinatorDelegate?.serviceTermsModalScreenViewModelDidDecline(self) case .cancel: self.coordinatorDelegate?.serviceTermsModalScreenViewModelDidCancel(self) } diff --git a/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewModelType.swift b/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewModelType.swift index 2a812f6b2..76fff52d3 100644 --- a/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewModelType.swift +++ b/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewModelType.swift @@ -25,6 +25,7 @@ protocol ServiceTermsModalScreenViewModelViewDelegate: class { protocol ServiceTermsModalScreenViewModelCoordinatorDelegate: class { func serviceTermsModalScreenViewModel(_ coordinator: ServiceTermsModalScreenViewModelType, displayPolicy policy: MXLoginPolicyData) func serviceTermsModalScreenViewModelDidAccept(_ viewModel: ServiceTermsModalScreenViewModelType) + func serviceTermsModalScreenViewModelDidDecline(_ viewModel: ServiceTermsModalScreenViewModelType) func serviceTermsModalScreenViewModelDidCancel(_ viewModel: ServiceTermsModalScreenViewModelType) } @@ -33,6 +34,9 @@ protocol ServiceTermsModalScreenViewModelType { var serviceUrl: String { get } var serviceType: MXServiceType { get } + /// If true, terms are displayed out of a context of a flow (like a background 3pids lookup) + /// In this case, the wording needs to provide more information about the intent + var outOfContext: Bool { get } var policies: [MXLoginPolicyData]? { get set } var alreadyAcceptedPoliciesUrls: [String] { get set } diff --git a/Riot/Modules/ServiceTerms/Modal/ServiceTermsModalCoordinator.swift b/Riot/Modules/ServiceTerms/Modal/ServiceTermsModalCoordinator.swift index 433d02baa..3c9ccc737 100644 --- a/Riot/Modules/ServiceTerms/Modal/ServiceTermsModalCoordinator.swift +++ b/Riot/Modules/ServiceTerms/Modal/ServiceTermsModalCoordinator.swift @@ -28,6 +28,7 @@ final class ServiceTermsModalCoordinator: ServiceTermsModalCoordinatorType { private let navigationRouter: NavigationRouterType private let session: MXSession private let serviceTerms: MXServiceTerms + private let outOfContext: Bool // MARK: Public @@ -37,10 +38,11 @@ final class ServiceTermsModalCoordinator: ServiceTermsModalCoordinatorType { weak var delegate: ServiceTermsModalCoordinatorDelegate? // MARK: - Setup - init(session: MXSession, baseUrl: String, serviceType: MXServiceType, accessToken: String) { + init(session: MXSession, baseUrl: String, serviceType: MXServiceType, outOfContext: Bool, accessToken: String) { self.navigationRouter = NavigationRouter(navigationController: RiotNavigationController()) self.session = session self.serviceTerms = MXServiceTerms(baseUrl: baseUrl, serviceType: serviceType, matrixSession: session, accessToken: accessToken) + self.outOfContext = outOfContext } // MARK: - Public methods @@ -62,7 +64,7 @@ final class ServiceTermsModalCoordinator: ServiceTermsModalCoordinatorType { // MARK: - Private methods private func createServiceTermsModalLoadTermsScreenCoordinator() -> ServiceTermsModalScreenCoordinator { - let coordinator = ServiceTermsModalScreenCoordinator(serviceTerms: self.serviceTerms) + let coordinator = ServiceTermsModalScreenCoordinator(serviceTerms: self.serviceTerms, outOfContext: self.outOfContext) coordinator.delegate = self return coordinator } @@ -98,6 +100,10 @@ extension ServiceTermsModalCoordinator: ServiceTermsModalScreenCoordinatorDelega self.showPolicy(policy: policy) } + func serviceTermsModalScreenCoordinatorDidDecline(_ coordinator: ServiceTermsModalScreenCoordinatorType) { + self.delegate?.serviceTermsModalCoordinatorDidDecline(self) + } + func serviceTermsModalScreenCoordinatorDidCancel(_ coordinator: ServiceTermsModalScreenCoordinatorType) { self.delegate?.serviceTermsModalCoordinatorDidCancel(self) } diff --git a/Riot/Modules/ServiceTerms/Modal/ServiceTermsModalCoordinatorBridgePresenter.swift b/Riot/Modules/ServiceTerms/Modal/ServiceTermsModalCoordinatorBridgePresenter.swift index f3b05f288..201ea33b1 100644 --- a/Riot/Modules/ServiceTerms/Modal/ServiceTermsModalCoordinatorBridgePresenter.swift +++ b/Riot/Modules/ServiceTerms/Modal/ServiceTermsModalCoordinatorBridgePresenter.swift @@ -20,6 +20,7 @@ import Foundation @objc protocol ServiceTermsModalCoordinatorBridgePresenterDelegate { func serviceTermsModalCoordinatorBridgePresenterDelegateDidAccept(_ coordinatorBridgePresenter: ServiceTermsModalCoordinatorBridgePresenter) + func serviceTermsModalCoordinatorBridgePresenterDelegateDidDecline(_ coordinatorBridgePresenter: ServiceTermsModalCoordinatorBridgePresenter, session: MXSession) func serviceTermsModalCoordinatorBridgePresenterDelegateDidCancel(_ coordinatorBridgePresenter: ServiceTermsModalCoordinatorBridgePresenter) } @@ -35,6 +36,7 @@ final class ServiceTermsModalCoordinatorBridgePresenter: NSObject { private let session: MXSession private let baseUrl: String private let serviceType: MXServiceType + private let outOfContext: Bool private let accessToken: String private var coordinator: ServiceTermsModalCoordinator? @@ -48,10 +50,11 @@ final class ServiceTermsModalCoordinatorBridgePresenter: NSObject { // MARK: - Setup - init(session: MXSession, baseUrl: String, serviceType: MXServiceType, accessToken: String) { + init(session: MXSession, baseUrl: String, serviceType: MXServiceType, outOfContext: Bool = false, accessToken: String) { self.session = session self.baseUrl = baseUrl self.serviceType = serviceType + self.outOfContext = outOfContext self.accessToken = accessToken super.init() } @@ -64,7 +67,7 @@ final class ServiceTermsModalCoordinatorBridgePresenter: NSObject { // } func present(from viewController: UIViewController, animated: Bool) { - let serviceTermsModalCoordinator = ServiceTermsModalCoordinator(session: self.session, baseUrl: self.baseUrl, serviceType: self.serviceType, accessToken: accessToken) + let serviceTermsModalCoordinator = ServiceTermsModalCoordinator(session: self.session, baseUrl: self.baseUrl, serviceType: self.serviceType, outOfContext: self.outOfContext, accessToken: accessToken) serviceTermsModalCoordinator.delegate = self viewController.present(serviceTermsModalCoordinator.toPresentable(), animated: animated, completion: nil) serviceTermsModalCoordinator.start() @@ -97,6 +100,10 @@ extension ServiceTermsModalCoordinatorBridgePresenter: ServiceTermsModalCoordina self.delegate?.serviceTermsModalCoordinatorBridgePresenterDelegateDidAccept(self) } + func serviceTermsModalCoordinatorDidDecline(_ coordinator: ServiceTermsModalCoordinatorType) { + self.delegate?.serviceTermsModalCoordinatorBridgePresenterDelegateDidDecline(self, session: self.session) + } + func serviceTermsModalCoordinatorDidCancel(_ coordinator: ServiceTermsModalCoordinatorType) { self.delegate?.serviceTermsModalCoordinatorBridgePresenterDelegateDidCancel(self) } diff --git a/Riot/Modules/ServiceTerms/Modal/ServiceTermsModalCoordinatorType.swift b/Riot/Modules/ServiceTerms/Modal/ServiceTermsModalCoordinatorType.swift index 27f7b4f8d..84f3386b9 100644 --- a/Riot/Modules/ServiceTerms/Modal/ServiceTermsModalCoordinatorType.swift +++ b/Riot/Modules/ServiceTerms/Modal/ServiceTermsModalCoordinatorType.swift @@ -20,6 +20,7 @@ import Foundation protocol ServiceTermsModalCoordinatorDelegate: class { func serviceTermsModalCoordinatorDidAccept(_ coordinator: ServiceTermsModalCoordinatorType) + func serviceTermsModalCoordinatorDidDecline(_ coordinator: ServiceTermsModalCoordinatorType) func serviceTermsModalCoordinatorDidCancel(_ coordinator: ServiceTermsModalCoordinatorType) } diff --git a/Riot/Modules/Settings/IdentityServer/SettingsIdentityServerViewController.swift b/Riot/Modules/Settings/IdentityServer/SettingsIdentityServerViewController.swift index 515d7b8fa..523a5e1ad 100644 --- a/Riot/Modules/Settings/IdentityServer/SettingsIdentityServerViewController.swift +++ b/Riot/Modules/Settings/IdentityServer/SettingsIdentityServerViewController.swift @@ -387,6 +387,10 @@ extension SettingsIdentityServerViewController: ServiceTermsModalCoordinatorBrid self.hideTerms(accepted: true) } + func serviceTermsModalCoordinatorBridgePresenterDelegateDidDecline(_ coordinatorBridgePresenter: ServiceTermsModalCoordinatorBridgePresenter, session: MXSession) { + self.hideTerms(accepted: false) + } + func serviceTermsModalCoordinatorBridgePresenterDelegateDidCancel(_ coordinatorBridgePresenter: ServiceTermsModalCoordinatorBridgePresenter) { self.hideTerms(accepted: false) }