diff --git a/Session.xcodeproj/project.pbxproj b/Session.xcodeproj/project.pbxproj index eaa0f30e1..e483f8464 100644 --- a/Session.xcodeproj/project.pbxproj +++ b/Session.xcodeproj/project.pbxproj @@ -688,7 +688,6 @@ FD71164628E2CC1300B47552 /* SessionHighlightingBackgroundLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD71164528E2CC1300B47552 /* SessionHighlightingBackgroundLabel.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 */; }; - 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 */; }; FD71165028E3F9FA00B47552 /* SessionTableViewModel+NavItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD71164F28E3F9FA00B47552 /* SessionTableViewModel+NavItem.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 */; }; FDE658A129418C7900A33BC1 /* CryptoKit+Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDE658A029418C7900A33BC1 /* CryptoKit+Utilities.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 */; }; FDED2E3C282E1B5D00B2CD2A /* UICollectionView+ReusableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDED2E3B282E1B5D00B2CD2A /* UICollectionView+ReusableView.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 = ""; }; FD71164728E2CE8700B47552 /* SessionCell+AccessoryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SessionCell+AccessoryView.swift"; sourceTree = ""; }; FD71164928E3EA5B00B47552 /* DismissType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DismissType.swift; sourceTree = ""; }; - FD71164B28E3F5AA00B47552 /* SessionCell+Accessibility.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SessionCell+Accessibility.swift"; sourceTree = ""; }; FD71164D28E3F8CC00B47552 /* SessionCell+Info.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SessionCell+Info.swift"; sourceTree = ""; }; FD71164F28E3F9FA00B47552 /* SessionTableViewModel+NavItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SessionTableViewModel+NavItem.swift"; sourceTree = ""; }; FD71165128E410BE00B47552 /* SessionTableSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionTableSection.swift; sourceTree = ""; }; @@ -1954,6 +1953,7 @@ FDDF074329C3E3D000E5E8B5 /* FetchRequest+Utilities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FetchRequest+Utilities.swift"; sourceTree = ""; }; FDE658A029418C7900A33BC1 /* CryptoKit+Utilities.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CryptoKit+Utilities.swift"; sourceTree = ""; }; FDE658A229418E2F00A33BC1 /* KeyPair.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeyPair.swift; sourceTree = ""; }; + FDE6E99729F8E63A00F93C5D /* Accessibility.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Accessibility.swift; sourceTree = ""; }; FDE7214F287E50D50093DF33 /* ProtoWrappers.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = ProtoWrappers.py; sourceTree = ""; }; FDE72150287E50D50093DF33 /* LintLocalizableStrings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LintLocalizableStrings.swift; sourceTree = ""; }; FDE77F68280F9EDA002CFC5D /* JobRunnerError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JobRunnerError.swift; sourceTree = ""; }; @@ -3967,6 +3967,7 @@ children = ( FD71162B28E1451400B47552 /* Position.swift */, FD71163128E2C42A00B47552 /* IconSize.swift */, + FDE6E99729F8E63A00F93C5D /* Accessibility.swift */, ); path = Types; sourceTree = ""; @@ -3989,7 +3990,6 @@ FD71163328E2C48400B47552 /* TransitionType.swift */, FD71164D28E3F8CC00B47552 /* SessionCell+Info.swift */, FD71164328E2CB8A00B47552 /* SessionCell+Accessory.swift */, - FD71164B28E3F5AA00B47552 /* SessionCell+Accessibility.swift */, FDF848F429413EEC007DCAE5 /* SessionCell+Styling.swift */, FD71165128E410BE00B47552 /* SessionTableSection.swift */, FD71164F28E3F9FA00B47552 /* SessionTableViewModel+NavItem.swift */, @@ -5426,6 +5426,7 @@ C331FFE92558FB0000070591 /* Separator.swift in Sources */, FD71163228E2C42A00B47552 /* IconSize.swift in Sources */, C33100282559000A00070591 /* UIView+Utilities.swift in Sources */, + FDE6E99829F8E63A00F93C5D /* Accessibility.swift in Sources */, FD37E9CA28A1E4BD003AE748 /* Theme+ClassicLight.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -5899,7 +5900,6 @@ B8CCF63723961D6D0091D419 /* NewDMVC.swift in Sources */, FDFDE12A282D056B0098B17F /* MediaZoomAnimationController.swift in Sources */, 4C1885D2218F8E1C00B67051 /* PhotoGridViewCell.swift in Sources */, - FD71164C28E3F5AA00B47552 /* SessionCell+Accessibility.swift in Sources */, 34D1F0501F7D45A60066283D /* GifPickerCell.swift in Sources */, 7BFA8AE32831D0D4001876F3 /* ContextMenuVC+EmojiReactsView.swift in Sources */, C3E5C2FA251DBABB0040DFFC /* EditClosedGroupVC.swift in Sources */, diff --git a/Session/Closed Groups/NewClosedGroupVC.swift b/Session/Closed Groups/NewClosedGroupVC.swift index f7c943b41..bdc06afb0 100644 --- a/Session/Closed Groups/NewClosedGroupVC.swift +++ b/Session/Closed Groups/NewClosedGroupVC.swift @@ -214,7 +214,7 @@ final class NewClosedGroupVC: BaseVC, UITableViewDataSource, UITableViewDelegate self?.selectedContacts.contains(profile.id) == true }), styling: SessionCell.StyleInfo(backgroundStyle: .edgeToEdge), - accessibility: SessionCell.Accessibility( + accessibility: Accessibility( identifier: "Contact" ) ) diff --git a/Session/Conversations/ConversationVC+Interaction.swift b/Session/Conversations/ConversationVC+Interaction.swift index 462018a08..75cfbe147 100644 --- a/Session/Conversations/ConversationVC+Interaction.swift +++ b/Session/Conversations/ConversationVC+Interaction.swift @@ -71,8 +71,7 @@ extension ConversationVC: title: "modal_call_permission_request_title".localized(), explanation: "modal_call_permission_request_explanation".localized(), confirmTitle: "vc_settings_title".localized(), - confirmAccessibilityLabel: "Settings", - cancelAccessibilityLabel: "Cancel", + confirmAccessibility: Accessibility(identifier: "Settings"), dismissOnConfirm: false // Custom dismissal logic ) { [weak self] _ in self?.dismiss(animated: true) { @@ -139,8 +138,8 @@ extension ConversationVC: range: (message as NSString).range(of: self.viewModel.threadData.displayName) ), confirmTitle: "modal_blocked_button_title".localized(), - confirmAccessibilityLabel: "Confirm block", - cancelAccessibilityLabel: "Cancel block", + confirmAccessibility: Accessibility(identifier: "Confirm block"), + cancelAccessibility: Accessibility(identifier: "Cancel block"), dismissOnConfirm: false // Custom dismissal logic ) { [weak self] _ in self?.viewModel.unblockContact() @@ -912,8 +911,8 @@ extension ConversationVC: range: (message as NSString).range(of: cellViewModel.authorName) ), confirmTitle: "modal_download_button_title".localized(), - confirmAccessibilityLabel: "Download media", - cancelAccessibilityLabel: "Don't download media", + confirmAccessibility: Accessibility(identifier: "Download media"), + cancelAccessibility: Accessibility(identifier: "Don't download media"), dismissOnConfirm: false // Custom dismissal logic ) { [weak self] _ in self?.viewModel.trustContact() diff --git a/Session/Conversations/Settings/ThreadSettingsViewModel.swift b/Session/Conversations/Settings/ThreadSettingsViewModel.swift index c6b577a21..a55f4d7c7 100644 --- a/Session/Conversations/Settings/ThreadSettingsViewModel.swift +++ b/Session/Conversations/Settings/ThreadSettingsViewModel.swift @@ -285,7 +285,7 @@ class ThreadSettingsViewModel: SessionTableViewModel Void ) case toggle( DataSource, - accessibility: SessionCell.Accessibility? + accessibility: Accessibility? ) case dropDown( DataSource, - accessibility: SessionCell.Accessibility? + accessibility: Accessibility? ) case radio( size: RadioSize, isSelected: () -> Bool, storedSelection: Bool, - accessibility: SessionCell.Accessibility? + accessibility: Accessibility? ) case highlightingBackgroundLabel( title: String, - accessibility: SessionCell.Accessibility? + accessibility: Accessibility? ) case profile( id: String, @@ -49,18 +49,18 @@ extension SessionCell { profile: Profile?, additionalProfile: Profile?, cornerIcon: UIImage?, - accessibility: SessionCell.Accessibility? + accessibility: Accessibility? ) case search( placeholder: String, - accessibility: SessionCell.Accessibility?, + accessibility: Accessibility?, searchTermChanged: (String?) -> Void ) case button( style: SessionButton.Style, title: String, - accessibility: SessionCell.Accessibility?, + accessibility: Accessibility?, run: (SessionButton?) -> Void ) case customView( @@ -283,7 +283,7 @@ extension SessionCell.Accessory { 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) } diff --git a/Session/Shared/Types/SessionCell+Info.swift b/Session/Shared/Types/SessionCell+Info.swift index 35cd764ac..35d63cb03 100644 --- a/Session/Shared/Types/SessionCell+Info.swift +++ b/Session/Shared/Types/SessionCell+Info.swift @@ -14,7 +14,7 @@ extension SessionCell { let rightAccessory: SessionCell.Accessory? let styling: StyleInfo let isEnabled: Bool - let accessibility: SessionCell.Accessibility? + let accessibility: Accessibility? let confirmationInfo: ConfirmationModal.Info? let onTap: (() -> Void)? let onTapView: ((UIView?) -> Void)? @@ -37,7 +37,7 @@ extension SessionCell { rightAccessory: SessionCell.Accessory? = nil, styling: StyleInfo = StyleInfo(), isEnabled: Bool = true, - accessibility: SessionCell.Accessibility? = nil, + accessibility: Accessibility? = nil, confirmationInfo: ConfirmationModal.Info? = nil, onTap: (() -> Void)? = nil, onTapView: ((UIView?) -> Void)? = nil @@ -119,7 +119,7 @@ public extension SessionCell.Info { accessory: SessionCell.Accessory, styling: SessionCell.StyleInfo = SessionCell.StyleInfo(), isEnabled: Bool = true, - accessibility: SessionCell.Accessibility? = nil, + accessibility: Accessibility? = nil, confirmationInfo: ConfirmationModal.Info? = nil, onTap: (() -> Void)? = nil ) { @@ -146,7 +146,7 @@ public extension SessionCell.Info { rightAccessory: SessionCell.Accessory, styling: SessionCell.StyleInfo = SessionCell.StyleInfo(), isEnabled: Bool = true, - accessibility: SessionCell.Accessibility? = nil, + accessibility: Accessibility? = nil, confirmationInfo: ConfirmationModal.Info? = nil ) { self.id = id @@ -173,7 +173,7 @@ public extension SessionCell.Info { rightAccessory: SessionCell.Accessory? = nil, styling: SessionCell.StyleInfo = SessionCell.StyleInfo(), isEnabled: Bool = true, - accessibility: SessionCell.Accessibility? = nil, + accessibility: Accessibility? = nil, confirmationInfo: ConfirmationModal.Info? = nil, onTap: (() -> Void)? = nil ) { @@ -201,7 +201,7 @@ public extension SessionCell.Info { rightAccessory: SessionCell.Accessory? = nil, styling: SessionCell.StyleInfo = SessionCell.StyleInfo(), isEnabled: Bool = true, - accessibility: SessionCell.Accessibility? = nil, + accessibility: Accessibility? = nil, confirmationInfo: ConfirmationModal.Info? = nil, onTap: (() -> Void)? = nil ) { @@ -230,7 +230,7 @@ public extension SessionCell.Info { rightAccessory: SessionCell.Accessory? = nil, styling: SessionCell.StyleInfo = SessionCell.StyleInfo(), isEnabled: Bool = true, - accessibility: SessionCell.Accessibility? = nil, + accessibility: Accessibility? = nil, confirmationInfo: ConfirmationModal.Info? = nil, onTap: (() -> Void)? = nil, onTapView: ((UIView?) -> Void)? = nil diff --git a/Session/Shared/UserSelectionVC.swift b/Session/Shared/UserSelectionVC.swift index 17a5633cf..8e823ffbe 100644 --- a/Session/Shared/UserSelectionVC.swift +++ b/Session/Shared/UserSelectionVC.swift @@ -75,7 +75,7 @@ final class UserSelectionVC: BaseVC, UITableViewDataSource, UITableViewDelegate self?.selectedUsers.contains(profile.id) == true }), styling: SessionCell.StyleInfo(backgroundStyle: .edgeToEdge), - accessibility: SessionCell.Accessibility(identifier: "Contact") + accessibility: Accessibility(identifier: "Contact") ) ) diff --git a/Session/Utilities/UIContextualAction+Utilities.swift b/Session/Utilities/UIContextualAction+Utilities.swift index 934b595ea..75f18f96a 100644 --- a/Session/Utilities/UIContextualAction+Utilities.swift +++ b/Session/Utilities/UIContextualAction+Utilities.swift @@ -151,6 +151,9 @@ public extension UIContextualAction { title: "hide_note_to_self_confirmation_alert_title".localized(), attributedExplanation: confirmationModalExplanation, confirmTitle: "TXT_HIDE_TITLE".localized(), + confirmAccessibility: Accessibility( + identifier: "Hide" + ), confirmStyle: .danger, cancelStyle: .alert_text, dismissOnConfirm: true, @@ -337,6 +340,9 @@ public extension UIContextualAction { info: ConfirmationModal.Info( title: "MESSAGE_REQUESTS_BLOCK_CONFIRMATION_ACTON".localized(), confirmTitle: "BLOCK_LIST_BLOCK_BUTTON".localized(), + confirmAccessibility: Accessibility( + identifier: "Block" + ), confirmStyle: .danger, cancelStyle: .alert_text, dismissOnConfirm: true, @@ -398,6 +404,9 @@ public extension UIContextualAction { title: confirmationModalTitle, attributedExplanation: confirmationModalExplanation, confirmTitle: "LEAVE_BUTTON_TITLE".localized(), + confirmAccessibility: Accessibility( + identifier: "Leave" + ), confirmStyle: .danger, cancelStyle: .alert_text, dismissOnConfirm: true, @@ -493,6 +502,9 @@ public extension UIContextualAction { title: confirmationModalTitle, attributedExplanation: confirmationModalExplanation, confirmTitle: "TXT_DELETE_TITLE".localized(), + confirmAccessibility: Accessibility( + identifier: "Delete" + ), confirmStyle: .danger, cancelStyle: .alert_text, dismissOnConfirm: true, diff --git a/SessionUIKit/Components/ConfirmationModal.swift b/SessionUIKit/Components/ConfirmationModal.swift index 2ffe5947a..032d60e32 100644 --- a/SessionUIKit/Components/ConfirmationModal.swift +++ b/SessionUIKit/Components/ConfirmationModal.swift @@ -1,6 +1,7 @@ // Copyright © 2022 Rangeproof Pty Ltd. All rights reserved. import UIKit +import SessionUtilitiesKit public class ConfirmationModal: Modal { public struct Info: Equatable, Hashable { @@ -21,14 +22,13 @@ public class ConfirmationModal: Modal { let title: String let explanation: String? let attributedExplanation: NSAttributedString? - let accessibilityLabel: String? - let accessibilityIdentifier: String? + let accessibility: Accessibility? public let stateToShow: State let confirmTitle: String? - let confirmAccessibilityLabel: String? + let confirmAccessibility: Accessibility? let confirmStyle: ThemeValue let cancelTitle: String - let cancelAccessibilityLabel: String? + let cancelAccessibility: Accessibility? let cancelStyle: ThemeValue let dismissOnConfirm: Bool let onConfirm: ((UIViewController) -> ())? @@ -40,14 +40,15 @@ public class ConfirmationModal: Modal { title: String, explanation: String? = nil, attributedExplanation: NSAttributedString? = nil, - accessibilityLabel: String? = nil, - accessibilityId: String? = nil, + accessibility: Accessibility? = nil, stateToShow: State = .always, confirmTitle: String? = nil, - confirmAccessibilityLabel: String? = nil, + confirmAccessibility: Accessibility? = nil, confirmStyle: ThemeValue = .alert_text, cancelTitle: String = "TXT_CANCEL_TITLE".localized(), - cancelAccessibilityLabel: String? = nil, + cancelAccessibility: Accessibility? = Accessibility( + identifier: "Cancel" + ), cancelStyle: ThemeValue = .danger, dismissOnConfirm: Bool = true, onConfirm: ((UIViewController) -> ())? = nil, @@ -56,14 +57,13 @@ public class ConfirmationModal: Modal { self.title = title self.explanation = explanation self.attributedExplanation = attributedExplanation - self.accessibilityLabel = accessibilityLabel - self.accessibilityIdentifier = accessibilityId + self.accessibility = accessibility self.stateToShow = stateToShow self.confirmTitle = confirmTitle - self.confirmAccessibilityLabel = confirmAccessibilityLabel + self.confirmAccessibility = confirmAccessibility self.confirmStyle = confirmStyle self.cancelTitle = cancelTitle - self.cancelAccessibilityLabel = cancelAccessibilityLabel + self.cancelAccessibility = cancelAccessibility self.cancelStyle = cancelStyle self.dismissOnConfirm = dismissOnConfirm self.onConfirm = onConfirm @@ -80,13 +80,13 @@ public class ConfirmationModal: Modal { title: self.title, explanation: self.explanation, attributedExplanation: self.attributedExplanation, - accessibilityLabel: self.accessibilityLabel, + accessibility: self.accessibility, stateToShow: self.stateToShow, confirmTitle: self.confirmTitle, - confirmAccessibilityLabel: self.confirmAccessibilityLabel, + confirmAccessibility: self.confirmAccessibility, confirmStyle: self.confirmStyle, cancelTitle: self.cancelTitle, - cancelAccessibilityLabel: self.cancelAccessibilityLabel, + cancelAccessibility: self.cancelAccessibility, cancelStyle: self.cancelStyle, dismissOnConfirm: self.dismissOnConfirm, onConfirm: (onConfirm ?? self.onConfirm), @@ -101,13 +101,13 @@ public class ConfirmationModal: Modal { lhs.title == rhs.title && lhs.explanation == rhs.explanation && lhs.attributedExplanation == rhs.attributedExplanation && - lhs.accessibilityLabel == rhs.accessibilityLabel && + lhs.accessibility == rhs.accessibility && lhs.stateToShow == rhs.stateToShow && lhs.confirmTitle == rhs.confirmTitle && - lhs.confirmAccessibilityLabel == rhs.confirmAccessibilityLabel && + lhs.confirmAccessibility == rhs.confirmAccessibility && lhs.confirmStyle == rhs.confirmStyle && lhs.cancelTitle == rhs.cancelTitle && - lhs.cancelAccessibilityLabel == rhs.cancelAccessibilityLabel && + lhs.cancelAccessibility == rhs.cancelAccessibility && lhs.cancelStyle == rhs.cancelStyle && lhs.dismissOnConfirm == rhs.dismissOnConfirm ) @@ -117,13 +117,13 @@ public class ConfirmationModal: Modal { title.hash(into: &hasher) explanation.hash(into: &hasher) attributedExplanation.hash(into: &hasher) - accessibilityLabel.hash(into: &hasher) + accessibility.hash(into: &hasher) stateToShow.hash(into: &hasher) confirmTitle.hash(into: &hasher) - confirmAccessibilityLabel.hash(into: &hasher) + confirmAccessibility.hash(into: &hasher) confirmStyle.hash(into: &hasher) cancelTitle.hash(into: &hasher) - cancelAccessibilityLabel.hash(into: &hasher) + cancelAccessibility.hash(into: &hasher) cancelStyle.hash(into: &hasher) dismissOnConfirm.hash(into: &hasher) } @@ -229,20 +229,20 @@ public class ConfirmationModal: Modal { info.explanation == nil && info.attributedExplanation == nil ) - confirmButton.accessibilityLabel = info.confirmAccessibilityLabel - confirmButton.accessibilityIdentifier = info.confirmAccessibilityLabel + confirmButton.accessibilityLabel = info.confirmAccessibility?.label + confirmButton.accessibilityIdentifier = info.confirmAccessibility?.identifier confirmButton.isAccessibilityElement = true confirmButton.setTitle(info.confirmTitle, for: .normal) confirmButton.setThemeTitleColor(info.confirmStyle, for: .normal) confirmButton.isHidden = (info.confirmTitle == nil) - cancelButton.accessibilityLabel = info.cancelAccessibilityLabel - cancelButton.accessibilityIdentifier = info.cancelAccessibilityLabel + cancelButton.accessibilityLabel = info.cancelAccessibility?.label + cancelButton.accessibilityIdentifier = info.cancelAccessibility?.identifier cancelButton.isAccessibilityElement = true cancelButton.setTitle(info.cancelTitle, for: .normal) cancelButton.setThemeTitleColor(info.cancelStyle, for: .normal) - self.contentView.accessibilityLabel = info.accessibilityLabel - self.contentView.accessibilityIdentifier = info.accessibilityIdentifier + contentView.accessibilityLabel = info.accessibility?.label + contentView.accessibilityIdentifier = info.accessibility?.identifier } required init?(coder: NSCoder) { diff --git a/SessionUIKit/Types/Accessibility.swift b/SessionUIKit/Types/Accessibility.swift new file mode 100644 index 000000000..ef1d2ff02 --- /dev/null +++ b/SessionUIKit/Types/Accessibility.swift @@ -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 + } +}