mirror of
https://github.com/mastodon/mastodon-ios
synced 2025-04-11 22:58:02 +02:00
Remove the status metric view from the accessibility hierarchy
This commit is contained in:
parent
3876855bc9
commit
8f3caba089
@ -100,6 +100,8 @@ extension StatusMetricView {
|
|||||||
|
|
||||||
reblogButton.addTarget(self, action: #selector(StatusMetricView.reblogButtonDidPressed(_:)), for: .touchUpInside)
|
reblogButton.addTarget(self, action: #selector(StatusMetricView.reblogButtonDidPressed(_:)), for: .touchUpInside)
|
||||||
favoriteButton.addTarget(self, action: #selector(StatusMetricView.favoriteButtonDidPressed(_:)), for: .touchUpInside)
|
favoriteButton.addTarget(self, action: #selector(StatusMetricView.favoriteButtonDidPressed(_:)), for: .touchUpInside)
|
||||||
|
|
||||||
|
accessibilityElementsHidden = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -258,8 +258,7 @@ extension StatusView.ViewModel {
|
|||||||
return text
|
return text
|
||||||
}
|
}
|
||||||
.removeDuplicates()
|
.removeDuplicates()
|
||||||
|
.assign(to: &$timestampText)
|
||||||
timestampPublisher.assign(to: &$timestampText)
|
|
||||||
|
|
||||||
$timestampText
|
$timestampText
|
||||||
.sink { [weak self] text in
|
.sink { [weak self] text in
|
||||||
@ -269,9 +268,13 @@ extension StatusView.ViewModel {
|
|||||||
.store(in: &disposeBag)
|
.store(in: &disposeBag)
|
||||||
|
|
||||||
// accessibility label
|
// accessibility label
|
||||||
Publishers.CombineLatest3($authorName, usernamePublisher, timestampPublisher)
|
Publishers.CombineLatest4($authorName, usernamePublisher, $timestampText, $timestamp)
|
||||||
.map { name, username, timestamp in
|
.map { name, username, timestampText, timestamp in
|
||||||
"\(name?.string ?? "") \(username), \(timestamp)"
|
let formatter = DateFormatter()
|
||||||
|
formatter.dateStyle = .medium
|
||||||
|
formatter.timeStyle = .short
|
||||||
|
let longTimestamp = timestamp.map { formatter.string(from: $0) } ?? ""
|
||||||
|
return "\(name?.string ?? "") \(username), \(timestampText). \(longTimestamp)"
|
||||||
}
|
}
|
||||||
.assign(to: \.accessibilityLabel, on: authorView)
|
.assign(to: \.accessibilityLabel, on: authorView)
|
||||||
.store(in: &disposeBag)
|
.store(in: &disposeBag)
|
||||||
|
@ -623,6 +623,14 @@ extension StatusView: ActionToolbarContainerDelegate {
|
|||||||
public func actionToolbarContainer(_ actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) {
|
public func actionToolbarContainer(_ actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action) {
|
||||||
delegate?.statusView(self, actionToolbarContainer: actionToolbarContainer, buttonDidPressed: button, action: action)
|
delegate?.statusView(self, actionToolbarContainer: actionToolbarContainer, buttonDidPressed: button, action: action)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func actionToolbarContainer(_ actionToolbarContainer: ActionToolbarContainer, showReblogs action: UIAccessibilityCustomAction) {
|
||||||
|
delegate?.statusView(self, statusMetricView: statusMetricView, reblogButtonDidPressed: statusMetricView.reblogButton)
|
||||||
|
}
|
||||||
|
|
||||||
|
public func actionToolbarContainer(_ actionToolbarContainer: ActionToolbarContainer, showFavorites action: UIAccessibilityCustomAction) {
|
||||||
|
delegate?.statusView(self, statusMetricView: statusMetricView, favoriteButtonDidPressed: statusMetricView.favoriteButton)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - StatusMetricViewDelegate
|
// MARK: - StatusMetricViewDelegate
|
||||||
|
@ -12,6 +12,8 @@ import MastodonLocalization
|
|||||||
|
|
||||||
public protocol ActionToolbarContainerDelegate: AnyObject {
|
public protocol ActionToolbarContainerDelegate: AnyObject {
|
||||||
func actionToolbarContainer(_ actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action)
|
func actionToolbarContainer(_ actionToolbarContainer: ActionToolbarContainer, buttonDidPressed button: UIButton, action: ActionToolbarContainer.Action)
|
||||||
|
func actionToolbarContainer(_ actionToolbarContainer: ActionToolbarContainer, showReblogs action: UIAccessibilityCustomAction)
|
||||||
|
func actionToolbarContainer(_ actionToolbarContainer: ActionToolbarContainer, showFavorites action: UIAccessibilityCustomAction)
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class ActionToolbarContainer: UIView {
|
public final class ActionToolbarContainer: UIView {
|
||||||
@ -222,6 +224,7 @@ extension ActionToolbarContainer {
|
|||||||
public func configureReblog(count: Int, isEnabled: Bool, isHighlighted: Bool) {
|
public func configureReblog(count: Int, isEnabled: Bool, isHighlighted: Bool) {
|
||||||
let title = ActionToolbarContainer.title(from: count)
|
let title = ActionToolbarContainer.title(from: count)
|
||||||
reblogButton.setTitle(title, for: .normal)
|
reblogButton.setTitle(title, for: .normal)
|
||||||
|
reblogButton.accessibilityValue = L10n.Plural.Count.reblog(count)
|
||||||
reblogButton.isEnabled = isEnabled
|
reblogButton.isEnabled = isEnabled
|
||||||
reblogButton.setImage(ActionToolbarContainer.reblogImage, for: .normal)
|
reblogButton.setImage(ActionToolbarContainer.reblogImage, for: .normal)
|
||||||
let tintColor = isHighlighted ? Asset.Colors.successGreen.color : Asset.Colors.Button.actionToolbar.color
|
let tintColor = isHighlighted ? Asset.Colors.successGreen.color : Asset.Colors.Button.actionToolbar.color
|
||||||
@ -231,15 +234,24 @@ extension ActionToolbarContainer {
|
|||||||
|
|
||||||
if isHighlighted {
|
if isHighlighted {
|
||||||
reblogButton.accessibilityTraits.insert(.selected)
|
reblogButton.accessibilityTraits.insert(.selected)
|
||||||
|
reblogButton.accessibilityLabel = L10n.Common.Controls.Status.Actions.unreblog
|
||||||
} else {
|
} else {
|
||||||
reblogButton.accessibilityTraits.remove(.selected)
|
reblogButton.accessibilityTraits.remove(.selected)
|
||||||
|
reblogButton.accessibilityLabel = L10n.Common.Controls.Status.Actions.reblog
|
||||||
}
|
}
|
||||||
reblogButton.accessibilityLabel = L10n.Plural.Count.reblog(count)
|
reblogButton.accessibilityCustomActions = [
|
||||||
|
UIAccessibilityCustomAction(name: "Show All Reblogs") { [weak self] action in
|
||||||
|
guard let self = self else { return false }
|
||||||
|
self.delegate?.actionToolbarContainer(self, showReblogs: action)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
public func configureFavorite(count: Int, isEnabled: Bool, isHighlighted: Bool) {
|
public func configureFavorite(count: Int, isEnabled: Bool, isHighlighted: Bool) {
|
||||||
let title = ActionToolbarContainer.title(from: count)
|
let title = ActionToolbarContainer.title(from: count)
|
||||||
favoriteButton.setTitle(title, for: .normal)
|
favoriteButton.setTitle(title, for: .normal)
|
||||||
|
favoriteButton.accessibilityValue = L10n.Plural.Count.favorite(count)
|
||||||
favoriteButton.isEnabled = isEnabled
|
favoriteButton.isEnabled = isEnabled
|
||||||
let image = isHighlighted ? ActionToolbarContainer.starFillImage : ActionToolbarContainer.starImage
|
let image = isHighlighted ? ActionToolbarContainer.starFillImage : ActionToolbarContainer.starImage
|
||||||
favoriteButton.setImage(image, for: .normal)
|
favoriteButton.setImage(image, for: .normal)
|
||||||
@ -250,10 +262,18 @@ extension ActionToolbarContainer {
|
|||||||
|
|
||||||
if isHighlighted {
|
if isHighlighted {
|
||||||
favoriteButton.accessibilityTraits.insert(.selected)
|
favoriteButton.accessibilityTraits.insert(.selected)
|
||||||
|
favoriteButton.accessibilityLabel = L10n.Common.Controls.Status.Actions.unfavorite
|
||||||
} else {
|
} else {
|
||||||
favoriteButton.accessibilityTraits.remove(.selected)
|
favoriteButton.accessibilityTraits.remove(.selected)
|
||||||
|
favoriteButton.accessibilityLabel = L10n.Common.Controls.Status.Actions.favorite
|
||||||
}
|
}
|
||||||
favoriteButton.accessibilityLabel = L10n.Plural.Count.favorite(count)
|
favoriteButton.accessibilityCustomActions = [
|
||||||
|
UIAccessibilityCustomAction(name: "Show All Favorites") { [weak self] action in
|
||||||
|
guard let self = self else { return false }
|
||||||
|
self.delegate?.actionToolbarContainer(self, showFavorites: action)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user