Add feature flag to disable hide shorts functionality

The hide shorts feature is no longer working due to API changes that prevent reliable detection of short videos. This commit introduces a feature flag system to disable the functionality while preserving the ability to easily restore it if the API issue is resolved.

Changes:
- Add FeatureFlags.swift with hideShortsEnabled flag (currently disabled)
- Hide all HideShortsButtons UI elements when flag is disabled
- Disable shorts filtering logic in ContentItemView, FavoriteItemView, and FeedModel
- Preserve hideShorts user preference for future restoration
This commit is contained in:
Arkadiusz Fal
2025-11-20 13:05:12 +01:00
parent 680ac9a8a0
commit bb2bd86c07
6 changed files with 55 additions and 25 deletions

View File

@@ -50,9 +50,11 @@ struct FavoriteItemView: View {
.frame(maxWidth: .infinity, alignment: .leading)
.foregroundColor(.secondary)
if hideShorts || hideWatched {
if (FeatureFlags.hideShortsEnabled && hideShorts) || hideWatched {
AccentButton(text: "Disable filters", maxWidth: nil, verticalPadding: 0, minHeight: 30) {
hideShorts = false
if FeatureFlags.hideShortsEnabled {
hideShorts = false
}
hideWatched = false
reloadVisibleWatches()
}
@@ -107,7 +109,7 @@ struct FavoriteItemView: View {
resource?.removeObservers(ownedBy: store)
}
.onChange(of: player.currentVideo) { _ in if !player.presentingPlayer { reloadVisibleWatches() } }
.onChange(of: hideShorts) { _ in if !player.presentingPlayer { reloadVisibleWatches() } }
.onChange(of: hideShorts) { _ in if !player.presentingPlayer && FeatureFlags.hideShortsEnabled { reloadVisibleWatches() } }
.onChange(of: hideWatched) { _ in if !player.presentingPlayer { reloadVisibleWatches() } }
// Delay is necessary to update the list with the new items.
.onChange(of: favoritesChanged) { _ in if !player.presentingPlayer { Delay.by(1.0) { reloadVisibleWatches() } } }
@@ -135,9 +137,9 @@ struct FavoriteItemView: View {
var emptyItemsText: String {
var filterText = ""
if hideShorts && hideWatched {
if FeatureFlags.hideShortsEnabled && hideShorts && hideWatched {
filterText = "(watched and shorts hidden)"
} else if hideShorts {
} else if FeatureFlags.hideShortsEnabled && hideShorts {
filterText = "(shorts hidden)"
} else if hideWatched {
filterText = "(watched hidden)"
@@ -227,7 +229,7 @@ struct FavoriteItemView: View {
return false
}
guard hideShorts, item.contentType == .video, let video = item.video else {
guard FeatureFlags.hideShortsEnabled, hideShorts, item.contentType == .video, let video = item.video else {
return true
}