Fixed an accessibility regression
This commit is contained in:
parent
56164ab7f4
commit
2983086837
|
@ -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 */,
|
||||||
|
|
|
@ -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"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
|
@ -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() }
|
||||||
),
|
),
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
|
@ -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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue