diff --git a/.github/ISSUE_TEMPLATE/bug-crash-report.yml b/.github/ISSUE_TEMPLATE/bug-crash-report.yml index 6f0519f62..0faf9621c 100644 --- a/.github/ISSUE_TEMPLATE/bug-crash-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-crash-report.yml @@ -1,5 +1,5 @@ name: Bug/Crash Report -description: File a bug report +description: Report a problem labels: ["bug"] assignees: - OxygenCobalt diff --git a/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueFragment.kt b/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueFragment.kt index 9dfbc9962..b86db473e 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/queue/QueueFragment.kt @@ -19,6 +19,7 @@ package org.oxycblt.auxio.playback.queue import android.os.Bundle import android.view.LayoutInflater +import androidx.core.view.isInvisible import androidx.fragment.app.activityViewModels import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.LinearLayoutManager @@ -54,6 +55,18 @@ class QueueFragment : ViewBindingFragment(), QueueAdapter. touchHelper.attachToRecyclerView(this) } + // Sometimes the scroll can change without the listener being updated, so we also + // check for relayout events. + binding.queueRecycler.apply { + addOnLayoutChangeListener { _, _, _, _, _, _, _, _, _ -> updateDivider() } + addOnScrollListener( + object : RecyclerView.OnScrollListener() { + override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { + updateDivider() + } + }) + } + // --- VIEWMODEL SETUP ---- collectImmediately( queueModel.queue, queueModel.index, playbackModel.isPlaying, ::updateQueue) @@ -73,6 +86,13 @@ class QueueFragment : ViewBindingFragment(), QueueAdapter. touchHelper.startDrag(viewHolder) } + private fun updateDivider() { + val binding = requireBinding() + binding.queueDivider.isInvisible = + (binding.queueRecycler.layoutManager as LinearLayoutManager) + .findFirstCompletelyVisibleItemPosition() < 1 + } + private fun updateQueue(queue: List, index: Int, isPlaying: Boolean) { val binding = requireBinding()