fix(SubscriptionsFragment): update last feed time to last video time

With the introduction of the local feed extraction, which only refreshes
the feed naturally once a day, it is possible for the user to update the
`lastFeedWatchedTime`, but not fetch the feed itself, leading to a
disconnect between both values.
When the feed is then later on refreshed, the caught-up-indicator is
only displayed for the videos since the last app open, and not all new
videos since the last refresh.
This commit is contained in:
FineFindus 2025-01-23 16:22:44 +01:00
parent d1fa614560
commit 54835c9e1f
No known key found for this signature in database
GPG Key ID: 64873EE210FF8E6B
2 changed files with 6 additions and 5 deletions

View File

@ -5,7 +5,6 @@ import android.content.SharedPreferences
import androidx.core.content.edit import androidx.core.content.edit
import androidx.preference.PreferenceManager import androidx.preference.PreferenceManager
import com.github.libretube.constants.PreferenceKeys import com.github.libretube.constants.PreferenceKeys
import java.time.Instant
object PreferenceHelper { object PreferenceHelper {
/** /**
@ -105,8 +104,8 @@ object PreferenceHelper {
return getString(PreferenceKeys.LAST_STREAM_VIDEO_ID, "") return getString(PreferenceKeys.LAST_STREAM_VIDEO_ID, "")
} }
fun updateLastFeedWatchedTime() { fun setLastFeedWatchedTime(time: Long) {
putLong(PreferenceKeys.LAST_WATCHED_FEED_TIME, Instant.now().epochSecond) putLong(PreferenceKeys.LAST_WATCHED_FEED_TIME, time)
} }
fun getLastCheckedFeedTime(): Long { fun getLastCheckedFeedTime(): Long {

View File

@ -358,7 +358,7 @@ class SubscriptionsFragment : DynamicLayoutManagerFragment(R.layout.fragment_sub
// add an "all caught up item" // add an "all caught up item"
if (selectedSortOrder == 0) { if (selectedSortOrder == 0) {
val lastCheckedFeedTime = PreferenceHelper.getLastCheckedFeedTime() val lastCheckedFeedTime = PreferenceHelper.getLastCheckedFeedTime()
val caughtUpIndex = feed.indexOfFirst { it.uploaded / 1000 < lastCheckedFeedTime && !it.isUpcoming } val caughtUpIndex = feed.indexOfFirst { it.uploaded <= lastCheckedFeedTime && !it.isUpcoming }
if (caughtUpIndex > 0) { if (caughtUpIndex > 0) {
sortedFeed.add( sortedFeed.add(
caughtUpIndex, caughtUpIndex,
@ -380,7 +380,9 @@ class SubscriptionsFragment : DynamicLayoutManagerFragment(R.layout.fragment_sub
binding.subFeed.adapter = feedAdapter binding.subFeed.adapter = feedAdapter
binding.toggleSubs.text = getString(R.string.subscriptions) binding.toggleSubs.text = getString(R.string.subscriptions)
PreferenceHelper.updateLastFeedWatchedTime() feed.firstOrNull { !it.isUpcoming }?.uploaded?.let {
PreferenceHelper.setLastFeedWatchedTime(it)
};
} }
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")