diff --git a/Riot/Assets/en.lproj/Vector.strings b/Riot/Assets/en.lproj/Vector.strings index 84c55490c..eb6f15cb5 100644 --- a/Riot/Assets/en.lproj/Vector.strings +++ b/Riot/Assets/en.lproj/Vector.strings @@ -695,6 +695,8 @@ "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_accept_button" = "Accept"; +"service_terms_modal_description_for_identity_server" = "Be discoverable by others"; +"service_terms_modal_description_for_integration_manager" = "Use Bots, bridges, widgets and sticker packs"; // Deactivate account diff --git a/Riot/Generated/Strings.swift b/Riot/Generated/Strings.swift index 400c25f10..2e97b5642 100644 --- a/Riot/Generated/Strings.swift +++ b/Riot/Generated/Strings.swift @@ -2346,6 +2346,14 @@ 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") + } + /// 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. internal static var serviceTermsModalMessage: String { return VectorL10n.tr("Vector", "service_terms_modal_message") diff --git a/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewController.swift b/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewController.swift index 24dad156a..54e24b3aa 100644 --- a/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewController.swift +++ b/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewController.swift @@ -231,7 +231,8 @@ extension ServiceTermsModalScreenViewController: UITableViewDataSource { let policy = policies[indexPath.row] let checked = checkedPolicies.contains(indexPath.row) - cell.label.text = policy.name + cell.label.attributedText = self.cellLabel(for: policy) + cell.label.font = .systemFont(ofSize: 15) cell.isEnabled = checked cell.accessoryType = .disclosureIndicator cell.backgroundColor = self.theme.backgroundColor @@ -248,6 +249,29 @@ extension ServiceTermsModalScreenViewController: UITableViewDataSource { return cell } + + func cellLabel(for policy: MXLoginPolicyData) -> NSAttributedString { + + // TableViewCellWithCheckBoxAndLabel does not have a detailTextLabel + // Do it by hand + + var labelDetail: String = "" + switch self.viewModel.serviceType { + case MXServiceTypeIdentityService: + labelDetail = VectorL10n.serviceTermsModalDescriptionForIdentityServer + case MXServiceTypeIntegrationManager: + labelDetail = VectorL10n.serviceTermsModalDescriptionForIntegrationManager + default: break + } + + let label = NSMutableAttributedString(string: policy.name, + attributes: [.foregroundColor: theme.textPrimaryColor]) + label.append(NSAttributedString(string: "\n")) + label.append(NSAttributedString(string: labelDetail, + attributes: [.foregroundColor: theme.textSecondaryColor])) + + return label + } } extension ServiceTermsModalScreenViewController: UITableViewDelegate { diff --git a/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewModel.swift b/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewModel.swift index 63b288b0a..d2cfde3db 100644 --- a/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewModel.swift +++ b/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewModel.swift @@ -29,6 +29,9 @@ final class ServiceTermsModalScreenViewModel: ServiceTermsModalScreenViewModelTy // MARK: Public var policies: [MXLoginPolicyData]? + var serviceType: MXServiceType { + return serviceTerms.serviceType + } weak var viewDelegate: ServiceTermsModalScreenViewModelViewDelegate? weak var coordinatorDelegate: ServiceTermsModalScreenViewModelCoordinatorDelegate? diff --git a/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewModelType.swift b/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewModelType.swift index 2d3617c66..bf33c9090 100644 --- a/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewModelType.swift +++ b/Riot/Modules/ServiceTerms/Modal/Modal/ServiceTermsModalScreenViewModelType.swift @@ -32,6 +32,7 @@ protocol ServiceTermsModalScreenViewModelCoordinatorDelegate: class { protocol ServiceTermsModalScreenViewModelType { var policies: [MXLoginPolicyData]? { get set } + var serviceType: MXServiceType { get } var viewDelegate: ServiceTermsModalScreenViewModelViewDelegate? { get set } var coordinatorDelegate: ServiceTermsModalScreenViewModelCoordinatorDelegate? { get set }