adding accessibility ids and label to extract session id and recovery phrase and adding ids for message requests workflow

pull/713/head
Emily 2 years ago
parent 1ff5a69f50
commit 2159ec149e

@ -195,6 +195,7 @@ final class ConversationVC: BaseVC, ConversationSearchControllerDelegate, UITabl
messageLabelAccessibilityLabel: "Blocked banner text" messageLabelAccessibilityLabel: "Blocked banner text"
) )
result.accessibilityLabel = "Blocked banner" result.accessibilityLabel = "Blocked banner"
result.isAccessibilityElement = true
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(unblock)) let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(unblock))
result.addGestureRecognizer(tapGestureRecognizer) result.addGestureRecognizer(tapGestureRecognizer)
@ -243,6 +244,7 @@ final class ConversationVC: BaseVC, ConversationSearchControllerDelegate, UITabl
private lazy var messageRequestAcceptButton: UIButton = { private lazy var messageRequestAcceptButton: UIButton = {
let result: SessionButton = SessionButton(style: .bordered, size: .medium) let result: SessionButton = SessionButton(style: .bordered, size: .medium)
result.accessibilityLabel = "Accept message request" result.accessibilityLabel = "Accept message request"
result.isAccessibilityElement = true
result.translatesAutoresizingMaskIntoConstraints = false result.translatesAutoresizingMaskIntoConstraints = false
result.setTitle("TXT_DELETE_ACCEPT".localized(), for: .normal) result.setTitle("TXT_DELETE_ACCEPT".localized(), for: .normal)
result.addTarget(self, action: #selector(acceptMessageRequest), for: .touchUpInside) result.addTarget(self, action: #selector(acceptMessageRequest), for: .touchUpInside)
@ -253,6 +255,7 @@ final class ConversationVC: BaseVC, ConversationSearchControllerDelegate, UITabl
private lazy var messageRequestDeleteButton: UIButton = { private lazy var messageRequestDeleteButton: UIButton = {
let result: SessionButton = SessionButton(style: .destructive, size: .medium) let result: SessionButton = SessionButton(style: .destructive, size: .medium)
result.accessibilityLabel = "Decline message request" result.accessibilityLabel = "Decline message request"
result.isAccessibilityElement = true
result.translatesAutoresizingMaskIntoConstraints = false result.translatesAutoresizingMaskIntoConstraints = false
result.setTitle("TXT_DECLINE_TITLE".localized(), for: .normal) result.setTitle("TXT_DECLINE_TITLE".localized(), for: .normal)
result.addTarget(self, action: #selector(deleteMessageRequest), for: .touchUpInside) result.addTarget(self, action: #selector(deleteMessageRequest), for: .touchUpInside)

@ -53,6 +53,7 @@ final class InputView: UIView, InputViewButtonDelegate, InputTextViewDelegate, M
private lazy var attachmentsButton: ExpandingAttachmentsButton = { private lazy var attachmentsButton: ExpandingAttachmentsButton = {
let result = ExpandingAttachmentsButton(delegate: delegate) let result = ExpandingAttachmentsButton(delegate: delegate)
result.accessibilityLabel = "Attachments button" result.accessibilityLabel = "Attachments button"
result.isAccessibilityElement = true
return result return result
}() }()
@ -60,6 +61,7 @@ final class InputView: UIView, InputViewButtonDelegate, InputTextViewDelegate, M
private lazy var voiceMessageButton: InputViewButton = { private lazy var voiceMessageButton: InputViewButton = {
let result = InputViewButton(icon: #imageLiteral(resourceName: "Microphone"), delegate: self) let result = InputViewButton(icon: #imageLiteral(resourceName: "Microphone"), delegate: self)
result.accessibilityLabel = "New voice message" result.accessibilityLabel = "New voice message"
result.isAccessibilityElement = true
return result return result
}() }()
@ -68,6 +70,7 @@ final class InputView: UIView, InputViewButtonDelegate, InputTextViewDelegate, M
let result = InputViewButton(icon: #imageLiteral(resourceName: "ArrowUp"), isSendButton: true, delegate: self) let result = InputViewButton(icon: #imageLiteral(resourceName: "ArrowUp"), isSendButton: true, delegate: self)
result.isHidden = true result.isHidden = true
result.accessibilityLabel = "Send message button" result.accessibilityLabel = "Send message button"
result.isAccessibilityElement = true
return result return result
}() }()
@ -83,6 +86,7 @@ final class InputView: UIView, InputViewButtonDelegate, InputTextViewDelegate, M
private lazy var mentionsViewContainer: UIView = { private lazy var mentionsViewContainer: UIView = {
let result: UIView = UIView() let result: UIView = UIView()
result.accessibilityLabel = "Mentions list" result.accessibilityLabel = "Mentions list"
result.isAccessibilityElement = true
result.alpha = 0 result.alpha = 0
let backgroundView = UIView() let backgroundView = UIView()
@ -114,6 +118,7 @@ final class InputView: UIView, InputViewButtonDelegate, InputTextViewDelegate, M
let maxWidth = UIScreen.main.bounds.width - 2 * InputViewButton.expandedSize - 2 * Values.smallSpacing - 2 * (Values.mediumSpacing - adjustment) let maxWidth = UIScreen.main.bounds.width - 2 * InputViewButton.expandedSize - 2 * Values.smallSpacing - 2 * (Values.mediumSpacing - adjustment)
let result = InputTextView(delegate: self, maxWidth: maxWidth) let result = InputTextView(delegate: self, maxWidth: maxWidth)
result.accessibilityLabel = "Message input box" result.accessibilityLabel = "Message input box"
result.isAccessibilityElement = true
return result return result
}() }()

@ -109,6 +109,7 @@ final class HomeVC: BaseVC, UITableViewDataSource, UITableViewDelegate, SeedRemi
let button = UIButton() let button = UIButton()
button.accessibilityLabel = "New conversation button" button.accessibilityLabel = "New conversation button"
button.isAccessibilityElement = true
button.clipsToBounds = true button.clipsToBounds = true
button.setImage( button.setImage(
UIImage(named: "Plus")? UIImage(named: "Plus")?
@ -466,6 +467,7 @@ final class HomeVC: BaseVC, UITableViewDataSource, UITableViewDelegate, SeedRemi
let profilePictureSize = Values.verySmallProfilePictureSize let profilePictureSize = Values.verySmallProfilePictureSize
let profilePictureView = ProfilePictureView() let profilePictureView = ProfilePictureView()
profilePictureView.accessibilityLabel = "User settings" profilePictureView.accessibilityLabel = "User settings"
profilePictureView.isAccessibilityElement = true
profilePictureView.size = profilePictureSize profilePictureView.size = profilePictureSize
profilePictureView.update( profilePictureView.update(
publicKey: getUserHexEncodedPublicKey(), publicKey: getUserHexEncodedPublicKey(),
@ -521,6 +523,8 @@ final class HomeVC: BaseVC, UITableViewDataSource, UITableViewDelegate, SeedRemi
case .messageRequests: case .messageRequests:
let threadViewModel: SessionThreadViewModel = section.elements[indexPath.row] let threadViewModel: SessionThreadViewModel = section.elements[indexPath.row]
let cell: MessageRequestsCell = tableView.dequeue(type: MessageRequestsCell.self, for: indexPath) let cell: MessageRequestsCell = tableView.dequeue(type: MessageRequestsCell.self, for: indexPath)
cell.accessibilityIdentifier = "Message requests banner"
cell.isAccessibilityElement = true
cell.update(with: Int(threadViewModel.threadUnreadCount ?? 0)) cell.update(with: Int(threadViewModel.threadUnreadCount ?? 0))
return cell return cell

@ -311,6 +311,8 @@ class MessageRequestsViewController: BaseVC, UITableViewDelegate, UITableViewDat
case .threads: case .threads:
let threadViewModel: SessionThreadViewModel = section.elements[indexPath.row] let threadViewModel: SessionThreadViewModel = section.elements[indexPath.row]
let cell: FullConversationCell = tableView.dequeue(type: FullConversationCell.self, for: indexPath) let cell: FullConversationCell = tableView.dequeue(type: FullConversationCell.self, for: indexPath)
cell.accessibilityIdentifier = "Message request"
cell.isAccessibilityElement = true
cell.update(with: threadViewModel) cell.update(with: threadViewModel)
return cell return cell

@ -16,7 +16,8 @@ final class NewConversationVC: BaseVC, ThemedNavigation, UITableViewDelegate, UI
private lazy var newDMButton: NewConversationButton = { private lazy var newDMButton: NewConversationButton = {
let result = NewConversationButton(icon: #imageLiteral(resourceName: "Message"), title: "vc_create_private_chat_title".localized()) let result = NewConversationButton(icon: #imageLiteral(resourceName: "Message"), title: "vc_create_private_chat_title".localized())
result.accessibilityLabel = "New direct message" result.accessibilityIdentifier = "New direct message"
result.isAccessibilityElement = true
return result return result
}() }()
@ -24,6 +25,7 @@ final class NewConversationVC: BaseVC, ThemedNavigation, UITableViewDelegate, UI
private lazy var newGroupButton: NewConversationButton = { private lazy var newGroupButton: NewConversationButton = {
let result = NewConversationButton(icon: #imageLiteral(resourceName: "Group"), title: "vc_create_closed_group_title".localized()) let result = NewConversationButton(icon: #imageLiteral(resourceName: "Group"), title: "vc_create_closed_group_title".localized())
result.accessibilityLabel = "Create group" result.accessibilityLabel = "Create group"
result.isAccessibilityElement = true
return result return result
}() }()

@ -382,13 +382,15 @@ private final class EnterPublicKeyVC: UIViewController {
) )
result.alpha = (isKeyboardShowing ? 1 : 0) result.alpha = (isKeyboardShowing ? 1 : 0)
result.isHidden = !isKeyboardShowing result.isHidden = !isKeyboardShowing
result.accessibilityLabel = "Next"
result.isAccessibilityElement = true
return result return result
}() }()
private lazy var nextButton: SessionButton = { private lazy var nextButton: SessionButton = {
let result = SessionButton(style: .bordered, size: .large) let result = SessionButton(style: .bordered, size: .large)
result.accessibilityLabel = "Next" result.accessibilityLabel = "Next"
result.isAccessibilityElement = true
result.setTitle("next".localized(), for: .normal) result.setTitle("next".localized(), for: .normal)
result.isEnabled = false result.isEnabled = false
result.addTarget(self, action: #selector(startNewDMIfPossible), for: .touchUpInside) result.addTarget(self, action: #selector(startNewDMIfPossible), for: .touchUpInside)

@ -16,6 +16,7 @@ final class DisplayNameVC: BaseVC {
private lazy var displayNameTextField: TextField = { private lazy var displayNameTextField: TextField = {
let result = TextField(placeholder: "vc_display_name_text_field_hint".localized()) let result = TextField(placeholder: "vc_display_name_text_field_hint".localized())
result.accessibilityLabel = "Enter display name" result.accessibilityLabel = "Enter display name"
result.isAccessibilityElement = true
result.themeBorderColor = .textPrimary result.themeBorderColor = .textPrimary
return result return result

@ -18,6 +18,7 @@ final class RegisterVC : BaseVC {
result.font = Fonts.spaceMono(ofSize: isIPhone5OrSmaller ? Values.mediumFontSize : 20) result.font = Fonts.spaceMono(ofSize: isIPhone5OrSmaller ? Values.mediumFontSize : 20)
result.themeTextColor = .textPrimary result.themeTextColor = .textPrimary
result.accessibilityLabel = "Session ID" result.accessibilityLabel = "Session ID"
result.isAccessibilityElement = true
result.lineBreakMode = .byCharWrapping result.lineBreakMode = .byCharWrapping
result.numberOfLines = 0 result.numberOfLines = 0
@ -26,6 +27,8 @@ final class RegisterVC : BaseVC {
private lazy var copyPublicKeyButton: SessionButton = { private lazy var copyPublicKeyButton: SessionButton = {
let result = SessionButton(style: .bordered, size: .large) let result = SessionButton(style: .bordered, size: .large)
result.accessibilityLabel = "Copy"
result.isAccessibilityElement = true
result.setTitle("copy".localized(), for: .normal) result.setTitle("copy".localized(), for: .normal)
result.addTarget(self, action: #selector(copyPublicKey), for: .touchUpInside) result.addTarget(self, action: #selector(copyPublicKey), for: .touchUpInside)
@ -168,6 +171,8 @@ final class RegisterVC : BaseVC {
private func updatePublicKeyLabel() { private func updatePublicKeyLabel() {
let hexEncodedPublicKey = x25519KeyPair.hexEncodedPublicKey let hexEncodedPublicKey = x25519KeyPair.hexEncodedPublicKey
publicKeyLabel.accessibilityLabel = hexEncodedPublicKey
publicKeyLabel.accessibilityIdentifier = "Session ID generated"
let characterCount = hexEncodedPublicKey.count let characterCount = hexEncodedPublicKey.count
var count = 0 var count = 0
let limit = 32 let limit = 32
@ -203,6 +208,8 @@ final class RegisterVC : BaseVC {
@objc private func copyPublicKey() { @objc private func copyPublicKey() {
UIPasteboard.general.string = x25519KeyPair.hexEncodedPublicKey UIPasteboard.general.string = x25519KeyPair.hexEncodedPublicKey
copyPublicKeyButton.isUserInteractionEnabled = false copyPublicKeyButton.isUserInteractionEnabled = false
copyPublicKeyButton.accessibilityLabel = "Copy session id"
copyPublicKeyButton.isAccessibilityElement = true
UIView.transition(with: copyPublicKeyButton, duration: 0.25, options: .transitionCrossDissolve, animations: { UIView.transition(with: copyPublicKeyButton, duration: 0.25, options: .transitionCrossDissolve, animations: {
self.copyPublicKeyButton.setTitle("copied".localized(), for: .normal) self.copyPublicKeyButton.setTitle("copied".localized(), for: .normal)
}, completion: nil) }, completion: nil)

@ -83,6 +83,7 @@ final class SeedReminderView: UIView {
// Set up button // Set up button
let button = SessionButton(style: .bordered, size: .small) let button = SessionButton(style: .bordered, size: .small)
button.accessibilityLabel = "Continue" button.accessibilityLabel = "Continue"
button.isAccessibilityElement = true
button.setTitle("continue_2".localized(), for: UIControl.State.normal) button.setTitle("continue_2".localized(), for: UIControl.State.normal)
button.set(.width, to: 96) button.set(.width, to: 96)
button.addTarget(self, action: #selector(handleContinueButtonTapped), for: UIControl.Event.touchUpInside) button.addTarget(self, action: #selector(handleContinueButtonTapped), for: UIControl.Event.touchUpInside)

@ -46,7 +46,9 @@ final class SeedVC: BaseVC {
private lazy var mnemonicLabel: UILabel = { private lazy var mnemonicLabel: UILabel = {
let result = UILabel() let result = UILabel()
result.accessibilityLabel = "Recovery Phrase" result.accessibilityIdentifier = "Recovery Phrase"
result.accessibilityLabel = mnemonic
result.isAccessibilityElement = true
result.font = Fonts.spaceMono(ofSize: Values.mediumFontSize) result.font = Fonts.spaceMono(ofSize: Values.mediumFontSize)
result.themeTextColor = .primary result.themeTextColor = .primary
result.textAlignment = .center result.textAlignment = .center
@ -74,6 +76,7 @@ final class SeedVC: BaseVC {
// Set up navigation bar buttons // Set up navigation bar buttons
let closeButton = UIBarButtonItem(image: #imageLiteral(resourceName: "X"), style: .plain, target: self, action: #selector(close)) let closeButton = UIBarButtonItem(image: #imageLiteral(resourceName: "X"), style: .plain, target: self, action: #selector(close))
closeButton.accessibilityLabel = "Navigate up" closeButton.accessibilityLabel = "Navigate up"
closeButton.isAccessibilityElement = true
closeButton.themeTintColor = .textPrimary closeButton.themeTintColor = .textPrimary
navigationItem.leftBarButtonItem = closeButton navigationItem.leftBarButtonItem = closeButton

@ -214,6 +214,7 @@ class SettingsViewModel: SessionTableViewModel<SettingsViewModel.NavButton, Sett
run: { [weak self] button in run: { [weak self] button in
self?.copySessionId(profile.id, button: button) self?.copySessionId(profile.id, button: button)
} }
), ),
SessionCell.Accessory.ThreadInfoStyle.Action( SessionCell.Accessory.ThreadInfoStyle.Action(
title: "share".localized(), title: "share".localized(),
@ -494,6 +495,8 @@ class SettingsViewModel: SessionTableViewModel<SettingsViewModel.NavButton, Sett
DispatchQueue.main.async { DispatchQueue.main.async {
button.isUserInteractionEnabled = false button.isUserInteractionEnabled = false
UIView.transition( UIView.transition(
with: button, with: button,
duration: 0.25, duration: 0.25,

@ -53,6 +53,7 @@ class SessionAvatarCell: UITableViewCell {
fileprivate let profilePictureView: ProfilePictureView = { fileprivate let profilePictureView: ProfilePictureView = {
let view: ProfilePictureView = ProfilePictureView() let view: ProfilePictureView = ProfilePictureView()
view.accessibilityLabel = "Profile picture" view.accessibilityLabel = "Profile picture"
view.isAccessibilityElement = true
view.translatesAutoresizingMaskIntoConstraints = false view.translatesAutoresizingMaskIntoConstraints = false
view.size = Values.largeProfilePictureSize view.size = Values.largeProfilePictureSize
@ -71,6 +72,7 @@ class SessionAvatarCell: UITableViewCell {
private lazy var displayNameLabel: UILabel = { private lazy var displayNameLabel: UILabel = {
let label: UILabel = UILabel() let label: UILabel = UILabel()
label.accessibilityLabel = "Username" label.accessibilityLabel = "Username"
label.isAccessibilityElement = true
label.translatesAutoresizingMaskIntoConstraints = false label.translatesAutoresizingMaskIntoConstraints = false
label.font = .ows_mediumFont(withSize: Values.veryLargeFontSize) label.font = .ows_mediumFont(withSize: Values.veryLargeFontSize)
label.themeTextColor = .textPrimary label.themeTextColor = .textPrimary

Loading…
Cancel
Save