From 88f3815585cf4772bf15c9829ebae44e47335f0c Mon Sep 17 00:00:00 2001
From: Koen <koen@pop-os.localdomain>
Date: Wed, 15 Nov 2023 11:49:22 +0100
Subject: [PATCH] When clicking on a video it is added to queue instead of
 replacing queue.

---
 .../fragment/mainactivity/main/ContentFeedView.kt   | 13 ++++++++-----
 .../com/futo/platformplayer/states/StatePlayer.kt   |  6 ++++++
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ContentFeedView.kt b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ContentFeedView.kt
index bccbe8d5..da6329cc 100644
--- a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ContentFeedView.kt
+++ b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ContentFeedView.kt
@@ -166,11 +166,14 @@ abstract class ContentFeedView<TFragment> : FeedView<TFragment, IPlatformContent
 
     protected open fun onContentClicked(content: IPlatformContent, time: Long) {
         if(content is IPlatformVideo) {
-            StatePlayer.instance.clearQueue();
-            if (Settings.instance.playback.shouldResumePreview(time))
-                fragment.navigate<VideoDetailFragment>(content.withTimestamp(time)).maximizeVideoDetail();
-            else
-                fragment.navigate<VideoDetailFragment>(content).maximizeVideoDetail();
+            if (StatePlayer.instance.hasQueue) {
+                StatePlayer.instance.addToQueue(content)
+            } else {
+                if (Settings.instance.playback.shouldResumePreview(time))
+                    fragment.navigate<VideoDetailFragment>(content.withTimestamp(time)).maximizeVideoDetail();
+                else
+                    fragment.navigate<VideoDetailFragment>(content).maximizeVideoDetail();
+            }
         } else if (content is IPlatformPlaylist) {
             fragment.navigate<PlaylistFragment>(content);
         } else if (content is IPlatformPost) {
diff --git a/app/src/main/java/com/futo/platformplayer/states/StatePlayer.kt b/app/src/main/java/com/futo/platformplayer/states/StatePlayer.kt
index 028c5b60..54991ed3 100644
--- a/app/src/main/java/com/futo/platformplayer/states/StatePlayer.kt
+++ b/app/src/main/java/com/futo/platformplayer/states/StatePlayer.kt
@@ -54,6 +54,12 @@ class StatePlayer {
     var queueShuffle: Boolean = false
         private set;
 
+    val hasQueue: Boolean get() {
+        synchronized(_queue) {
+            return _queue.isNotEmpty()
+        }
+    }
+
     val queueName: String get() = _queueName ?: _queueType;
 
     //Events
-- 
GitLab