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

79 lines
2.6 KiB
Kotlin
Raw Normal View History

2022-08-14 13:29:05 +05:30
package com.github.libretube.db
2022-08-13 23:34:07 +05:30
2022-09-20 23:30:51 +05:30
import com.github.libretube.api.obj.Streams
2022-09-08 21:59:00 +05:30
import com.github.libretube.constants.PreferenceKeys
2022-09-18 22:54:31 +05:30
import com.github.libretube.db.DatabaseHolder.Companion.Database
2022-08-15 13:46:53 +05:30
import com.github.libretube.db.obj.SearchHistoryItem
2022-08-14 13:29:05 +05:30
import com.github.libretube.db.obj.WatchHistoryItem
import com.github.libretube.db.obj.WatchPosition
2022-08-27 18:45:07 +05:30
import com.github.libretube.extensions.toID
2022-09-08 21:59:00 +05:30
import com.github.libretube.util.PreferenceHelper
2022-08-13 23:34:07 +05:30
object DatabaseHelper {
2022-09-20 23:23:34 +05:30
fun addToWatchHistory(videoId: String, streams: com.github.libretube.api.obj.Streams) {
2022-08-13 23:34:07 +05:30
val watchHistoryItem = WatchHistoryItem(
videoId,
streams.title,
streams.uploadDate,
streams.uploader,
2022-09-09 00:35:51 +05:30
streams.uploaderUrl!!.toID(),
2022-08-13 23:34:07 +05:30
streams.uploaderAvatar,
streams.thumbnailUrl,
streams.duration
)
2022-08-13 23:41:56 +05:30
Thread {
2022-09-18 22:54:31 +05:30
Database.watchHistoryDao().insertAll(watchHistoryItem)
2022-08-14 13:25:28 +05:30
val maxHistorySize =
PreferenceHelper.getString(PreferenceKeys.WATCH_HISTORY_SIZE, "unlimited")
2022-08-14 02:49:07 +05:30
if (maxHistorySize == "unlimited") return@Thread
// delete the first watch history entry if the limit is reached
2022-09-18 22:54:31 +05:30
val watchHistory = Database.watchHistoryDao().getAll()
2022-08-14 02:49:07 +05:30
if (watchHistory.size > maxHistorySize.toInt()) {
2022-09-18 22:54:31 +05:30
Database.watchHistoryDao()
2022-08-14 02:49:07 +05:30
.delete(watchHistory.first())
}
2022-08-13 23:41:56 +05:30
}.start()
2022-08-13 23:34:07 +05:30
}
2022-08-14 01:33:11 +05:30
fun removeFromWatchHistory(index: Int) {
Thread {
2022-09-18 22:54:31 +05:30
Database.watchHistoryDao().delete(
Database.watchHistoryDao().getAll()[index]
2022-08-14 01:33:11 +05:30
)
}.start()
}
fun saveWatchPosition(videoId: String, position: Long) {
val watchPosition = WatchPosition(
videoId,
position
)
Thread {
2022-09-18 22:54:31 +05:30
Database.watchPositionDao().insertAll(watchPosition)
2022-08-14 01:33:11 +05:30
}.start()
}
fun removeWatchPosition(videoId: String) {
Thread {
2022-09-20 01:37:15 +05:30
Database.watchPositionDao().findById(videoId)?.let {
Database.watchPositionDao().delete(it)
}
2022-08-14 01:33:11 +05:30
}.start()
}
2022-08-15 13:46:53 +05:30
fun addToSearchHistory(searchHistoryItem: SearchHistoryItem) {
Thread {
2022-09-18 22:54:31 +05:30
Database.searchHistoryDao().insertAll(searchHistoryItem)
2022-08-15 13:46:53 +05:30
val maxHistorySize = 20
// delete the first watch history entry if the limit is reached
2022-09-18 22:54:31 +05:30
val searchHistory = Database.searchHistoryDao().getAll()
2022-08-15 13:46:53 +05:30
if (searchHistory.size > maxHistorySize) {
2022-09-18 22:54:31 +05:30
Database.searchHistoryDao()
2022-08-15 13:46:53 +05:30
.delete(searchHistory.first())
}
}.start()
}
2022-08-13 23:34:07 +05:30
}