From 3dc3216999c0ae415b50d7ce12817aa46d6f66b5 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Thu, 24 Aug 2023 18:00:36 +0200 Subject: [PATCH 1/2] fix: limit chapter bottom sheet to one instance --- .../java/com/github/libretube/helpers/PlayerHelper.kt | 6 +++--- .../github/libretube/ui/fragments/PlayerFragment.kt | 11 +++++++++-- .../com/github/libretube/ui/views/OnlinePlayerView.kt | 1 - 3 files changed, 12 insertions(+), 6 deletions(-) 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 4673b8bff..beb8debd1 100644 --- a/app/src/main/java/com/github/libretube/helpers/PlayerHelper.kt +++ b/app/src/main/java/com/github/libretube/helpers/PlayerHelper.kt @@ -536,9 +536,9 @@ object PlayerHelper { return chapters .filter { it.highlightDrawable == null || - // remove the video highlight if it's already longer ago than [ChapterSegment.HIGHLIGHT_LENGTH], - // otherwise the SponsorBlock highlight would be shown from its starting point to the end - (currentPosition - it.start) < ChapterSegment.HIGHLIGHT_LENGTH + // remove the video highlight if it's already longer ago than [ChapterSegment.HIGHLIGHT_LENGTH], + // otherwise the SponsorBlock highlight would be shown from its starting point to the end + (currentPosition - it.start) < ChapterSegment.HIGHLIGHT_LENGTH } .sortedBy { it.start } .indexOfLast { currentPosition >= it.start } diff --git a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt index 57c73eab5..5d543f068 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt @@ -200,6 +200,7 @@ class PlayerFragment : Fragment(), OnlinePlayerOptions { .getInsetsController(mainActivity.window, mainActivity.window.decorView) private var scrubbingTimeBar = false + private var chaptersBottomSheet: ChaptersBottomSheet? = null /** * Receiver for all actions in the PiP mode @@ -772,8 +773,14 @@ class PlayerFragment : Fragment(), OnlinePlayerOptions { // enable the chapters dialog in the player playerBinding.chapterLL.setOnClickListener { updateMaxSheetHeight() - ChaptersBottomSheet(chapters, exoPlayer) - .show(childFragmentManager) + val sheet = chaptersBottomSheet ?: ChaptersBottomSheet(chapters, exoPlayer).also { + chaptersBottomSheet = it + } + if (sheet.isVisible) { + sheet.dismiss() + } else { + sheet.show(childFragmentManager) + } } setCurrentChapterName() diff --git a/app/src/main/java/com/github/libretube/ui/views/OnlinePlayerView.kt b/app/src/main/java/com/github/libretube/ui/views/OnlinePlayerView.kt index 99608a400..120a1e893 100644 --- a/app/src/main/java/com/github/libretube/ui/views/OnlinePlayerView.kt +++ b/app/src/main/java/com/github/libretube/ui/views/OnlinePlayerView.kt @@ -4,7 +4,6 @@ import android.content.Context import android.content.res.Configuration import android.util.AttributeSet import android.view.View -import androidx.appcompat.app.AppCompatActivity import androidx.core.view.WindowInsetsCompat import androidx.lifecycle.LifecycleOwner import androidx.media3.exoplayer.trackselection.TrackSelector From 2d4d095a3447ca1fe4ac3e95508fc055dc2b9222 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Thu, 24 Aug 2023 18:01:50 +0200 Subject: [PATCH 2/2] fix: kill chapters bottom sheet when playing next video --- .../java/com/github/libretube/ui/fragments/PlayerFragment.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt index 5d543f068..e5a7f0213 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt @@ -829,6 +829,9 @@ class PlayerFragment : Fragment(), OnlinePlayerOptions { playVideo() // close comment bottom sheet for next video commentsViewModel.commentsSheetDismiss?.invoke() + // kill the chapters bottom sheet + chaptersBottomSheet?.dismiss() + chaptersBottomSheet = null } private fun prepareExoPlayerView() {