diff options
| author | Andrej Mihajlov <and@mullvad.net> | 2022-07-01 09:15:18 +0200 |
|---|---|---|
| committer | Andrej Mihajlov <and@mullvad.net> | 2022-07-01 10:00:43 +0200 |
| commit | 8952feaecde7ce892cb99e887da7b029b10f1b95 (patch) | |
| tree | 237dae1230cdd4570eae1bcae76ae6d065a069c3 | |
| parent | c2074223d06bb29b025d8541d26b23ae431f70a4 (diff) | |
| parent | 9bbb2a5a590ad1a1fd506f986c04e3a132eede3a (diff) | |
| download | mullvadvpn-8952feaecde7ce892cb99e887da7b029b10f1b95.tar.xz mullvadvpn-8952feaecde7ce892cb99e887da7b029b10f1b95.zip | |
Merge branch 'improve-login-ax'
| -rw-r--r-- | ios/MullvadVPN/AccountInputGroupView.swift | 68 |
1 files changed, 51 insertions, 17 deletions
diff --git a/ios/MullvadVPN/AccountInputGroupView.swift b/ios/MullvadVPN/AccountInputGroupView.swift index 6dfff6301d..71b7a6a52f 100644 --- a/ios/MullvadVPN/AccountInputGroupView.swift +++ b/ios/MullvadVPN/AccountInputGroupView.swift @@ -90,10 +90,13 @@ class AccountInputGroupView: UIView { let view = UIView() view.translatesAutoresizingMaskIntoConstraints = false view.backgroundColor = .white.withAlphaComponent(0.8) + view.accessibilityElementsHidden = true return view }() + private var showsLastUsedAccountRow: Bool = false + private let lastUsedAccountButton: UIButton = { let button = UIButton(type: .system) button.translatesAutoresizingMaskIntoConstraints = false @@ -102,7 +105,12 @@ class AccountInputGroupView: UIView { button.contentHorizontalAlignment = .leading button.contentEdgeInsets = UIMetrics.textFieldMargins button.setTitleColor(UIColor.AccountTextField.NormalState.textColor, for: .normal) - + button.accessibilityLabel = NSLocalizedString( + "LAST_USED_ACCOUNT_ACCESSIBILITY_LABEL", + tableName: "AccountInput", + value: "Last used account", + comment: "" + ) return button }() @@ -111,7 +119,12 @@ class AccountInputGroupView: UIView { button.translatesAutoresizingMaskIntoConstraints = false button.setImage(UIImage(named: "IconCloseSml"), for: .normal) button.imageView?.tintColor = .primaryColor.withAlphaComponent(0.4) - + button.accessibilityLabel = NSLocalizedString( + "REMOVE_LAST_USED_ACCOUNT_ACCESSIBILITY_LABEL", + tableName: "AccountInput", + value: "Remove last used account", + comment: "" + ) return button }() @@ -303,6 +316,16 @@ class AccountInputGroupView: UIView { if let accountNumber = accountNumber { let formattedNumber = StringFormatter.formattedAccountNumber(from: accountNumber) + var attributes: [NSAttributedString.Key: Any]? + if #available(iOS 13.0, *) { + attributes = [.accessibilitySpeechSpellOut: true] + } + + lastUsedAccountButton.accessibilityAttributedValue = NSAttributedString( + string: accountNumber, + attributes: attributes + ) + UIView.performWithoutAnimation { self.lastUsedAccountButton.setTitle(formattedNumber, for: .normal) self.lastUsedAccountButton.layoutIfNeeded() @@ -411,29 +434,31 @@ class AccountInputGroupView: UIView { } } - private func updateLastUsedAccountConstraints(animated: Bool) { - var shouldExpand: Bool - - if lastUsedAccount == nil { - shouldExpand = false - } else { - switch loginState { - case .authenticating, .success: - shouldExpand = false - case .default, .failure: - shouldExpand = true - } + private func shouldShowLastUsedAccountRow() -> Bool { + guard lastUsedAccount != nil else { + return false } - updateLastUsedAccountConstraints(isExpanded: shouldExpand, animated: animated) + switch loginState { + case .authenticating, .success: + return false + case .default, .failure: + return true + } } - private func updateLastUsedAccountConstraints(isExpanded: Bool, animated: Bool) { + private func updateLastUsedAccountConstraints(animated: Bool) { + let shouldShow = shouldShowLastUsedAccountRow() + + guard showsLastUsedAccountRow != shouldShow else { + return + } + let actions = { let constraintToDeactivate: NSLayoutConstraint let constraintToActivate: NSLayoutConstraint - if isExpanded { + if shouldShow { constraintToActivate = self.lastUsedAccountVisibleConstraint constraintToDeactivate = self.lastUsedAccountHiddenConstraint } else { @@ -454,6 +479,15 @@ class AccountInputGroupView: UIView { actions() setNeedsLayout() } + + showsLastUsedAccountRow = shouldShow + + bottomRowView.accessibilityElementsHidden = !shouldShow + + if lastUsedAccountButton.accessibilityElementIsFocused() || + removeLastUsedAccountButton.accessibilityElementIsFocused() { + UIAccessibility.post(notification: .layoutChanged, argument: textField) + } } private func updateSendButtonAppearance(animated: Bool) { |
