From 252365b1ff31fc7f114603db8327b369d86e5102 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Wed, 29 Jan 2025 16:17:08 +0100 Subject: [PATCH] feat: remember repeat mode across app restarts --- .../com/github/libretube/constants/PreferenceKeys.kt | 1 + .../java/com/github/libretube/helpers/PlayerHelper.kt | 6 ++++++ .../libretube/services/AbstractPlayerService.kt | 4 ---- .../github/libretube/ui/fragments/PlaylistFragment.kt | 1 - .../libretube/ui/fragments/WatchHistoryFragment.kt | 1 - .../java/com/github/libretube/util/PlayingQueue.kt | 11 ++++++----- 6 files changed, 13 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/github/libretube/constants/PreferenceKeys.kt b/app/src/main/java/com/github/libretube/constants/PreferenceKeys.kt index 0fa1bfaa4..206cb9cb4 100644 --- a/app/src/main/java/com/github/libretube/constants/PreferenceKeys.kt +++ b/app/src/main/java/com/github/libretube/constants/PreferenceKeys.kt @@ -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" diff --git a/app/src/main/java/com/github/libretube/helpers/PlayerHelper.kt b/app/src/main/java/com/github/libretube/helpers/PlayerHelper.kt index b712c0c61..40b11e70e 100644 --- a/app/src/main/java/com/github/libretube/helpers/PlayerHelper.kt +++ b/app/src/main/java/com/github/libretube/helpers/PlayerHelper.kt @@ -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)) diff --git a/app/src/main/java/com/github/libretube/services/AbstractPlayerService.kt b/app/src/main/java/com/github/libretube/services/AbstractPlayerService.kt index 8bdcdc5f1..f938e9eb2 100644 --- a/app/src/main/java/com/github/libretube/services/AbstractPlayerService.kt +++ b/app/src/main/java/com/github/libretube/services/AbstractPlayerService.kt @@ -98,8 +98,6 @@ abstract class AbstractPlayerService : MediaLibraryService(), MediaLibrarySessio ): ListenableFuture { 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 diff --git a/app/src/main/java/com/github/libretube/ui/fragments/PlaylistFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/PlaylistFragment.kt index 93cf97014..3608fb77a 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/PlaylistFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/PlaylistFragment.kt @@ -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(), diff --git a/app/src/main/java/com/github/libretube/ui/fragments/WatchHistoryFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/WatchHistoryFragment.kt index 465da613f..ed7b9d081 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/WatchHistoryFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/WatchHistoryFragment.kt @@ -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() ) diff --git a/app/src/main/java/com/github/libretube/util/PlayingQueue.kt b/app/src/main/java/com/github/libretube/util/PlayingQueue.kt index af5b458d9..57748de1d 100644 --- a/app/src/main/java/com/github/libretube/util/PlayingQueue.kt +++ b/app/src/main/java/com/github/libretube/util/PlayingQueue.kt @@ -19,7 +19,12 @@ object PlayingQueue { private val queueJobs = mutableListOf() - 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 - } }