mirror of
https://github.com/vector-im/element-ios.git
synced 2024-09-28 23:32:41 +00:00
Privacy: IS Settings: Plug the UITextField to the model
This commit is contained in:
parent
9faddc70d4
commit
46702f11d3
5 changed files with 26 additions and 9 deletions
|
@ -518,7 +518,7 @@
|
|||
"identity_server_settings_title" = "Identity Server";
|
||||
|
||||
"identity_server_settings_description" = "You are currently using %@ to discover and be discoverable by existing contacts you know.";
|
||||
"identity_server_settings_no_is_description" = "You are not currently using an identity server. To discover and be discoverable by existing contacts, add one.";
|
||||
"identity_server_settings_no_is_description" = "You are not currently using an identity server. To discover and be discoverable by existing contacts, add one above.";
|
||||
|
||||
"identity_server_settings_add" = "Add";
|
||||
"identity_server_settings_change" = "Change";
|
||||
|
|
|
@ -1170,7 +1170,7 @@ internal enum VectorL10n {
|
|||
internal static var identityServerSettingsDisconnectInfo: String {
|
||||
return VectorL10n.tr("Vector", "identity_server_settings_disconnect_info")
|
||||
}
|
||||
/// You are not currently using an identity server. To discover and be discoverable by existing contacts, add one.
|
||||
/// You are not currently using an identity server. To discover and be discoverable by existing contacts, add one above.
|
||||
internal static var identityServerSettingsNoIsDescription: String {
|
||||
return VectorL10n.tr("Vector", "identity_server_settings_no_is_description")
|
||||
}
|
||||
|
|
|
@ -136,6 +136,8 @@ final class SettingsIdentityServerViewController: UIViewController {
|
|||
|
||||
self.identityServerLabel.text = VectorL10n.identityServerSettingsTitle
|
||||
|
||||
self.identityServerTextField.addTarget(self, action: #selector(identityServerTextFieldDidChange(_:)), for: .editingChanged)
|
||||
|
||||
self.disconnectMessageLabel.text = VectorL10n.identityServerSettingsDisconnectInfo
|
||||
self.disconnectButton.setTitle(VectorL10n.identityServerSettingsDisconnect, for: .normal)
|
||||
self.disconnectButton.setTitle(VectorL10n.identityServerSettingsDisconnect, for: .highlighted)
|
||||
|
@ -159,6 +161,8 @@ final class SettingsIdentityServerViewController: UIViewController {
|
|||
private func renderLoaded(displayMode: SettingsIdentityServerDisplayMode) {
|
||||
self.activityPresenter.removeCurrentActivityIndicator(animated: true)
|
||||
|
||||
self.displayMode = displayMode
|
||||
|
||||
switch displayMode {
|
||||
case .noIdentityServer:
|
||||
self.renderNoIdentityServer()
|
||||
|
@ -179,12 +183,10 @@ final class SettingsIdentityServerViewController: UIViewController {
|
|||
|
||||
private func renderIdentityServer(host: String) {
|
||||
|
||||
let hostname = URL(string: host)?.host ?? host
|
||||
|
||||
self.identityServerTextField.text = host
|
||||
self.identityServerTextField.placeholder = RiotDefaults.identityserverurl
|
||||
|
||||
self.messageLabel.text = VectorL10n.identityServerSettingsDescription(hostname)
|
||||
self.messageLabel.text = VectorL10n.identityServerSettingsDescription(host.hostname())
|
||||
|
||||
self.addOrChangeButton.setTitle(VectorL10n.identityServerSettingsChange, for: .normal)
|
||||
self.addOrChangeButton.setTitle(VectorL10n.identityServerSettingsChange, for: .highlighted)
|
||||
|
@ -205,12 +207,17 @@ final class SettingsIdentityServerViewController: UIViewController {
|
|||
|
||||
// MARK: - Actions
|
||||
|
||||
@IBAction private func addOrChangeButtonAction(_ sender: Any) {
|
||||
guard let displayMode = self.displayMode else {
|
||||
return
|
||||
@objc private func identityServerTextFieldDidChange(_ textField: UITextField) {
|
||||
self.addOrChangeButton.isUserInteractionEnabled = textField.text?.count ?? 0 > 0
|
||||
&& (textField.text?.hostname() != self.viewModel.identityServer?.hostname())
|
||||
}
|
||||
|
||||
let identityServer = "TODO"
|
||||
@IBAction private func addOrChangeButtonAction(_ sender: Any) {
|
||||
self.identityServerTextField.resignFirstResponder()
|
||||
|
||||
guard let displayMode = self.displayMode, let identityServer = self.identityServerTextField.text else {
|
||||
return
|
||||
}
|
||||
|
||||
let viewAction: SettingsIdentityServerViewAction?
|
||||
|
||||
|
@ -240,3 +247,9 @@ extension SettingsIdentityServerViewController: SettingsIdentityServerViewModelV
|
|||
self.render(viewState: viewState)
|
||||
}
|
||||
}
|
||||
|
||||
fileprivate extension String {
|
||||
func hostname() -> String {
|
||||
return URL(string: self)?.host ?? self
|
||||
}
|
||||
}
|
||||
|
|
|
@ -47,6 +47,7 @@ final class SettingsIdentityServerViewModel: SettingsIdentityServerViewModelType
|
|||
// MARK: Public
|
||||
|
||||
weak var viewDelegate: SettingsIdentityServerViewModelViewDelegate?
|
||||
var identityServer: String?
|
||||
|
||||
// MARK: - Setup
|
||||
|
||||
|
@ -125,6 +126,7 @@ final class SettingsIdentityServerViewModel: SettingsIdentityServerViewModelType
|
|||
private func refreshIdentityServerViewState() {
|
||||
if let identityService = self.session.identityService {
|
||||
let host = identityService.identityServer
|
||||
self.identityServer = host
|
||||
self.update(viewState: .loaded(displayMode: .identityServer(host: host)))
|
||||
} else {
|
||||
self.update(viewState: .loaded(displayMode: .noIdentityServer))
|
||||
|
|
|
@ -27,5 +27,7 @@ protocol SettingsIdentityServerViewModelType {
|
|||
|
||||
var viewDelegate: SettingsIdentityServerViewModelViewDelegate? { get set }
|
||||
|
||||
var identityServer: String? { get }
|
||||
|
||||
func process(viewAction: SettingsIdentityServerViewAction)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue