diff --git a/Localizations/Localizable.strings b/Localizations/Localizable.strings index 89574e3..e6f2fef 100644 --- a/Localizations/Localizable.strings +++ b/Localizations/Localizable.strings @@ -152,6 +152,7 @@ "preferences.position.remember-position" = "Remember position"; "preferences.position.sync-position" = "Sync position with web and other devices"; "preferences.position.newest" = "Load newest"; +"preferences.show-reblog-and-favorite-counts" = "Show reblog and favorite counts"; "filters.active" = "Active"; "filters.expired" = "Expired"; "filter.add-new" = "Add New Filter"; diff --git a/ServiceLayer/Sources/ServiceLayer/Utilities/AppPreferences.swift b/ServiceLayer/Sources/ServiceLayer/Utilities/AppPreferences.swift index 15bdede..f2b7f16 100644 --- a/ServiceLayer/Sources/ServiceLayer/Utilities/AppPreferences.swift +++ b/ServiceLayer/Sources/ServiceLayer/Utilities/AppPreferences.swift @@ -133,6 +133,11 @@ public extension AppPreferences { return notificationsTabBehavior } } + + var showReblogAndFavoriteCounts: Bool { + get { self[.showReblogAndFavoriteCounts] ?? false } + set { self[.showReblogAndFavoriteCounts] = newValue } + } } extension AppPreferences { @@ -160,6 +165,7 @@ private extension AppPreferences { case homeTimelineBehavior case notificationsTabBehavior case defaultEmojiSkinTone + case showReblogAndFavoriteCounts } subscript(index: Item) -> T? { diff --git a/Views/PreferencesView.swift b/Views/PreferencesView.swift index ebc9c36..2984efe 100644 --- a/Views/PreferencesView.swift +++ b/Views/PreferencesView.swift @@ -92,6 +92,7 @@ struct PreferencesView: View { .disabled(reduceMotion) } .disabled(reduceMotion) + Toggle("preferences.show-reblog-and-favorite-counts", isOn: $identityContext.appPreferences.showReblogAndFavoriteCounts) Picker("preferences.home-timeline-position-on-startup", selection: $identityContext.appPreferences.homeTimelineBehavior) { ForEach(AppPreferences.PositionBehavior.allCases) { option in diff --git a/Views/Status/StatusView.swift b/Views/Status/StatusView.swift index 38f0802..772764c 100644 --- a/Views/Status/StatusView.swift +++ b/Views/Status/StatusView.swift @@ -428,8 +428,14 @@ private extension StatusView { setButtonImages(scale: isContextParent ? .medium : .small) replyButton.setCountTitle(count: viewModel.repliesCount, isContextParent: isContextParent) - reblogButton.setCountTitle(count: viewModel.reblogsCount, isContextParent: isContextParent) - favoriteButton.setCountTitle(count: viewModel.favoritesCount, isContextParent: isContextParent) + + if viewModel.identityContext.appPreferences.showReblogAndFavoriteCounts || isContextParent { + reblogButton.setCountTitle(count: viewModel.reblogsCount, isContextParent: isContextParent) + favoriteButton.setCountTitle(count: viewModel.favoritesCount, isContextParent: isContextParent) + } else { + reblogButton.setTitle(nil, for: .normal) + favoriteButton.setTitle(nil, for: .normal) + } let reblogColor: UIColor = viewModel.reblogged ? .systemGreen : .secondaryLabel @@ -517,7 +523,7 @@ private extension StatusView { private extension UIButton { func setCountTitle(count: Int, isContextParent: Bool) { - setTitle((isContextParent || count == 0) ? "" : String(count), for: .normal) + setTitle((isContextParent || count == 0) ? nil : String(count), for: .normal) } } // swiftlint:enable file_length