Skip to content

Commit a5ce0eb

Browse files
authored
Merge pull request #7895 from Bnyro/master
fix: featured content section on home page doesn't respect all feed filters
2 parents 16e5e37 + 91994c9 commit a5ce0eb

4 files changed

Lines changed: 13 additions & 27 deletions

File tree

app/src/main/java/com/github/libretube/db/DatabaseHelper.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,13 +105,15 @@ object DatabaseHelper {
105105
return unfinished xor isVideoWatched(watchHistoryItem.videoId, watchHistoryItem.duration ?: 0)
106106
}
107107

108-
suspend fun filterByStatusAndWatchPosition(
108+
suspend fun filterByStreamTypeAndWatchPosition(
109109
streams: List<StreamItem>,
110-
hideWatched: Boolean
110+
hideWatched: Boolean,
111+
showUpcoming: Boolean
111112
): List<StreamItem> {
112113
val streamItems = streams.filter {
113-
val isVideo = !it.isShort && !it.isLive
114+
if (!showUpcoming && it.isUpcoming) return@filter false
114115

116+
val isVideo = !it.isShort && !it.isLive
115117
return@filter when {
116118
!ContentFilter.SHORTS.isEnabled && it.isShort -> false
117119
!ContentFilter.VIDEOS.isEnabled && isVideo -> false

app/src/main/java/com/github/libretube/ui/fragments/HomeFragment.kt

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import com.github.libretube.api.obj.StreamItem
1717
import com.github.libretube.constants.PreferenceKeys
1818
import com.github.libretube.constants.PreferenceKeys.HOME_TAB_CONTENT
1919
import com.github.libretube.databinding.FragmentHomeBinding
20-
import com.github.libretube.db.DatabaseHelper
2120
import com.github.libretube.db.obj.PlaylistBookmark
2221
import com.github.libretube.helpers.PreferenceHelper
2322
import com.github.libretube.ui.activities.SettingsActivity
@@ -32,7 +31,6 @@ import com.google.android.material.carousel.CarouselSnapHelper
3231
import com.google.android.material.carousel.UncontainedCarouselStrategy
3332
import com.google.android.material.dialog.MaterialAlertDialogBuilder
3433
import com.google.android.material.snackbar.Snackbar
35-
import kotlinx.coroutines.runBlocking
3634

3735

3836
class HomeFragment : Fragment(R.layout.fragment_home) {
@@ -211,10 +209,7 @@ class HomeFragment : Fragment(R.layout.fragment_home) {
211209
if (streamItems == null) return
212210

213211
makeVisible(binding.featuredRV, binding.featuredTV)
214-
val hideWatched = PreferenceHelper.getBoolean(PreferenceKeys.HIDE_WATCHED_FROM_FEED, false)
215-
val feedVideos = streamItems
216-
.let { runBlocking { DatabaseHelper.filterByStatusAndWatchPosition(it, hideWatched) } }
217-
.take(20)
212+
val feedVideos = streamItems.take(20)
218213

219214
feedAdapter.submitList(feedVideos)
220215
}

app/src/main/java/com/github/libretube/ui/fragments/SubscriptionsFragment.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,9 @@ class SubscriptionsFragment : DynamicLayoutManagerFragment(R.layout.fragment_sub
214214
private suspend fun playByGroup(groupIndex: Int) {
215215
val streams = viewModel.videoFeed.value.orEmpty()
216216
.filterByGroup(groupIndex)
217-
.let { DatabaseHelper.filterByStatusAndWatchPosition(it, hideWatched) }
217+
.let {
218+
DatabaseHelper.filterByStreamTypeAndWatchPosition(it, hideWatched, showUpcoming)
219+
}
218220
.sortedBySelectedOrder()
219221

220222
if (streams.isEmpty()) return
@@ -286,9 +288,8 @@ class SubscriptionsFragment : DynamicLayoutManagerFragment(R.layout.fragment_sub
286288

287289
val feed = videoFeed
288290
.filterByGroup(selectedFilterGroup)
289-
.filter { showUpcoming || !it.isUpcoming }
290291
.let {
291-
DatabaseHelper.filterByStatusAndWatchPosition(it, hideWatched)
292+
DatabaseHelper.filterByStreamTypeAndWatchPosition(it, hideWatched, showUpcoming)
292293
}
293294

294295
val sortedFeed = feed

app/src/main/java/com/github/libretube/ui/models/HomeViewModel.kt

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,9 @@ import com.github.libretube.api.TrendingCategory
1111
import com.github.libretube.api.obj.Playlists
1212
import com.github.libretube.api.obj.StreamItem
1313
import com.github.libretube.constants.PreferenceKeys
14-
import com.github.libretube.constants.PreferenceKeys.HIDE_WATCHED_FROM_FEED
1514
import com.github.libretube.db.DatabaseHelper
1615
import com.github.libretube.db.DatabaseHolder
1716
import com.github.libretube.db.obj.PlaylistBookmark
18-
import com.github.libretube.enums.ContentFilter
1917
import com.github.libretube.extensions.runSafely
2018
import com.github.libretube.extensions.updateIfChanged
2119
import com.github.libretube.helpers.PlayerHelper
@@ -29,7 +27,8 @@ import kotlinx.coroutines.launch
2927
import kotlinx.coroutines.withContext
3028

3129
class HomeViewModel : ViewModel() {
32-
private val hideWatched get() = PreferenceHelper.getBoolean(HIDE_WATCHED_FROM_FEED, false)
30+
private val hideWatched get() = PreferenceHelper.getBoolean(PreferenceKeys.HIDE_WATCHED_FROM_FEED, false)
31+
private val showUpcoming get() = PreferenceHelper.getBoolean(PreferenceKeys.SHOW_UPCOMING_IN_FEED, true)
3332

3433
val trending: MutableLiveData<Pair<TrendingCategory, TrendsViewModel.TrendingStreams>> =
3534
MutableLiveData(null)
@@ -138,18 +137,7 @@ class HomeViewModel : ViewModel() {
138137
val feed = SubscriptionHelper.getFeed(forceRefresh = false)
139138
subscriptionsViewModel.videoFeed.postValue(feed)
140139

141-
return if (hideWatched) feed.filterWatched() else feed
142-
}
143-
144-
private suspend fun List<StreamItem>.filterWatched(): List<StreamItem> {
145-
val allowShorts = ContentFilter.SHORTS.isEnabled
146-
val allowVideos = ContentFilter.VIDEOS.isEnabled
147-
val allowAll = (!allowShorts && !allowVideos)
148-
149-
val filteredFeed = this.filter {
150-
allowAll || (allowShorts && it.isShort) || (allowVideos && !it.isShort)
151-
}
152-
return DatabaseHelper.filterUnwatched(filteredFeed)
140+
return DatabaseHelper.filterByStreamTypeAndWatchPosition(feed, hideWatched, showUpcoming)
153141
}
154142

155143
companion object {

0 commit comments

Comments
 (0)