From 23ca4addf9ad321ba7c6be4b95e27716960d0574 Mon Sep 17 00:00:00 2001 From: Kelvin Date: Fri, 8 Dec 2023 11:40:06 +0100 Subject: [PATCH] Prevent dup queue items, handle toast more centrally --- .../mainactivity/main/ChannelFragment.kt | 2 -- .../mainactivity/main/ContentFeedView.kt | 2 -- .../futo/platformplayer/states/StatePlayer.kt | 20 ++++++++++++++++++- app/src/main/res/values/strings.xml | 1 + 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ChannelFragment.kt b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ChannelFragment.kt index da879032..056cece7 100644 --- a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ChannelFragment.kt +++ b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ChannelFragment.kt @@ -207,8 +207,6 @@ class ChannelFragment : MainFragment() { adapter.onAddToQueueClicked.subscribe { content -> if(content is IPlatformVideo) { StatePlayer.instance.addToQueue(content); - val name = if (content.name.length > 20) (content.name.subSequence(0, 20).toString() + "...") else content.name; - UIDialogs.toast(context, "Queued [$name]", false); } } adapter.onUrlClicked.subscribe { url -> 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 246f665f..d30247b1 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 @@ -79,8 +79,6 @@ abstract class ContentFeedView : FeedView 20) (it.name.subSequence(0, 20).toString() + "...") else it.name; - UIDialogs.toast(context, context.getString(R.string.queued) + " [$name]", false); } }; adapter.onLongPress.subscribe(this) { 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 22d76d01..98d9826c 100644 --- a/app/src/main/java/com/futo/platformplayer/states/StatePlayer.kt +++ b/app/src/main/java/com/futo/platformplayer/states/StatePlayer.kt @@ -2,6 +2,8 @@ package com.futo.platformplayer.states import android.content.Context import android.util.Log +import com.futo.platformplayer.R +import com.futo.platformplayer.UIDialogs import com.futo.platformplayer.api.media.models.playlists.IPlatformPlaylist import com.futo.platformplayer.api.media.models.playlists.IPlatformPlaylistDetails import com.futo.platformplayer.api.media.models.video.IPlatformVideo @@ -268,7 +270,12 @@ class StatePlayer { setQueueWithPosition(videos, _queueType, index, withFocus); } fun addToQueue(video: IPlatformVideo) { + var didAdd = false; synchronized(_queue) { + if(_queue.any { it.url == video.url }) { + return@synchronized; + } + if(_queue.isEmpty()) { setQueueType(TYPE_QUEUE); currentVideo?.let { @@ -284,8 +291,19 @@ class StatePlayer { if (_queuePosition < 0) { _queuePosition = 0; } + didAdd = true; } - onQueueChanged.emit(true); + if(didAdd) { + onQueueChanged.emit(true); + StateApp.instance.contextOrNull?.let { context -> + val name = if (video.name.length > 20) (video.name.subSequence(0, 20).toString() + "...") else video.name; + UIDialogs.toast(context, context.getString(R.string.queued) + " [$name]", false); + } + } + else + StateApp.instance.contextOrNull?.let { context -> + UIDialogs.toast(context, context.getString(R.string.already_queued), false); + } } fun insertToQueue(video: IPlatformVideo, playNow: Boolean = false) { synchronized(_queue) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 60b1776a..14024a6b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -537,6 +537,7 @@ Play Feed as Queue Play entire feed Queued + Already queued Used Available Failed to load next page