mirror of
https://github.com/libre-tube/LibreTube.git
synced 2024-12-14 14:20:30 +05:30
commit
7233f81b3f
@ -5,12 +5,13 @@ import com.github.libretube.constants.PreferenceKeys
|
|||||||
import com.github.libretube.db.DatabaseHolder.Companion.Database
|
import com.github.libretube.db.DatabaseHolder.Companion.Database
|
||||||
import com.github.libretube.db.obj.SearchHistoryItem
|
import com.github.libretube.db.obj.SearchHistoryItem
|
||||||
import com.github.libretube.db.obj.WatchHistoryItem
|
import com.github.libretube.db.obj.WatchHistoryItem
|
||||||
import com.github.libretube.db.obj.WatchPosition
|
|
||||||
import com.github.libretube.extensions.query
|
import com.github.libretube.extensions.query
|
||||||
import com.github.libretube.extensions.toID
|
import com.github.libretube.extensions.toID
|
||||||
import com.github.libretube.util.PreferenceHelper
|
import com.github.libretube.util.PreferenceHelper
|
||||||
|
|
||||||
object DatabaseHelper {
|
object DatabaseHelper {
|
||||||
|
private const val MAX_SEARCH_HISTORY_SIZE = 20
|
||||||
|
|
||||||
fun addToWatchHistory(videoId: String, streams: Streams) {
|
fun addToWatchHistory(videoId: String, streams: Streams) {
|
||||||
val watchHistoryItem = WatchHistoryItem(
|
val watchHistoryItem = WatchHistoryItem(
|
||||||
videoId,
|
videoId,
|
||||||
@ -37,40 +38,13 @@ object DatabaseHelper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun removeFromWatchHistory(index: Int) {
|
|
||||||
query {
|
|
||||||
Database.watchHistoryDao().delete(
|
|
||||||
Database.watchHistoryDao().getAll()[index]
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun saveWatchPosition(videoId: String, position: Long) {
|
|
||||||
val watchPosition = WatchPosition(
|
|
||||||
videoId,
|
|
||||||
position
|
|
||||||
)
|
|
||||||
query {
|
|
||||||
Database.watchPositionDao().insertAll(watchPosition)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun removeWatchPosition(videoId: String) {
|
|
||||||
query {
|
|
||||||
Database.watchPositionDao().findById(videoId)?.let {
|
|
||||||
Database.watchPositionDao().delete(it)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun addToSearchHistory(searchHistoryItem: SearchHistoryItem) {
|
fun addToSearchHistory(searchHistoryItem: SearchHistoryItem) {
|
||||||
query {
|
query {
|
||||||
Database.searchHistoryDao().insertAll(searchHistoryItem)
|
Database.searchHistoryDao().insertAll(searchHistoryItem)
|
||||||
val maxHistorySize = 20
|
|
||||||
|
|
||||||
// delete the first watch history entry if the limit is reached
|
// delete the first watch history entry if the limit is reached
|
||||||
val searchHistory = Database.searchHistoryDao().getAll()
|
val searchHistory = Database.searchHistoryDao().getAll()
|
||||||
if (searchHistory.size > maxHistorySize) {
|
if (searchHistory.size > MAX_SEARCH_HISTORY_SIZE) {
|
||||||
Database.searchHistoryDao()
|
Database.searchHistoryDao()
|
||||||
.delete(searchHistory.first())
|
.delete(searchHistory.first())
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,9 @@ interface PlaylistBookmarkDao {
|
|||||||
@Delete
|
@Delete
|
||||||
fun delete(playlistBookmark: PlaylistBookmark)
|
fun delete(playlistBookmark: PlaylistBookmark)
|
||||||
|
|
||||||
|
@Query("DELETE FROM playlistBookmark WHERE playlistId = :playlistId")
|
||||||
|
fun deleteById(playlistId: String)
|
||||||
|
|
||||||
@Query("SELECT EXISTS(SELECT * FROM playlistBookmark WHERE playlistId= :playlistId)")
|
@Query("SELECT EXISTS(SELECT * FROM playlistBookmark WHERE playlistId= :playlistId)")
|
||||||
fun includes(playlistId: String): Boolean
|
fun includes(playlistId: String): Boolean
|
||||||
|
|
||||||
|
@ -21,6 +21,9 @@ interface WatchPositionDao {
|
|||||||
@Delete
|
@Delete
|
||||||
fun delete(watchPosition: WatchPosition)
|
fun delete(watchPosition: WatchPosition)
|
||||||
|
|
||||||
|
@Query("DELETE FROM watchHistoryItem WHERE videoId = :videoId")
|
||||||
|
fun deleteById(videoId: String)
|
||||||
|
|
||||||
@Query("DELETE FROM watchPosition")
|
@Query("DELETE FROM watchPosition")
|
||||||
fun deleteAll()
|
fun deleteAll()
|
||||||
}
|
}
|
||||||
|
@ -21,9 +21,11 @@ import com.github.libretube.constants.BACKGROUND_CHANNEL_ID
|
|||||||
import com.github.libretube.constants.IntentData
|
import com.github.libretube.constants.IntentData
|
||||||
import com.github.libretube.constants.PLAYER_NOTIFICATION_ID
|
import com.github.libretube.constants.PLAYER_NOTIFICATION_ID
|
||||||
import com.github.libretube.constants.PreferenceKeys
|
import com.github.libretube.constants.PreferenceKeys
|
||||||
import com.github.libretube.db.DatabaseHelper
|
|
||||||
import com.github.libretube.db.DatabaseHolder
|
import com.github.libretube.db.DatabaseHolder
|
||||||
|
import com.github.libretube.db.DatabaseHolder.Companion.Database
|
||||||
|
import com.github.libretube.db.obj.WatchPosition
|
||||||
import com.github.libretube.extensions.awaitQuery
|
import com.github.libretube.extensions.awaitQuery
|
||||||
|
import com.github.libretube.extensions.query
|
||||||
import com.github.libretube.extensions.toID
|
import com.github.libretube.extensions.toID
|
||||||
import com.github.libretube.extensions.toStreamItem
|
import com.github.libretube.extensions.toStreamItem
|
||||||
import com.github.libretube.util.NowPlayingNotification
|
import com.github.libretube.util.NowPlayingNotification
|
||||||
@ -138,7 +140,9 @@ class BackgroundMode : Service() {
|
|||||||
|
|
||||||
private fun updateWatchPosition() {
|
private fun updateWatchPosition() {
|
||||||
player?.currentPosition?.let {
|
player?.currentPosition?.let {
|
||||||
DatabaseHelper.saveWatchPosition(videoId, it)
|
query {
|
||||||
|
Database.watchPositionDao().insertAll(WatchPosition(videoId, it))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
handler.postDelayed(this::updateWatchPosition, 500)
|
handler.postDelayed(this::updateWatchPosition, 500)
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ import android.view.ViewGroup
|
|||||||
import androidx.fragment.app.FragmentManager
|
import androidx.fragment.app.FragmentManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.github.libretube.databinding.WatchHistoryRowBinding
|
import com.github.libretube.databinding.WatchHistoryRowBinding
|
||||||
import com.github.libretube.db.DatabaseHelper
|
import com.github.libretube.db.DatabaseHolder
|
||||||
import com.github.libretube.db.obj.WatchHistoryItem
|
import com.github.libretube.db.obj.WatchHistoryItem
|
||||||
import com.github.libretube.ui.extensions.setFormattedDuration
|
import com.github.libretube.ui.extensions.setFormattedDuration
|
||||||
import com.github.libretube.ui.extensions.setWatchProgressLength
|
import com.github.libretube.ui.extensions.setWatchProgressLength
|
||||||
@ -21,7 +21,7 @@ class WatchHistoryAdapter(
|
|||||||
RecyclerView.Adapter<WatchHistoryViewHolder>() {
|
RecyclerView.Adapter<WatchHistoryViewHolder>() {
|
||||||
|
|
||||||
fun removeFromWatchHistory(position: Int) {
|
fun removeFromWatchHistory(position: Int) {
|
||||||
DatabaseHelper.removeFromWatchHistory(position)
|
DatabaseHolder.Database.watchHistoryDao().delete(watchHistory[position])
|
||||||
watchHistory.removeAt(position)
|
watchHistory.removeAt(position)
|
||||||
notifyItemRemoved(position)
|
notifyItemRemoved(position)
|
||||||
notifyItemRangeChanged(position, itemCount)
|
notifyItemRangeChanged(position, itemCount)
|
||||||
|
@ -51,6 +51,7 @@ import com.github.libretube.databinding.ExoStyledPlayerControlViewBinding
|
|||||||
import com.github.libretube.databinding.FragmentPlayerBinding
|
import com.github.libretube.databinding.FragmentPlayerBinding
|
||||||
import com.github.libretube.db.DatabaseHelper
|
import com.github.libretube.db.DatabaseHelper
|
||||||
import com.github.libretube.db.DatabaseHolder.Companion.Database
|
import com.github.libretube.db.DatabaseHolder.Companion.Database
|
||||||
|
import com.github.libretube.db.obj.WatchPosition
|
||||||
import com.github.libretube.enums.ShareObjectType
|
import com.github.libretube.enums.ShareObjectType
|
||||||
import com.github.libretube.extensions.TAG
|
import com.github.libretube.extensions.TAG
|
||||||
import com.github.libretube.extensions.awaitQuery
|
import com.github.libretube.extensions.awaitQuery
|
||||||
@ -519,13 +520,12 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions {
|
|||||||
// save the watch position if video isn't finished and option enabled
|
// save the watch position if video isn't finished and option enabled
|
||||||
private fun saveWatchPosition() {
|
private fun saveWatchPosition() {
|
||||||
if (PlayerHelper.watchPositionsEnabled && exoPlayer.currentPosition != exoPlayer.duration) {
|
if (PlayerHelper.watchPositionsEnabled && exoPlayer.currentPosition != exoPlayer.duration) {
|
||||||
DatabaseHelper.saveWatchPosition(
|
query {
|
||||||
videoId!!,
|
Database.watchPositionDao().insertAll(WatchPosition(videoId!!, exoPlayer.currentPosition))
|
||||||
exoPlayer.currentPosition
|
}
|
||||||
)
|
|
||||||
} else if (PlayerHelper.watchPositionsEnabled) {
|
} else if (PlayerHelper.watchPositionsEnabled) {
|
||||||
// delete watch position if video has ended
|
// delete watch position if video has ended
|
||||||
DatabaseHelper.removeWatchPosition(videoId!!)
|
Database.watchPositionDao().deleteById(videoId!!)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -846,10 +846,7 @@ class PlayerFragment : BaseFragment(), OnlinePlayerOptions {
|
|||||||
// save the watch position when paused
|
// save the watch position when paused
|
||||||
if (playbackState == PlaybackState.STATE_PAUSED) {
|
if (playbackState == PlaybackState.STATE_PAUSED) {
|
||||||
query {
|
query {
|
||||||
DatabaseHelper.saveWatchPosition(
|
Database.watchPositionDao().insertAll(WatchPosition(videoId!!, exoPlayer.currentPosition))
|
||||||
videoId!!,
|
|
||||||
exoPlayer.currentPosition
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,9 +137,7 @@ class PlaylistFragment : BaseFragment() {
|
|||||||
updateBookmarkRes()
|
updateBookmarkRes()
|
||||||
query {
|
query {
|
||||||
if (!isBookmarked) {
|
if (!isBookmarked) {
|
||||||
DatabaseHolder.Database.playlistBookmarkDao().delete(
|
DatabaseHolder.Database.playlistBookmarkDao().deleteById(playlistId!!)
|
||||||
DatabaseHolder.Database.playlistBookmarkDao().findById(playlistId!!)
|
|
||||||
)
|
|
||||||
} else {
|
} else {
|
||||||
DatabaseHolder.Database.playlistBookmarkDao().insertAll(
|
DatabaseHolder.Database.playlistBookmarkDao().insertAll(
|
||||||
PlaylistBookmark(
|
PlaylistBookmark(
|
||||||
|
Loading…
Reference in New Issue
Block a user