feat: remember repeat mode across app restarts

This commit is contained in:
Bnyro 2025-01-29 16:17:08 +01:00
parent 5a6a13cd5e
commit 252365b1ff
6 changed files with 13 additions and 11 deletions

View File

@ -90,6 +90,7 @@ object PreferenceKeys {
const val SHOW_TIME_LEFT = "show_time_left"
const val ALLOW_PLAYBACK_DURING_CALL = "playback_during_call"
const val BEHAVIOR_WHEN_MINIMIZED = "behavior_when_minimized"
const val REPEAT_MODE = "repeat_mode"
// SponsorBlock
const val SB_USER_ID = "sb_user_id"

View File

@ -375,6 +375,12 @@ object PlayerHelper {
true
)
var repeatMode: Int
get() = PreferenceHelper.getInt(PreferenceKeys.REPEAT_MODE, Player.REPEAT_MODE_OFF)
set(value) {
PreferenceHelper.putInt(PreferenceKeys.REPEAT_MODE, value)
}
fun isAutoPlayEnabled(isPlaylist: Boolean = false): Boolean {
return autoPlayEnabled || (isPlaylist && PreferenceHelper
.getBoolean(PreferenceKeys.AUTOPLAY_PLAYLISTS, false))

View File

@ -98,8 +98,6 @@ abstract class AbstractPlayerService : MediaLibraryService(), MediaLibrarySessio
): ListenableFuture<SessionResult> {
when (customCommand.customAction) {
START_SERVICE_ACTION -> {
PlayingQueue.resetToDefaults()
CoroutineScope(Dispatchers.IO).launch {
onServiceCreated(args)
notificationProvider?.intentActivity = getIntentActivity()
@ -361,8 +359,6 @@ abstract class AbstractPlayerService : MediaLibraryService(), MediaLibrarySessio
// java.lang.SecurityException: Session rejected the connection request.
// because there can't be two active playerControllers at the same time.
handler.postDelayed(50) {
PlayingQueue.resetToDefaults()
saveWatchPosition()
notificationProvider = null

View File

@ -242,7 +242,6 @@ class PlaylistFragment : DynamicLayoutManagerFragment(R.layout.fragment_playlist
binding.bookmark.text = getString(R.string.shuffle)
binding.bookmark.setOnClickListener {
val queue = playlistFeed.shuffled()
PlayingQueue.resetToDefaults()
PlayingQueue.add(*queue.toTypedArray())
NavigationHelper.navigateVideo(
requireContext(),

View File

@ -178,7 +178,6 @@ class WatchHistoryFragment : DynamicLayoutManagerFragment(R.layout.fragment_watc
val watchHistory = history.filterByStatusAndWatchPosition()
binding.playAll.setOnClickListener {
PlayingQueue.resetToDefaults()
PlayingQueue.add(
*watchHistory.reversed().map(WatchHistoryItem::toStreamItem).toTypedArray()
)

View File

@ -19,7 +19,12 @@ object PlayingQueue {
private val queueJobs = mutableListOf<Job>()
var repeatMode: Int = Player.REPEAT_MODE_OFF
// wrapper around PlayerHelper#repeatMode for compatibility
var repeatMode: Int
get() = PlayerHelper.repeatMode
set(value) {
PlayerHelper.repeatMode = value
}
fun clear() {
queueJobs.forEach {
@ -216,8 +221,4 @@ object PlayingQueue {
add(*streams.filter { !it.isLive }.toTypedArray(), skipExisting = true)
}
fun resetToDefaults() {
repeatMode = Player.REPEAT_MODE_OFF
}
}