mirror of
https://github.com/libre-tube/LibreTube.git
synced 2024-12-14 14:20:30 +05:30
Merge pull request #3925 from Bnyro/master
Show 'mark as unwatched' in video options sheet if already watched
This commit is contained in:
commit
25dd630cfa
@ -6,12 +6,16 @@ import androidx.room.Insert
|
|||||||
import androidx.room.OnConflictStrategy
|
import androidx.room.OnConflictStrategy
|
||||||
import androidx.room.Query
|
import androidx.room.Query
|
||||||
import com.github.libretube.db.obj.WatchHistoryItem
|
import com.github.libretube.db.obj.WatchHistoryItem
|
||||||
|
import com.github.libretube.db.obj.WatchPosition
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
interface WatchHistoryDao {
|
interface WatchHistoryDao {
|
||||||
@Query("SELECT * FROM watchHistoryItem")
|
@Query("SELECT * FROM watchHistoryItem")
|
||||||
suspend fun getAll(): List<WatchHistoryItem>
|
suspend fun getAll(): List<WatchHistoryItem>
|
||||||
|
|
||||||
|
@Query("SELECT * FROM watchHistoryItem WHERE videoId LIKE :videoId LIMIT 1")
|
||||||
|
suspend fun findById(videoId: String): WatchHistoryItem?
|
||||||
|
|
||||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
||||||
suspend fun insert(watchHistoryItem: WatchHistoryItem)
|
suspend fun insert(watchHistoryItem: WatchHistoryItem)
|
||||||
|
|
||||||
@ -21,6 +25,9 @@ interface WatchHistoryDao {
|
|||||||
@Delete
|
@Delete
|
||||||
suspend fun delete(watchHistoryItem: WatchHistoryItem)
|
suspend fun delete(watchHistoryItem: WatchHistoryItem)
|
||||||
|
|
||||||
|
@Query("DELETE FROM watchHistoryItem WHERE videoId = :id")
|
||||||
|
fun deleteByVideoId(id: String)
|
||||||
|
|
||||||
@Query("DELETE FROM watchHistoryItem")
|
@Query("DELETE FROM watchHistoryItem")
|
||||||
suspend fun deleteAll()
|
suspend fun deleteAll()
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,9 @@ interface WatchPositionDao {
|
|||||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
||||||
suspend fun insertAll(watchPositions: List<WatchPosition>)
|
suspend fun insertAll(watchPositions: List<WatchPosition>)
|
||||||
|
|
||||||
|
@Query("DELETE FROM watchPosition WHERE videoId = :id")
|
||||||
|
fun deleteByVideoId(id: String)
|
||||||
|
|
||||||
@Query("DELETE FROM watchPosition")
|
@Query("DELETE FROM watchPosition")
|
||||||
suspend fun deleteAll()
|
suspend fun deleteAll()
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,7 @@ import com.github.libretube.ui.dialogs.ShareDialog
|
|||||||
import com.github.libretube.ui.fragments.SubscriptionsFragment
|
import com.github.libretube.ui.fragments.SubscriptionsFragment
|
||||||
import com.github.libretube.util.PlayingQueue
|
import com.github.libretube.util.PlayingQueue
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.runBlocking
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -47,9 +48,17 @@ class VideoOptionsBottomSheet(
|
|||||||
optionsList += getString(R.string.add_to_queue)
|
optionsList += getString(R.string.add_to_queue)
|
||||||
}
|
}
|
||||||
|
|
||||||
// show the mark as watched option if watch positions are enabled
|
// show the mark as watched or unwatched option if watch positions are enabled
|
||||||
if (PlayerHelper.watchPositionsVideo) {
|
if (PlayerHelper.watchPositionsVideo || PlayerHelper.watchHistoryEnabled) {
|
||||||
optionsList += getString(R.string.mark_as_watched)
|
val watchPositionEntry = runBlocking(Dispatchers.IO) {
|
||||||
|
DatabaseHolder.Database.watchPositionDao().findById(videoId)
|
||||||
|
}
|
||||||
|
val watchHistoryEntry = runBlocking(Dispatchers.IO) {
|
||||||
|
DatabaseHolder.Database.watchHistoryDao().findById(videoId)
|
||||||
|
}
|
||||||
|
optionsList += if (watchHistoryEntry != null || watchPositionEntry != null) {
|
||||||
|
getString(R.string.mark_as_unwatched)
|
||||||
|
} else getString(R.string.mark_as_watched)
|
||||||
}
|
}
|
||||||
|
|
||||||
setSimpleItems(optionsList) { which ->
|
setSimpleItems(optionsList) { which ->
|
||||||
@ -116,6 +125,12 @@ class VideoOptionsBottomSheet(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
getString(R.string.mark_as_unwatched) -> {
|
||||||
|
withContext(Dispatchers.IO) {
|
||||||
|
DatabaseHolder.Database.watchPositionDao().deleteByVideoId(videoId)
|
||||||
|
DatabaseHolder.Database.watchHistoryDao().deleteByVideoId(videoId)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -412,6 +412,7 @@
|
|||||||
<string name="creation_date_reversed">Creation date (reversed)</string>
|
<string name="creation_date_reversed">Creation date (reversed)</string>
|
||||||
<string name="alphabetic">Alphabetic</string>
|
<string name="alphabetic">Alphabetic</string>
|
||||||
<string name="alphabetic_reversed">Alphabetic (reversed)</string>
|
<string name="alphabetic_reversed">Alphabetic (reversed)</string>
|
||||||
|
<string name="mark_as_unwatched">Mark as unwatched</string>
|
||||||
|
|
||||||
<!-- Backup & Restore Settings -->
|
<!-- Backup & Restore Settings -->
|
||||||
<string name="import_subscriptions_from">Import subscriptions from</string>
|
<string name="import_subscriptions_from">Import subscriptions from</string>
|
||||||
|
Loading…
Reference in New Issue
Block a user