Fixed an accessibility regression

This commit is contained in:
Morgan Pretty 2023-04-26 15:13:39 +10:00
parent 56164ab7f4
commit 2983086837
13 changed files with 107 additions and 96 deletions

View File

@ -688,7 +688,6 @@
FD71164628E2CC1300B47552 /* SessionHighlightingBackgroundLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD71164528E2CC1300B47552 /* SessionHighlightingBackgroundLabel.swift */; }; FD71164628E2CC1300B47552 /* SessionHighlightingBackgroundLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD71164528E2CC1300B47552 /* SessionHighlightingBackgroundLabel.swift */; };
FD71164828E2CE8700B47552 /* SessionCell+AccessoryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD71164728E2CE8700B47552 /* SessionCell+AccessoryView.swift */; }; FD71164828E2CE8700B47552 /* SessionCell+AccessoryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD71164728E2CE8700B47552 /* SessionCell+AccessoryView.swift */; };
FD71164A28E3EA5B00B47552 /* DismissType.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD71164928E3EA5B00B47552 /* DismissType.swift */; }; FD71164A28E3EA5B00B47552 /* DismissType.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD71164928E3EA5B00B47552 /* DismissType.swift */; };
FD71164C28E3F5AA00B47552 /* SessionCell+Accessibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD71164B28E3F5AA00B47552 /* SessionCell+Accessibility.swift */; };
FD71164E28E3F8CC00B47552 /* SessionCell+Info.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD71164D28E3F8CC00B47552 /* SessionCell+Info.swift */; }; FD71164E28E3F8CC00B47552 /* SessionCell+Info.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD71164D28E3F8CC00B47552 /* SessionCell+Info.swift */; };
FD71165028E3F9FA00B47552 /* SessionTableViewModel+NavItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD71164F28E3F9FA00B47552 /* SessionTableViewModel+NavItem.swift */; }; FD71165028E3F9FA00B47552 /* SessionTableViewModel+NavItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD71164F28E3F9FA00B47552 /* SessionTableViewModel+NavItem.swift */; };
FD71165228E410BE00B47552 /* SessionTableSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD71165128E410BE00B47552 /* SessionTableSection.swift */; }; FD71165228E410BE00B47552 /* SessionTableSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD71165128E410BE00B47552 /* SessionTableSection.swift */; };
@ -822,6 +821,7 @@
FDDF074429C3E3D000E5E8B5 /* FetchRequest+Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDDF074329C3E3D000E5E8B5 /* FetchRequest+Utilities.swift */; }; FDDF074429C3E3D000E5E8B5 /* FetchRequest+Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDDF074329C3E3D000E5E8B5 /* FetchRequest+Utilities.swift */; };
FDE658A129418C7900A33BC1 /* CryptoKit+Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDE658A029418C7900A33BC1 /* CryptoKit+Utilities.swift */; }; FDE658A129418C7900A33BC1 /* CryptoKit+Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDE658A029418C7900A33BC1 /* CryptoKit+Utilities.swift */; };
FDE658A329418E2F00A33BC1 /* KeyPair.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDE658A229418E2F00A33BC1 /* KeyPair.swift */; }; FDE658A329418E2F00A33BC1 /* KeyPair.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDE658A229418E2F00A33BC1 /* KeyPair.swift */; };
FDE6E99829F8E63A00F93C5D /* Accessibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDE6E99729F8E63A00F93C5D /* Accessibility.swift */; };
FDE77F6B280FEB28002CFC5D /* ControlMessageProcessRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDE77F6A280FEB28002CFC5D /* ControlMessageProcessRecord.swift */; }; FDE77F6B280FEB28002CFC5D /* ControlMessageProcessRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDE77F6A280FEB28002CFC5D /* ControlMessageProcessRecord.swift */; };
FDED2E3C282E1B5D00B2CD2A /* UICollectionView+ReusableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDED2E3B282E1B5D00B2CD2A /* UICollectionView+ReusableView.swift */; }; FDED2E3C282E1B5D00B2CD2A /* UICollectionView+ReusableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDED2E3B282E1B5D00B2CD2A /* UICollectionView+ReusableView.swift */; };
FDF0B73C27FFD3D6004C14C5 /* LinkPreview.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDF0B73B27FFD3D6004C14C5 /* LinkPreview.swift */; }; FDF0B73C27FFD3D6004C14C5 /* LinkPreview.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDF0B73B27FFD3D6004C14C5 /* LinkPreview.swift */; };
@ -1824,7 +1824,6 @@
FD71164528E2CC1300B47552 /* SessionHighlightingBackgroundLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionHighlightingBackgroundLabel.swift; sourceTree = "<group>"; }; FD71164528E2CC1300B47552 /* SessionHighlightingBackgroundLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionHighlightingBackgroundLabel.swift; sourceTree = "<group>"; };
FD71164728E2CE8700B47552 /* SessionCell+AccessoryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SessionCell+AccessoryView.swift"; sourceTree = "<group>"; }; FD71164728E2CE8700B47552 /* SessionCell+AccessoryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SessionCell+AccessoryView.swift"; sourceTree = "<group>"; };
FD71164928E3EA5B00B47552 /* DismissType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DismissType.swift; sourceTree = "<group>"; }; FD71164928E3EA5B00B47552 /* DismissType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DismissType.swift; sourceTree = "<group>"; };
FD71164B28E3F5AA00B47552 /* SessionCell+Accessibility.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SessionCell+Accessibility.swift"; sourceTree = "<group>"; };
FD71164D28E3F8CC00B47552 /* SessionCell+Info.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SessionCell+Info.swift"; sourceTree = "<group>"; }; FD71164D28E3F8CC00B47552 /* SessionCell+Info.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SessionCell+Info.swift"; sourceTree = "<group>"; };
FD71164F28E3F9FA00B47552 /* SessionTableViewModel+NavItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SessionTableViewModel+NavItem.swift"; sourceTree = "<group>"; }; FD71164F28E3F9FA00B47552 /* SessionTableViewModel+NavItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SessionTableViewModel+NavItem.swift"; sourceTree = "<group>"; };
FD71165128E410BE00B47552 /* SessionTableSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionTableSection.swift; sourceTree = "<group>"; }; FD71165128E410BE00B47552 /* SessionTableSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionTableSection.swift; sourceTree = "<group>"; };
@ -1954,6 +1953,7 @@
FDDF074329C3E3D000E5E8B5 /* FetchRequest+Utilities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FetchRequest+Utilities.swift"; sourceTree = "<group>"; }; FDDF074329C3E3D000E5E8B5 /* FetchRequest+Utilities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FetchRequest+Utilities.swift"; sourceTree = "<group>"; };
FDE658A029418C7900A33BC1 /* CryptoKit+Utilities.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CryptoKit+Utilities.swift"; sourceTree = "<group>"; }; FDE658A029418C7900A33BC1 /* CryptoKit+Utilities.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CryptoKit+Utilities.swift"; sourceTree = "<group>"; };
FDE658A229418E2F00A33BC1 /* KeyPair.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyPair.swift; sourceTree = "<group>"; }; FDE658A229418E2F00A33BC1 /* KeyPair.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyPair.swift; sourceTree = "<group>"; };
FDE6E99729F8E63A00F93C5D /* Accessibility.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Accessibility.swift; sourceTree = "<group>"; };
FDE7214F287E50D50093DF33 /* ProtoWrappers.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = ProtoWrappers.py; sourceTree = "<group>"; }; FDE7214F287E50D50093DF33 /* ProtoWrappers.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = ProtoWrappers.py; sourceTree = "<group>"; };
FDE72150287E50D50093DF33 /* LintLocalizableStrings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LintLocalizableStrings.swift; sourceTree = "<group>"; }; FDE72150287E50D50093DF33 /* LintLocalizableStrings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LintLocalizableStrings.swift; sourceTree = "<group>"; };
FDE77F68280F9EDA002CFC5D /* JobRunnerError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JobRunnerError.swift; sourceTree = "<group>"; }; FDE77F68280F9EDA002CFC5D /* JobRunnerError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JobRunnerError.swift; sourceTree = "<group>"; };
@ -3967,6 +3967,7 @@
children = ( children = (
FD71162B28E1451400B47552 /* Position.swift */, FD71162B28E1451400B47552 /* Position.swift */,
FD71163128E2C42A00B47552 /* IconSize.swift */, FD71163128E2C42A00B47552 /* IconSize.swift */,
FDE6E99729F8E63A00F93C5D /* Accessibility.swift */,
); );
path = Types; path = Types;
sourceTree = "<group>"; sourceTree = "<group>";
@ -3989,7 +3990,6 @@
FD71163328E2C48400B47552 /* TransitionType.swift */, FD71163328E2C48400B47552 /* TransitionType.swift */,
FD71164D28E3F8CC00B47552 /* SessionCell+Info.swift */, FD71164D28E3F8CC00B47552 /* SessionCell+Info.swift */,
FD71164328E2CB8A00B47552 /* SessionCell+Accessory.swift */, FD71164328E2CB8A00B47552 /* SessionCell+Accessory.swift */,
FD71164B28E3F5AA00B47552 /* SessionCell+Accessibility.swift */,
FDF848F429413EEC007DCAE5 /* SessionCell+Styling.swift */, FDF848F429413EEC007DCAE5 /* SessionCell+Styling.swift */,
FD71165128E410BE00B47552 /* SessionTableSection.swift */, FD71165128E410BE00B47552 /* SessionTableSection.swift */,
FD71164F28E3F9FA00B47552 /* SessionTableViewModel+NavItem.swift */, FD71164F28E3F9FA00B47552 /* SessionTableViewModel+NavItem.swift */,
@ -5426,6 +5426,7 @@
C331FFE92558FB0000070591 /* Separator.swift in Sources */, C331FFE92558FB0000070591 /* Separator.swift in Sources */,
FD71163228E2C42A00B47552 /* IconSize.swift in Sources */, FD71163228E2C42A00B47552 /* IconSize.swift in Sources */,
C33100282559000A00070591 /* UIView+Utilities.swift in Sources */, C33100282559000A00070591 /* UIView+Utilities.swift in Sources */,
FDE6E99829F8E63A00F93C5D /* Accessibility.swift in Sources */,
FD37E9CA28A1E4BD003AE748 /* Theme+ClassicLight.swift in Sources */, FD37E9CA28A1E4BD003AE748 /* Theme+ClassicLight.swift in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
@ -5899,7 +5900,6 @@
B8CCF63723961D6D0091D419 /* NewDMVC.swift in Sources */, B8CCF63723961D6D0091D419 /* NewDMVC.swift in Sources */,
FDFDE12A282D056B0098B17F /* MediaZoomAnimationController.swift in Sources */, FDFDE12A282D056B0098B17F /* MediaZoomAnimationController.swift in Sources */,
4C1885D2218F8E1C00B67051 /* PhotoGridViewCell.swift in Sources */, 4C1885D2218F8E1C00B67051 /* PhotoGridViewCell.swift in Sources */,
FD71164C28E3F5AA00B47552 /* SessionCell+Accessibility.swift in Sources */,
34D1F0501F7D45A60066283D /* GifPickerCell.swift in Sources */, 34D1F0501F7D45A60066283D /* GifPickerCell.swift in Sources */,
7BFA8AE32831D0D4001876F3 /* ContextMenuVC+EmojiReactsView.swift in Sources */, 7BFA8AE32831D0D4001876F3 /* ContextMenuVC+EmojiReactsView.swift in Sources */,
C3E5C2FA251DBABB0040DFFC /* EditClosedGroupVC.swift in Sources */, C3E5C2FA251DBABB0040DFFC /* EditClosedGroupVC.swift in Sources */,

View File

@ -214,7 +214,7 @@ final class NewClosedGroupVC: BaseVC, UITableViewDataSource, UITableViewDelegate
self?.selectedContacts.contains(profile.id) == true self?.selectedContacts.contains(profile.id) == true
}), }),
styling: SessionCell.StyleInfo(backgroundStyle: .edgeToEdge), styling: SessionCell.StyleInfo(backgroundStyle: .edgeToEdge),
accessibility: SessionCell.Accessibility( accessibility: Accessibility(
identifier: "Contact" identifier: "Contact"
) )
) )

View File

@ -71,8 +71,7 @@ extension ConversationVC:
title: "modal_call_permission_request_title".localized(), title: "modal_call_permission_request_title".localized(),
explanation: "modal_call_permission_request_explanation".localized(), explanation: "modal_call_permission_request_explanation".localized(),
confirmTitle: "vc_settings_title".localized(), confirmTitle: "vc_settings_title".localized(),
confirmAccessibilityLabel: "Settings", confirmAccessibility: Accessibility(identifier: "Settings"),
cancelAccessibilityLabel: "Cancel",
dismissOnConfirm: false // Custom dismissal logic dismissOnConfirm: false // Custom dismissal logic
) { [weak self] _ in ) { [weak self] _ in
self?.dismiss(animated: true) { self?.dismiss(animated: true) {
@ -139,8 +138,8 @@ extension ConversationVC:
range: (message as NSString).range(of: self.viewModel.threadData.displayName) range: (message as NSString).range(of: self.viewModel.threadData.displayName)
), ),
confirmTitle: "modal_blocked_button_title".localized(), confirmTitle: "modal_blocked_button_title".localized(),
confirmAccessibilityLabel: "Confirm block", confirmAccessibility: Accessibility(identifier: "Confirm block"),
cancelAccessibilityLabel: "Cancel block", cancelAccessibility: Accessibility(identifier: "Cancel block"),
dismissOnConfirm: false // Custom dismissal logic dismissOnConfirm: false // Custom dismissal logic
) { [weak self] _ in ) { [weak self] _ in
self?.viewModel.unblockContact() self?.viewModel.unblockContact()
@ -912,8 +911,8 @@ extension ConversationVC:
range: (message as NSString).range(of: cellViewModel.authorName) range: (message as NSString).range(of: cellViewModel.authorName)
), ),
confirmTitle: "modal_download_button_title".localized(), confirmTitle: "modal_download_button_title".localized(),
confirmAccessibilityLabel: "Download media", confirmAccessibility: Accessibility(identifier: "Download media"),
cancelAccessibilityLabel: "Don't download media", cancelAccessibility: Accessibility(identifier: "Don't download media"),
dismissOnConfirm: false // Custom dismissal logic dismissOnConfirm: false // Custom dismissal logic
) { [weak self] _ in ) { [weak self] _ in
self?.viewModel.trustContact() self?.viewModel.trustContact()

View File

@ -285,7 +285,7 @@ class ThreadSettingsViewModel: SessionTableViewModel<ThreadSettingsViewModel.Nav
), ),
backgroundStyle: .noBackground backgroundStyle: .noBackground
), ),
accessibility: SessionCell.Accessibility( accessibility: Accessibility(
identifier: "Username", identifier: "Username",
label: threadViewModel.displayName label: threadViewModel.displayName
), ),
@ -311,7 +311,7 @@ class ThreadSettingsViewModel: SessionTableViewModel<ThreadSettingsViewModel.Nav
), ),
backgroundStyle: .noBackground backgroundStyle: .noBackground
), ),
accessibility: SessionCell.Accessibility( accessibility: Accessibility(
identifier: "Session ID", identifier: "Session ID",
label: threadViewModel.id label: threadViewModel.id
) )
@ -333,7 +333,7 @@ class ThreadSettingsViewModel: SessionTableViewModel<ThreadSettingsViewModel.Nav
"COPY_GROUP_URL".localized() : "COPY_GROUP_URL".localized() :
"vc_conversation_settings_copy_session_id_button_title".localized() "vc_conversation_settings_copy_session_id_button_title".localized()
), ),
accessibility: SessionCell.Accessibility( accessibility: Accessibility(
identifier: "\(ThreadSettingsViewModel.self).copy_thread_id", identifier: "\(ThreadSettingsViewModel.self).copy_thread_id",
label: "Copy Session ID" label: "Copy Session ID"
), ),
@ -371,7 +371,7 @@ class ThreadSettingsViewModel: SessionTableViewModel<ThreadSettingsViewModel.Nav
.withRenderingMode(.alwaysTemplate) .withRenderingMode(.alwaysTemplate)
), ),
title: MediaStrings.allMedia, title: MediaStrings.allMedia,
accessibility: SessionCell.Accessibility( accessibility: Accessibility(
identifier: "\(ThreadSettingsViewModel.self).all_media", identifier: "\(ThreadSettingsViewModel.self).all_media",
label: "All media" label: "All media"
), ),
@ -393,7 +393,7 @@ class ThreadSettingsViewModel: SessionTableViewModel<ThreadSettingsViewModel.Nav
.withRenderingMode(.alwaysTemplate) .withRenderingMode(.alwaysTemplate)
), ),
title: "CONVERSATION_SETTINGS_SEARCH".localized(), title: "CONVERSATION_SETTINGS_SEARCH".localized(),
accessibility: SessionCell.Accessibility( accessibility: Accessibility(
identifier: "\(ThreadSettingsViewModel.self).search", identifier: "\(ThreadSettingsViewModel.self).search",
label: "Search" label: "Search"
), ),
@ -410,7 +410,7 @@ class ThreadSettingsViewModel: SessionTableViewModel<ThreadSettingsViewModel.Nav
.withRenderingMode(.alwaysTemplate) .withRenderingMode(.alwaysTemplate)
), ),
title: "vc_conversation_settings_invite_button_title".localized(), title: "vc_conversation_settings_invite_button_title".localized(),
accessibility: SessionCell.Accessibility( accessibility: Accessibility(
identifier: "\(ThreadSettingsViewModel.self).add_to_open_group" identifier: "\(ThreadSettingsViewModel.self).add_to_open_group"
), ),
onTap: { [weak self] in onTap: { [weak self] in
@ -439,7 +439,7 @@ class ThreadSettingsViewModel: SessionTableViewModel<ThreadSettingsViewModel.Nav
"ic_timer_disabled" "ic_timer_disabled"
) )
)?.withRenderingMode(.alwaysTemplate), )?.withRenderingMode(.alwaysTemplate),
accessibility: SessionCell.Accessibility( accessibility: Accessibility(
label: "Timer icon" label: "Timer icon"
) )
), ),
@ -451,7 +451,7 @@ class ThreadSettingsViewModel: SessionTableViewModel<ThreadSettingsViewModel.Nav
) : ) :
"DISAPPEARING_MESSAGES_SUBTITLE_OFF".localized() "DISAPPEARING_MESSAGES_SUBTITLE_OFF".localized()
), ),
accessibility: SessionCell.Accessibility( accessibility: Accessibility(
identifier: "\(ThreadSettingsViewModel.self).disappearing_messages", identifier: "\(ThreadSettingsViewModel.self).disappearing_messages",
label: "Disappearing messages" label: "Disappearing messages"
), ),
@ -477,7 +477,7 @@ class ThreadSettingsViewModel: SessionTableViewModel<ThreadSettingsViewModel.Nav
.withRenderingMode(.alwaysTemplate) .withRenderingMode(.alwaysTemplate)
), ),
title: "EDIT_GROUP_ACTION".localized(), title: "EDIT_GROUP_ACTION".localized(),
accessibility: SessionCell.Accessibility( accessibility: Accessibility(
identifier: "Edit group", identifier: "Edit group",
label: "Edit group" label: "Edit group"
), ),
@ -497,7 +497,7 @@ class ThreadSettingsViewModel: SessionTableViewModel<ThreadSettingsViewModel.Nav
.withRenderingMode(.alwaysTemplate) .withRenderingMode(.alwaysTemplate)
), ),
title: "LEAVE_GROUP_ACTION".localized(), title: "LEAVE_GROUP_ACTION".localized(),
accessibility: SessionCell.Accessibility( accessibility: Accessibility(
identifier: "Leave group", identifier: "Leave group",
label: "Leave group" label: "Leave group"
), ),
@ -579,7 +579,7 @@ class ThreadSettingsViewModel: SessionTableViewModel<ThreadSettingsViewModel.Nav
) || ) ||
currentUserIsClosedGroupMember currentUserIsClosedGroupMember
), ),
accessibility: SessionCell.Accessibility( accessibility: Accessibility(
identifier: "Mentions only notification setting", identifier: "Mentions only notification setting",
label: "Mentions only" label: "Mentions only"
), ),
@ -617,7 +617,7 @@ class ThreadSettingsViewModel: SessionTableViewModel<ThreadSettingsViewModel.Nav
) || ) ||
currentUserIsClosedGroupMember currentUserIsClosedGroupMember
), ),
accessibility: SessionCell.Accessibility( accessibility: Accessibility(
identifier: "\(ThreadSettingsViewModel.self).mute", identifier: "\(ThreadSettingsViewModel.self).mute",
label: "Mute notifications" label: "Mute notifications"
), ),
@ -656,7 +656,7 @@ class ThreadSettingsViewModel: SessionTableViewModel<ThreadSettingsViewModel.Nav
rightAccessory: .toggle( rightAccessory: .toggle(
.boolValue(threadViewModel.threadIsBlocked == true) .boolValue(threadViewModel.threadIsBlocked == true)
), ),
accessibility: SessionCell.Accessibility( accessibility: Accessibility(
identifier: "\(ThreadSettingsViewModel.self).block", identifier: "\(ThreadSettingsViewModel.self).block",
label: "Block" label: "Block"
), ),
@ -682,7 +682,7 @@ class ThreadSettingsViewModel: SessionTableViewModel<ThreadSettingsViewModel.Nav
"BLOCK_LIST_UNBLOCK_BUTTON".localized() : "BLOCK_LIST_UNBLOCK_BUTTON".localized() :
"BLOCK_LIST_BLOCK_BUTTON".localized() "BLOCK_LIST_BLOCK_BUTTON".localized()
), ),
confirmAccessibilityLabel: "Confirm block", confirmAccessibility: Accessibility(identifier: "Confirm block"),
confirmStyle: .danger, confirmStyle: .danger,
cancelStyle: .alert_text cancelStyle: .alert_text
), ),
@ -820,10 +820,12 @@ class ThreadSettingsViewModel: SessionTableViewModel<ThreadSettingsViewModel.Nav
) : ) :
nil nil
), ),
accessibilityLabel: oldBlockedState == false ? "User blocked" : "Confirm unblock", accessibility: Accessibility(
accessibilityId: "Test_name", identifier: "Test_name",
label: (oldBlockedState == false ? "User blocked" : "Confirm unblock")
),
cancelTitle: "BUTTON_OK".localized(), cancelTitle: "BUTTON_OK".localized(),
cancelAccessibilityLabel: "OK_BUTTON", cancelAccessibility: Accessibility(identifier: "OK_BUTTON"),
cancelStyle: .alert_text cancelStyle: .alert_text
) )
) )

View File

@ -209,7 +209,7 @@ class PrivacySettingsViewModel: SessionTableViewModel<PrivacySettingsViewModel.N
title: "PRIVACY_CALLS_TITLE".localized(), title: "PRIVACY_CALLS_TITLE".localized(),
subtitle: "PRIVACY_CALLS_DESCRIPTION".localized(), subtitle: "PRIVACY_CALLS_DESCRIPTION".localized(),
rightAccessory: .toggle(.settingBool(key: .areCallsEnabled)), rightAccessory: .toggle(.settingBool(key: .areCallsEnabled)),
accessibility: SessionCell.Accessibility( accessibility: Accessibility(
label: "Allow voice and video calls" label: "Allow voice and video calls"
), ),
confirmationInfo: ConfirmationModal.Info( confirmationInfo: ConfirmationModal.Info(
@ -217,7 +217,7 @@ class PrivacySettingsViewModel: SessionTableViewModel<PrivacySettingsViewModel.N
explanation: "PRIVACY_CALLS_WARNING_DESCRIPTION".localized(), explanation: "PRIVACY_CALLS_WARNING_DESCRIPTION".localized(),
stateToShow: .whenDisabled, stateToShow: .whenDisabled,
confirmTitle: "continue_2".localized(), confirmTitle: "continue_2".localized(),
confirmAccessibilityLabel: "Enable", confirmAccessibility: Accessibility(identifier: "Enable"),
confirmStyle: .textPrimary, confirmStyle: .textPrimary,
onConfirm: { _ in Permissions.requestMicrophonePermissionIfNeeded() } onConfirm: { _ in Permissions.requestMicrophonePermissionIfNeeded() }
), ),

View File

@ -254,7 +254,7 @@ class SettingsViewModel: SessionTableViewModel<SettingsViewModel.NavButton, Sett
customPadding: SessionCell.Padding(bottom: Values.smallSpacing), customPadding: SessionCell.Padding(bottom: Values.smallSpacing),
backgroundStyle: .noBackground backgroundStyle: .noBackground
), ),
accessibility: SessionCell.Accessibility( accessibility: Accessibility(
label: "Profile picture" label: "Profile picture"
), ),
onTap: { onTap: {
@ -278,7 +278,7 @@ class SettingsViewModel: SessionTableViewModel<SettingsViewModel.NavButton, Sett
customPadding: SessionCell.Padding(top: Values.smallSpacing), customPadding: SessionCell.Padding(top: Values.smallSpacing),
backgroundStyle: .noBackground backgroundStyle: .noBackground
), ),
accessibility: SessionCell.Accessibility( accessibility: Accessibility(
identifier: "Username", identifier: "Username",
label: profile.displayName() label: profile.displayName()
), ),
@ -301,7 +301,7 @@ class SettingsViewModel: SessionTableViewModel<SettingsViewModel.NavButton, Sett
customPadding: SessionCell.Padding(bottom: Values.smallSpacing), customPadding: SessionCell.Padding(bottom: Values.smallSpacing),
backgroundStyle: .noBackground backgroundStyle: .noBackground
), ),
accessibility: SessionCell.Accessibility( accessibility: Accessibility(
identifier: "Session ID", identifier: "Session ID",
label: profile.id label: profile.id
) )

View File

@ -1,18 +0,0 @@
// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
import Foundation
public extension SessionCell {
struct Accessibility: Hashable, Equatable {
let identifier: String?
let label: String?
public init(
identifier: String? = nil,
label: String? = nil
) {
self.identifier = identifier
self.label = label
}
}
}

View File

@ -13,33 +13,33 @@ extension SessionCell {
size: IconSize, size: IconSize,
customTint: ThemeValue?, customTint: ThemeValue?,
shouldFill: Bool, shouldFill: Bool,
accessibility: SessionCell.Accessibility? accessibility: Accessibility?
) )
case iconAsync( case iconAsync(
size: IconSize, size: IconSize,
customTint: ThemeValue?, customTint: ThemeValue?,
shouldFill: Bool, shouldFill: Bool,
accessibility: SessionCell.Accessibility?, accessibility: Accessibility?,
setter: (UIImageView) -> Void setter: (UIImageView) -> Void
) )
case toggle( case toggle(
DataSource, DataSource,
accessibility: SessionCell.Accessibility? accessibility: Accessibility?
) )
case dropDown( case dropDown(
DataSource, DataSource,
accessibility: SessionCell.Accessibility? accessibility: Accessibility?
) )
case radio( case radio(
size: RadioSize, size: RadioSize,
isSelected: () -> Bool, isSelected: () -> Bool,
storedSelection: Bool, storedSelection: Bool,
accessibility: SessionCell.Accessibility? accessibility: Accessibility?
) )
case highlightingBackgroundLabel( case highlightingBackgroundLabel(
title: String, title: String,
accessibility: SessionCell.Accessibility? accessibility: Accessibility?
) )
case profile( case profile(
id: String, id: String,
@ -49,18 +49,18 @@ extension SessionCell {
profile: Profile?, profile: Profile?,
additionalProfile: Profile?, additionalProfile: Profile?,
cornerIcon: UIImage?, cornerIcon: UIImage?,
accessibility: SessionCell.Accessibility? accessibility: Accessibility?
) )
case search( case search(
placeholder: String, placeholder: String,
accessibility: SessionCell.Accessibility?, accessibility: Accessibility?,
searchTermChanged: (String?) -> Void searchTermChanged: (String?) -> Void
) )
case button( case button(
style: SessionButton.Style, style: SessionButton.Style,
title: String, title: String,
accessibility: SessionCell.Accessibility?, accessibility: Accessibility?,
run: (SessionButton?) -> Void run: (SessionButton?) -> Void
) )
case customView( case customView(
@ -283,7 +283,7 @@ extension SessionCell.Accessory {
return .icon(image, size: .medium, customTint: nil, shouldFill: shouldFill, accessibility: nil) return .icon(image, size: .medium, customTint: nil, shouldFill: shouldFill, accessibility: nil)
} }
public static func icon(_ image: UIImage?, accessibility: SessionCell.Accessibility) -> SessionCell.Accessory { public static func icon(_ image: UIImage?, accessibility: Accessibility) -> SessionCell.Accessory {
return .icon(image, size: .medium, customTint: nil, shouldFill: false, accessibility: accessibility) return .icon(image, size: .medium, customTint: nil, shouldFill: false, accessibility: accessibility)
} }

View File

@ -14,7 +14,7 @@ extension SessionCell {
let rightAccessory: SessionCell.Accessory? let rightAccessory: SessionCell.Accessory?
let styling: StyleInfo let styling: StyleInfo
let isEnabled: Bool let isEnabled: Bool
let accessibility: SessionCell.Accessibility? let accessibility: Accessibility?
let confirmationInfo: ConfirmationModal.Info? let confirmationInfo: ConfirmationModal.Info?
let onTap: (() -> Void)? let onTap: (() -> Void)?
let onTapView: ((UIView?) -> Void)? let onTapView: ((UIView?) -> Void)?
@ -37,7 +37,7 @@ extension SessionCell {
rightAccessory: SessionCell.Accessory? = nil, rightAccessory: SessionCell.Accessory? = nil,
styling: StyleInfo = StyleInfo(), styling: StyleInfo = StyleInfo(),
isEnabled: Bool = true, isEnabled: Bool = true,
accessibility: SessionCell.Accessibility? = nil, accessibility: Accessibility? = nil,
confirmationInfo: ConfirmationModal.Info? = nil, confirmationInfo: ConfirmationModal.Info? = nil,
onTap: (() -> Void)? = nil, onTap: (() -> Void)? = nil,
onTapView: ((UIView?) -> Void)? = nil onTapView: ((UIView?) -> Void)? = nil
@ -119,7 +119,7 @@ public extension SessionCell.Info {
accessory: SessionCell.Accessory, accessory: SessionCell.Accessory,
styling: SessionCell.StyleInfo = SessionCell.StyleInfo(), styling: SessionCell.StyleInfo = SessionCell.StyleInfo(),
isEnabled: Bool = true, isEnabled: Bool = true,
accessibility: SessionCell.Accessibility? = nil, accessibility: Accessibility? = nil,
confirmationInfo: ConfirmationModal.Info? = nil, confirmationInfo: ConfirmationModal.Info? = nil,
onTap: (() -> Void)? = nil onTap: (() -> Void)? = nil
) { ) {
@ -146,7 +146,7 @@ public extension SessionCell.Info {
rightAccessory: SessionCell.Accessory, rightAccessory: SessionCell.Accessory,
styling: SessionCell.StyleInfo = SessionCell.StyleInfo(), styling: SessionCell.StyleInfo = SessionCell.StyleInfo(),
isEnabled: Bool = true, isEnabled: Bool = true,
accessibility: SessionCell.Accessibility? = nil, accessibility: Accessibility? = nil,
confirmationInfo: ConfirmationModal.Info? = nil confirmationInfo: ConfirmationModal.Info? = nil
) { ) {
self.id = id self.id = id
@ -173,7 +173,7 @@ public extension SessionCell.Info {
rightAccessory: SessionCell.Accessory? = nil, rightAccessory: SessionCell.Accessory? = nil,
styling: SessionCell.StyleInfo = SessionCell.StyleInfo(), styling: SessionCell.StyleInfo = SessionCell.StyleInfo(),
isEnabled: Bool = true, isEnabled: Bool = true,
accessibility: SessionCell.Accessibility? = nil, accessibility: Accessibility? = nil,
confirmationInfo: ConfirmationModal.Info? = nil, confirmationInfo: ConfirmationModal.Info? = nil,
onTap: (() -> Void)? = nil onTap: (() -> Void)? = nil
) { ) {
@ -201,7 +201,7 @@ public extension SessionCell.Info {
rightAccessory: SessionCell.Accessory? = nil, rightAccessory: SessionCell.Accessory? = nil,
styling: SessionCell.StyleInfo = SessionCell.StyleInfo(), styling: SessionCell.StyleInfo = SessionCell.StyleInfo(),
isEnabled: Bool = true, isEnabled: Bool = true,
accessibility: SessionCell.Accessibility? = nil, accessibility: Accessibility? = nil,
confirmationInfo: ConfirmationModal.Info? = nil, confirmationInfo: ConfirmationModal.Info? = nil,
onTap: (() -> Void)? = nil onTap: (() -> Void)? = nil
) { ) {
@ -230,7 +230,7 @@ public extension SessionCell.Info {
rightAccessory: SessionCell.Accessory? = nil, rightAccessory: SessionCell.Accessory? = nil,
styling: SessionCell.StyleInfo = SessionCell.StyleInfo(), styling: SessionCell.StyleInfo = SessionCell.StyleInfo(),
isEnabled: Bool = true, isEnabled: Bool = true,
accessibility: SessionCell.Accessibility? = nil, accessibility: Accessibility? = nil,
confirmationInfo: ConfirmationModal.Info? = nil, confirmationInfo: ConfirmationModal.Info? = nil,
onTap: (() -> Void)? = nil, onTap: (() -> Void)? = nil,
onTapView: ((UIView?) -> Void)? = nil onTapView: ((UIView?) -> Void)? = nil

View File

@ -75,7 +75,7 @@ final class UserSelectionVC: BaseVC, UITableViewDataSource, UITableViewDelegate
self?.selectedUsers.contains(profile.id) == true self?.selectedUsers.contains(profile.id) == true
}), }),
styling: SessionCell.StyleInfo(backgroundStyle: .edgeToEdge), styling: SessionCell.StyleInfo(backgroundStyle: .edgeToEdge),
accessibility: SessionCell.Accessibility(identifier: "Contact") accessibility: Accessibility(identifier: "Contact")
) )
) )

View File

@ -151,6 +151,9 @@ public extension UIContextualAction {
title: "hide_note_to_self_confirmation_alert_title".localized(), title: "hide_note_to_self_confirmation_alert_title".localized(),
attributedExplanation: confirmationModalExplanation, attributedExplanation: confirmationModalExplanation,
confirmTitle: "TXT_HIDE_TITLE".localized(), confirmTitle: "TXT_HIDE_TITLE".localized(),
confirmAccessibility: Accessibility(
identifier: "Hide"
),
confirmStyle: .danger, confirmStyle: .danger,
cancelStyle: .alert_text, cancelStyle: .alert_text,
dismissOnConfirm: true, dismissOnConfirm: true,
@ -337,6 +340,9 @@ public extension UIContextualAction {
info: ConfirmationModal.Info( info: ConfirmationModal.Info(
title: "MESSAGE_REQUESTS_BLOCK_CONFIRMATION_ACTON".localized(), title: "MESSAGE_REQUESTS_BLOCK_CONFIRMATION_ACTON".localized(),
confirmTitle: "BLOCK_LIST_BLOCK_BUTTON".localized(), confirmTitle: "BLOCK_LIST_BLOCK_BUTTON".localized(),
confirmAccessibility: Accessibility(
identifier: "Block"
),
confirmStyle: .danger, confirmStyle: .danger,
cancelStyle: .alert_text, cancelStyle: .alert_text,
dismissOnConfirm: true, dismissOnConfirm: true,
@ -398,6 +404,9 @@ public extension UIContextualAction {
title: confirmationModalTitle, title: confirmationModalTitle,
attributedExplanation: confirmationModalExplanation, attributedExplanation: confirmationModalExplanation,
confirmTitle: "LEAVE_BUTTON_TITLE".localized(), confirmTitle: "LEAVE_BUTTON_TITLE".localized(),
confirmAccessibility: Accessibility(
identifier: "Leave"
),
confirmStyle: .danger, confirmStyle: .danger,
cancelStyle: .alert_text, cancelStyle: .alert_text,
dismissOnConfirm: true, dismissOnConfirm: true,
@ -493,6 +502,9 @@ public extension UIContextualAction {
title: confirmationModalTitle, title: confirmationModalTitle,
attributedExplanation: confirmationModalExplanation, attributedExplanation: confirmationModalExplanation,
confirmTitle: "TXT_DELETE_TITLE".localized(), confirmTitle: "TXT_DELETE_TITLE".localized(),
confirmAccessibility: Accessibility(
identifier: "Delete"
),
confirmStyle: .danger, confirmStyle: .danger,
cancelStyle: .alert_text, cancelStyle: .alert_text,
dismissOnConfirm: true, dismissOnConfirm: true,

View File

@ -1,6 +1,7 @@
// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved. // Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
import UIKit import UIKit
import SessionUtilitiesKit
public class ConfirmationModal: Modal { public class ConfirmationModal: Modal {
public struct Info: Equatable, Hashable { public struct Info: Equatable, Hashable {
@ -21,14 +22,13 @@ public class ConfirmationModal: Modal {
let title: String let title: String
let explanation: String? let explanation: String?
let attributedExplanation: NSAttributedString? let attributedExplanation: NSAttributedString?
let accessibilityLabel: String? let accessibility: Accessibility?
let accessibilityIdentifier: String?
public let stateToShow: State public let stateToShow: State
let confirmTitle: String? let confirmTitle: String?
let confirmAccessibilityLabel: String? let confirmAccessibility: Accessibility?
let confirmStyle: ThemeValue let confirmStyle: ThemeValue
let cancelTitle: String let cancelTitle: String
let cancelAccessibilityLabel: String? let cancelAccessibility: Accessibility?
let cancelStyle: ThemeValue let cancelStyle: ThemeValue
let dismissOnConfirm: Bool let dismissOnConfirm: Bool
let onConfirm: ((UIViewController) -> ())? let onConfirm: ((UIViewController) -> ())?
@ -40,14 +40,15 @@ public class ConfirmationModal: Modal {
title: String, title: String,
explanation: String? = nil, explanation: String? = nil,
attributedExplanation: NSAttributedString? = nil, attributedExplanation: NSAttributedString? = nil,
accessibilityLabel: String? = nil, accessibility: Accessibility? = nil,
accessibilityId: String? = nil,
stateToShow: State = .always, stateToShow: State = .always,
confirmTitle: String? = nil, confirmTitle: String? = nil,
confirmAccessibilityLabel: String? = nil, confirmAccessibility: Accessibility? = nil,
confirmStyle: ThemeValue = .alert_text, confirmStyle: ThemeValue = .alert_text,
cancelTitle: String = "TXT_CANCEL_TITLE".localized(), cancelTitle: String = "TXT_CANCEL_TITLE".localized(),
cancelAccessibilityLabel: String? = nil, cancelAccessibility: Accessibility? = Accessibility(
identifier: "Cancel"
),
cancelStyle: ThemeValue = .danger, cancelStyle: ThemeValue = .danger,
dismissOnConfirm: Bool = true, dismissOnConfirm: Bool = true,
onConfirm: ((UIViewController) -> ())? = nil, onConfirm: ((UIViewController) -> ())? = nil,
@ -56,14 +57,13 @@ public class ConfirmationModal: Modal {
self.title = title self.title = title
self.explanation = explanation self.explanation = explanation
self.attributedExplanation = attributedExplanation self.attributedExplanation = attributedExplanation
self.accessibilityLabel = accessibilityLabel self.accessibility = accessibility
self.accessibilityIdentifier = accessibilityId
self.stateToShow = stateToShow self.stateToShow = stateToShow
self.confirmTitle = confirmTitle self.confirmTitle = confirmTitle
self.confirmAccessibilityLabel = confirmAccessibilityLabel self.confirmAccessibility = confirmAccessibility
self.confirmStyle = confirmStyle self.confirmStyle = confirmStyle
self.cancelTitle = cancelTitle self.cancelTitle = cancelTitle
self.cancelAccessibilityLabel = cancelAccessibilityLabel self.cancelAccessibility = cancelAccessibility
self.cancelStyle = cancelStyle self.cancelStyle = cancelStyle
self.dismissOnConfirm = dismissOnConfirm self.dismissOnConfirm = dismissOnConfirm
self.onConfirm = onConfirm self.onConfirm = onConfirm
@ -80,13 +80,13 @@ public class ConfirmationModal: Modal {
title: self.title, title: self.title,
explanation: self.explanation, explanation: self.explanation,
attributedExplanation: self.attributedExplanation, attributedExplanation: self.attributedExplanation,
accessibilityLabel: self.accessibilityLabel, accessibility: self.accessibility,
stateToShow: self.stateToShow, stateToShow: self.stateToShow,
confirmTitle: self.confirmTitle, confirmTitle: self.confirmTitle,
confirmAccessibilityLabel: self.confirmAccessibilityLabel, confirmAccessibility: self.confirmAccessibility,
confirmStyle: self.confirmStyle, confirmStyle: self.confirmStyle,
cancelTitle: self.cancelTitle, cancelTitle: self.cancelTitle,
cancelAccessibilityLabel: self.cancelAccessibilityLabel, cancelAccessibility: self.cancelAccessibility,
cancelStyle: self.cancelStyle, cancelStyle: self.cancelStyle,
dismissOnConfirm: self.dismissOnConfirm, dismissOnConfirm: self.dismissOnConfirm,
onConfirm: (onConfirm ?? self.onConfirm), onConfirm: (onConfirm ?? self.onConfirm),
@ -101,13 +101,13 @@ public class ConfirmationModal: Modal {
lhs.title == rhs.title && lhs.title == rhs.title &&
lhs.explanation == rhs.explanation && lhs.explanation == rhs.explanation &&
lhs.attributedExplanation == rhs.attributedExplanation && lhs.attributedExplanation == rhs.attributedExplanation &&
lhs.accessibilityLabel == rhs.accessibilityLabel && lhs.accessibility == rhs.accessibility &&
lhs.stateToShow == rhs.stateToShow && lhs.stateToShow == rhs.stateToShow &&
lhs.confirmTitle == rhs.confirmTitle && lhs.confirmTitle == rhs.confirmTitle &&
lhs.confirmAccessibilityLabel == rhs.confirmAccessibilityLabel && lhs.confirmAccessibility == rhs.confirmAccessibility &&
lhs.confirmStyle == rhs.confirmStyle && lhs.confirmStyle == rhs.confirmStyle &&
lhs.cancelTitle == rhs.cancelTitle && lhs.cancelTitle == rhs.cancelTitle &&
lhs.cancelAccessibilityLabel == rhs.cancelAccessibilityLabel && lhs.cancelAccessibility == rhs.cancelAccessibility &&
lhs.cancelStyle == rhs.cancelStyle && lhs.cancelStyle == rhs.cancelStyle &&
lhs.dismissOnConfirm == rhs.dismissOnConfirm lhs.dismissOnConfirm == rhs.dismissOnConfirm
) )
@ -117,13 +117,13 @@ public class ConfirmationModal: Modal {
title.hash(into: &hasher) title.hash(into: &hasher)
explanation.hash(into: &hasher) explanation.hash(into: &hasher)
attributedExplanation.hash(into: &hasher) attributedExplanation.hash(into: &hasher)
accessibilityLabel.hash(into: &hasher) accessibility.hash(into: &hasher)
stateToShow.hash(into: &hasher) stateToShow.hash(into: &hasher)
confirmTitle.hash(into: &hasher) confirmTitle.hash(into: &hasher)
confirmAccessibilityLabel.hash(into: &hasher) confirmAccessibility.hash(into: &hasher)
confirmStyle.hash(into: &hasher) confirmStyle.hash(into: &hasher)
cancelTitle.hash(into: &hasher) cancelTitle.hash(into: &hasher)
cancelAccessibilityLabel.hash(into: &hasher) cancelAccessibility.hash(into: &hasher)
cancelStyle.hash(into: &hasher) cancelStyle.hash(into: &hasher)
dismissOnConfirm.hash(into: &hasher) dismissOnConfirm.hash(into: &hasher)
} }
@ -229,20 +229,20 @@ public class ConfirmationModal: Modal {
info.explanation == nil && info.explanation == nil &&
info.attributedExplanation == nil info.attributedExplanation == nil
) )
confirmButton.accessibilityLabel = info.confirmAccessibilityLabel confirmButton.accessibilityLabel = info.confirmAccessibility?.label
confirmButton.accessibilityIdentifier = info.confirmAccessibilityLabel confirmButton.accessibilityIdentifier = info.confirmAccessibility?.identifier
confirmButton.isAccessibilityElement = true confirmButton.isAccessibilityElement = true
confirmButton.setTitle(info.confirmTitle, for: .normal) confirmButton.setTitle(info.confirmTitle, for: .normal)
confirmButton.setThemeTitleColor(info.confirmStyle, for: .normal) confirmButton.setThemeTitleColor(info.confirmStyle, for: .normal)
confirmButton.isHidden = (info.confirmTitle == nil) confirmButton.isHidden = (info.confirmTitle == nil)
cancelButton.accessibilityLabel = info.cancelAccessibilityLabel cancelButton.accessibilityLabel = info.cancelAccessibility?.label
cancelButton.accessibilityIdentifier = info.cancelAccessibilityLabel cancelButton.accessibilityIdentifier = info.cancelAccessibility?.identifier
cancelButton.isAccessibilityElement = true cancelButton.isAccessibilityElement = true
cancelButton.setTitle(info.cancelTitle, for: .normal) cancelButton.setTitle(info.cancelTitle, for: .normal)
cancelButton.setThemeTitleColor(info.cancelStyle, for: .normal) cancelButton.setThemeTitleColor(info.cancelStyle, for: .normal)
self.contentView.accessibilityLabel = info.accessibilityLabel contentView.accessibilityLabel = info.accessibility?.label
self.contentView.accessibilityIdentifier = info.accessibilityIdentifier contentView.accessibilityIdentifier = info.accessibility?.identifier
} }
required init?(coder: NSCoder) { required init?(coder: NSCoder) {

View File

@ -0,0 +1,16 @@
// Copyright © 2023 Rangeproof Pty Ltd. All rights reserved.
import Foundation
public struct Accessibility: Hashable, Equatable {
public let identifier: String?
public let label: String?
public init(
identifier: String? = nil,
label: String? = nil
) {
self.identifier = identifier
self.label = label
}
}