diff --git a/Localizations/Localizable.strings b/Localizations/Localizable.strings
index acfb90c..cc49a49 100644
--- a/Localizations/Localizable.strings
+++ b/Localizations/Localizable.strings
@@ -2,6 +2,7 @@
"about" = "About";
"about.acknowledgments" = "Acknowledgments";
+"accessibility.activate-link-%@" = "Activate link: %@";
"account.%@-followers" = "%@'s Followers";
"account.accept-follow-request-button.accessibility-label" = "Accept follow request";
"account.avatar.accessibility-label-%@" = "Avatar: %@";
@@ -11,7 +12,6 @@
"account.domain-block.confirm-%@" = "Block domain %@?";
"account.domain-unblock-%@" = "Unblock domain %@";
"account.domain-unblock.confirm-%@" = "Unblock domain %@?";
-"account.field.activate-link-accessibility-action-%@" = "Activate link: %@";
"account.field.verified" = "Verified %@";
"account.follow" = "Follow";
"account.following" = "Following";
@@ -237,6 +237,7 @@
"search.scope.statuses.toot" = "Toots";
"search.scope.tags" = "Hashtags";
"share-extension-error.no-account-found" = "No account found";
+"status.accessibility.view-author-profile" = "View author's profile";
"status.bookmark" = "Bookmark";
"status.content-warning-abbreviation" = "CW";
"status.content-warning.accessibility" = "Content warning";
diff --git a/Localizations/Localizable.stringsdict b/Localizations/Localizable.stringsdict
index fddb0c9..6c25399 100644
--- a/Localizations/Localizable.stringsdict
+++ b/Localizations/Localizable.stringsdict
@@ -66,6 +66,22 @@
%ld Favorites
+ status.replies-count
+
+ NSStringLocalizedFormatKey
+ %#@replies@
+ replies
+
+ NSStringFormatSpecTypeKey
+ NSStringPluralRuleType
+ NSStringFormatValueTypeKey
+ ld
+ one
+ %ld Reply
+ other
+ %ld Replies
+
+
account.followers-count
NSStringLocalizedFormatKey
diff --git a/Views/UIKit/AccountFieldView.swift b/Views/UIKit/AccountFieldView.swift
index 0b578fa..7c310ef 100644
--- a/Views/UIKit/AccountFieldView.swift
+++ b/Views/UIKit/AccountFieldView.swift
@@ -167,7 +167,7 @@ final class AccountFieldView: UIView {
accessibilityCustomActions.append(
UIAccessibilityCustomAction(
name: String.localizedStringWithFormat(
- NSLocalizedString("account.field.activate-link-accessibility-action-%@", comment: ""),
+ NSLocalizedString("accessibility.activate-link-%@", comment: ""),
mutableValue.attributedSubstring(from: range).string)) { [weak self] _ in
guard let valueTextView = self?.valueTextView else { return false }
diff --git a/Views/UIKit/Content Views/StatusView.swift b/Views/UIKit/Content Views/StatusView.swift
index 52b0202..f6f649c 100644
--- a/Views/UIKit/Content Views/StatusView.swift
+++ b/Views/UIKit/Content Views/StatusView.swift
@@ -510,6 +510,29 @@ private extension StatusView {
accessibilityAttributedLabel.appendWithSeparator(accessibilityTime)
}
+ if viewModel.repliesCount > 0 {
+ accessibilityAttributedLabel.appendWithSeparator(
+ String.localizedStringWithFormat(
+ NSLocalizedString("status.replies-count", comment: ""),
+ viewModel.repliesCount))
+ }
+
+ if viewModel.identityContext.appPreferences.showReblogAndFavoriteCounts {
+ if viewModel.reblogsCount > 0 {
+ accessibilityAttributedLabel.appendWithSeparator(
+ String.localizedStringWithFormat(
+ NSLocalizedString("status.reblogs-count", comment: ""),
+ viewModel.reblogsCount))
+ }
+
+ if viewModel.favoritesCount > 0 {
+ accessibilityAttributedLabel.appendWithSeparator(
+ String.localizedStringWithFormat(
+ NSLocalizedString("status.favorites-count", comment: ""),
+ viewModel.favoritesCount))
+ }
+ }
+
self.accessibilityAttributedLabel = accessibilityAttributedLabel
configureUserInteractionEnabledForAccessibility()
@@ -723,6 +746,17 @@ private extension StatusView {
})
}
+ actions.append(
+ UIAccessibilityCustomAction(
+ name: NSLocalizedString("status.accessibility.view-author-profile",
+ comment: "")) { [weak self] _ in
+ self?.statusConfiguration.viewModel.accountSelected()
+
+ return true
+ })
+
+ actions.append(contentsOf: bodyView.accessibilityCustomActions ?? [])
+
if menuButton.isEnabled {
actions.append(UIAccessibilityCustomAction(
name: viewModel.bookmarked
diff --git a/Views/UIKit/StatusBodyView.swift b/Views/UIKit/StatusBodyView.swift
index f639dff..9fca2db 100644
--- a/Views/UIKit/StatusBodyView.swift
+++ b/Views/UIKit/StatusBodyView.swift
@@ -91,6 +91,33 @@ final class StatusBodyView: UIView {
}
self.accessibilityAttributedLabel = accessibilityAttributedLabel
+
+ var accessibilityCustomActions = [UIAccessibilityCustomAction]()
+
+ mutableContent.enumerateAttribute(
+ .link,
+ in: NSRange(location: 0, length: mutableContent.length),
+ options: []) { attribute, range, _ in
+ guard let url = attribute as? URL else { return }
+
+ accessibilityCustomActions.append(
+ UIAccessibilityCustomAction(
+ name: String.localizedStringWithFormat(
+ NSLocalizedString("accessibility.activate-link-%@", comment: ""),
+ mutableContent.attributedSubstring(from: range).string)) { [weak self] _ in
+ guard let contentTextView = self?.contentTextView else { return false }
+
+ _ = contentTextView.delegate?.textView?(
+ contentTextView,
+ shouldInteractWith: url,
+ in: range,
+ interaction: .invokeDefaultAction)
+
+ return true
+ })
+ }
+
+ self.accessibilityCustomActions = accessibilityCustomActions
}
}