Skip to content

Commit 9f2dadc

Browse files
authored
Merge pull request libre-tube#7141 from FineFindus/feat/update-local-feed-data
feat(Feed): update local feed data when watching video
2 parents 9d4a2d7 + abe77f4 commit 9f2dadc

5 files changed

Lines changed: 20 additions & 1 deletion

File tree

app/src/main/java/com/github/libretube/api/SubscriptionHelper.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.github.libretube.api
33
import android.content.Context
44
import com.github.libretube.R
55
import com.github.libretube.constants.PreferenceKeys
6+
import com.github.libretube.db.obj.SubscriptionsFeedItem
67
import com.github.libretube.helpers.PreferenceHelper
78
import com.github.libretube.repo.AccountSubscriptionsRepository
89
import com.github.libretube.repo.FeedProgress
@@ -49,6 +50,7 @@ object SubscriptionHelper {
4950
suspend fun getSubscriptionChannelIds() = subscriptionsRepository.getSubscriptionChannelIds()
5051
suspend fun getFeed(forceRefresh: Boolean, onProgressUpdate: (FeedProgress) -> Unit = {}) =
5152
feedRepository.getFeed(forceRefresh, onProgressUpdate)
53+
suspend fun submitFeedItemChange(feedItem: SubscriptionsFeedItem) = feedRepository.submitFeedItemChange(feedItem)
5254

5355
fun handleUnsubscribe(
5456
context: Context,

app/src/main/java/com/github/libretube/db/dao/SubscriptionsFeedDao.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import androidx.room.Dao
44
import androidx.room.Insert
55
import androidx.room.OnConflictStrategy
66
import androidx.room.Query
7+
import androidx.room.Update
78
import com.github.libretube.db.obj.SubscriptionsFeedItem
89

910
@Dao
@@ -14,6 +15,9 @@ interface SubscriptionsFeedDao {
1415
@Insert(onConflict = OnConflictStrategy.REPLACE)
1516
suspend fun insertAll(feedItems: List<SubscriptionsFeedItem>)
1617

18+
@Update
19+
suspend fun update(feedItem: SubscriptionsFeedItem)
20+
1721
@Query("SELECT EXISTS (SELECT * FROM feedItem WHERE videoId = :videoId)")
1822
suspend fun contains(videoId: String): Boolean
1923

app/src/main/java/com/github/libretube/repo/FeedRepository.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.github.libretube.repo
22

33
import com.github.libretube.api.obj.StreamItem
4+
import com.github.libretube.db.obj.SubscriptionsFeedItem
45

56
data class FeedProgress(
67
val currentProgress: Int,
@@ -12,4 +13,5 @@ interface FeedRepository {
1213
forceRefresh: Boolean,
1314
onProgressUpdate: (FeedProgress) -> Unit
1415
): List<StreamItem>
16+
suspend fun submitFeedItemChange(feedItem: SubscriptionsFeedItem) {}
1517
}

app/src/main/java/com/github/libretube/repo/LocalFeedRepository.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ class LocalFeedRepository : FeedRepository {
3535
if (filter.isEnabled) tab else null
3636
}.toTypedArray()
3737

38+
override suspend fun submitFeedItemChange(feedItem: SubscriptionsFeedItem) {
39+
DatabaseHolder.Database.feedDao().update(feedItem)
40+
}
41+
3842
override suspend fun getFeed(
3943
forceRefresh: Boolean,
4044
onProgressUpdate: (FeedProgress) -> Unit

app/src/main/java/com/github/libretube/services/OnlinePlayerService.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,13 @@ import com.github.libretube.R
1414
import com.github.libretube.api.JsonHelper
1515
import com.github.libretube.api.RetrofitInstance
1616
import com.github.libretube.api.StreamsExtractor
17+
import com.github.libretube.api.SubscriptionHelper
1718
import com.github.libretube.api.obj.Segment
1819
import com.github.libretube.api.obj.Streams
1920
import com.github.libretube.constants.IntentData
2021
import com.github.libretube.constants.PreferenceKeys
2122
import com.github.libretube.db.DatabaseHelper
23+
import com.github.libretube.db.DatabaseHolder
2224
import com.github.libretube.enums.PlayerCommand
2325
import com.github.libretube.extensions.parcelable
2426
import com.github.libretube.extensions.setMetadata
@@ -138,9 +140,14 @@ open class OnlinePlayerService : AbstractPlayerService() {
138140
PlayingQueue.insertRelatedStreams(streams!!.relatedStreams)
139141
}
140142

141-
// save the current stream to the queue
142143
streams?.toStreamItem(videoId)?.let {
144+
// save the current stream to the queue
143145
PlayingQueue.updateCurrent(it)
146+
147+
// update feed item with newer information, e.g. more up-to-date views
148+
SubscriptionHelper.submitFeedItemChange(
149+
it.toFeedItem()
150+
)
144151
}
145152

146153
withContext(Dispatchers.Main) {

0 commit comments

Comments
 (0)