From c2f0d68ddf35a347054135eaaded421d8324e5b2 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Sat, 21 Jan 2023 11:19:47 +0100 Subject: [PATCH] Fix queue starts wrong video after reordering --- .../libretube/ui/adapters/PlayingQueueAdapter.kt | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/github/libretube/ui/adapters/PlayingQueueAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/PlayingQueueAdapter.kt index 20ff28c2c..d0875c073 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/PlayingQueueAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/PlayingQueueAdapter.kt @@ -7,6 +7,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.github.libretube.databinding.QueueRowBinding +import com.github.libretube.extensions.toID import com.github.libretube.ui.viewholders.PlayingQueueViewHolder import com.github.libretube.util.ImageHelper import com.github.libretube.util.PlayingQueue @@ -46,10 +47,16 @@ class PlayingQueueAdapter : RecyclerView.Adapter() { ) root.setOnClickListener { - val oldIndex = PlayingQueue.currentIndex() - PlayingQueue.onQueueItemSelected(position) - notifyItemChanged(oldIndex) - notifyItemChanged(position) + val oldPosition = PlayingQueue.currentIndex() + // get the new position from the queue to work properly after reordering the queue + val newPosition = PlayingQueue.getStreams().indexOfFirst { + it.url?.toID() == streamItem.url?.toID() + }.takeIf { it >= 0 } ?: return@setOnClickListener + + // select the new item in the queue and update the selected item in the UI + PlayingQueue.onQueueItemSelected(newPosition) + notifyItemChanged(oldPosition) + notifyItemChanged(newPosition) } } }