mirror of
https://github.com/libre-tube/LibreTube.git
synced 2025-04-28 16:00:31 +05:30
Merge pull request #7141 from FineFindus/feat/update-local-feed-data
feat(Feed): update local feed data when watching video
This commit is contained in:
commit
9f2dadce3a
@ -3,6 +3,7 @@ package com.github.libretube.api
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
import com.github.libretube.constants.PreferenceKeys
|
import com.github.libretube.constants.PreferenceKeys
|
||||||
|
import com.github.libretube.db.obj.SubscriptionsFeedItem
|
||||||
import com.github.libretube.helpers.PreferenceHelper
|
import com.github.libretube.helpers.PreferenceHelper
|
||||||
import com.github.libretube.repo.AccountSubscriptionsRepository
|
import com.github.libretube.repo.AccountSubscriptionsRepository
|
||||||
import com.github.libretube.repo.FeedProgress
|
import com.github.libretube.repo.FeedProgress
|
||||||
@ -49,6 +50,7 @@ object SubscriptionHelper {
|
|||||||
suspend fun getSubscriptionChannelIds() = subscriptionsRepository.getSubscriptionChannelIds()
|
suspend fun getSubscriptionChannelIds() = subscriptionsRepository.getSubscriptionChannelIds()
|
||||||
suspend fun getFeed(forceRefresh: Boolean, onProgressUpdate: (FeedProgress) -> Unit = {}) =
|
suspend fun getFeed(forceRefresh: Boolean, onProgressUpdate: (FeedProgress) -> Unit = {}) =
|
||||||
feedRepository.getFeed(forceRefresh, onProgressUpdate)
|
feedRepository.getFeed(forceRefresh, onProgressUpdate)
|
||||||
|
suspend fun submitFeedItemChange(feedItem: SubscriptionsFeedItem) = feedRepository.submitFeedItemChange(feedItem)
|
||||||
|
|
||||||
fun handleUnsubscribe(
|
fun handleUnsubscribe(
|
||||||
context: Context,
|
context: Context,
|
||||||
|
@ -4,6 +4,7 @@ import androidx.room.Dao
|
|||||||
import androidx.room.Insert
|
import androidx.room.Insert
|
||||||
import androidx.room.OnConflictStrategy
|
import androidx.room.OnConflictStrategy
|
||||||
import androidx.room.Query
|
import androidx.room.Query
|
||||||
|
import androidx.room.Update
|
||||||
import com.github.libretube.db.obj.SubscriptionsFeedItem
|
import com.github.libretube.db.obj.SubscriptionsFeedItem
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
@ -14,6 +15,9 @@ interface SubscriptionsFeedDao {
|
|||||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
||||||
suspend fun insertAll(feedItems: List<SubscriptionsFeedItem>)
|
suspend fun insertAll(feedItems: List<SubscriptionsFeedItem>)
|
||||||
|
|
||||||
|
@Update
|
||||||
|
suspend fun update(feedItem: SubscriptionsFeedItem)
|
||||||
|
|
||||||
@Query("SELECT EXISTS (SELECT * FROM feedItem WHERE videoId = :videoId)")
|
@Query("SELECT EXISTS (SELECT * FROM feedItem WHERE videoId = :videoId)")
|
||||||
suspend fun contains(videoId: String): Boolean
|
suspend fun contains(videoId: String): Boolean
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.github.libretube.repo
|
package com.github.libretube.repo
|
||||||
|
|
||||||
import com.github.libretube.api.obj.StreamItem
|
import com.github.libretube.api.obj.StreamItem
|
||||||
|
import com.github.libretube.db.obj.SubscriptionsFeedItem
|
||||||
|
|
||||||
data class FeedProgress(
|
data class FeedProgress(
|
||||||
val currentProgress: Int,
|
val currentProgress: Int,
|
||||||
@ -12,4 +13,5 @@ interface FeedRepository {
|
|||||||
forceRefresh: Boolean,
|
forceRefresh: Boolean,
|
||||||
onProgressUpdate: (FeedProgress) -> Unit
|
onProgressUpdate: (FeedProgress) -> Unit
|
||||||
): List<StreamItem>
|
): List<StreamItem>
|
||||||
|
suspend fun submitFeedItemChange(feedItem: SubscriptionsFeedItem) {}
|
||||||
}
|
}
|
@ -35,6 +35,10 @@ class LocalFeedRepository : FeedRepository {
|
|||||||
if (filter.isEnabled) tab else null
|
if (filter.isEnabled) tab else null
|
||||||
}.toTypedArray()
|
}.toTypedArray()
|
||||||
|
|
||||||
|
override suspend fun submitFeedItemChange(feedItem: SubscriptionsFeedItem) {
|
||||||
|
DatabaseHolder.Database.feedDao().update(feedItem)
|
||||||
|
}
|
||||||
|
|
||||||
override suspend fun getFeed(
|
override suspend fun getFeed(
|
||||||
forceRefresh: Boolean,
|
forceRefresh: Boolean,
|
||||||
onProgressUpdate: (FeedProgress) -> Unit
|
onProgressUpdate: (FeedProgress) -> Unit
|
||||||
|
@ -14,11 +14,13 @@ import com.github.libretube.R
|
|||||||
import com.github.libretube.api.JsonHelper
|
import com.github.libretube.api.JsonHelper
|
||||||
import com.github.libretube.api.RetrofitInstance
|
import com.github.libretube.api.RetrofitInstance
|
||||||
import com.github.libretube.api.StreamsExtractor
|
import com.github.libretube.api.StreamsExtractor
|
||||||
|
import com.github.libretube.api.SubscriptionHelper
|
||||||
import com.github.libretube.api.obj.Segment
|
import com.github.libretube.api.obj.Segment
|
||||||
import com.github.libretube.api.obj.Streams
|
import com.github.libretube.api.obj.Streams
|
||||||
import com.github.libretube.constants.IntentData
|
import com.github.libretube.constants.IntentData
|
||||||
import com.github.libretube.constants.PreferenceKeys
|
import com.github.libretube.constants.PreferenceKeys
|
||||||
import com.github.libretube.db.DatabaseHelper
|
import com.github.libretube.db.DatabaseHelper
|
||||||
|
import com.github.libretube.db.DatabaseHolder
|
||||||
import com.github.libretube.enums.PlayerCommand
|
import com.github.libretube.enums.PlayerCommand
|
||||||
import com.github.libretube.extensions.parcelable
|
import com.github.libretube.extensions.parcelable
|
||||||
import com.github.libretube.extensions.setMetadata
|
import com.github.libretube.extensions.setMetadata
|
||||||
@ -138,9 +140,14 @@ open class OnlinePlayerService : AbstractPlayerService() {
|
|||||||
PlayingQueue.insertRelatedStreams(streams!!.relatedStreams)
|
PlayingQueue.insertRelatedStreams(streams!!.relatedStreams)
|
||||||
}
|
}
|
||||||
|
|
||||||
// save the current stream to the queue
|
|
||||||
streams?.toStreamItem(videoId)?.let {
|
streams?.toStreamItem(videoId)?.let {
|
||||||
|
// save the current stream to the queue
|
||||||
PlayingQueue.updateCurrent(it)
|
PlayingQueue.updateCurrent(it)
|
||||||
|
|
||||||
|
// update feed item with newer information, e.g. more up-to-date views
|
||||||
|
SubscriptionHelper.submitFeedItemChange(
|
||||||
|
it.toFeedItem()
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
withContext(Dispatchers.Main) {
|
withContext(Dispatchers.Main) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user