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 da8790327def321b00ce2af0339fdb8c882a6cc0..056cece73153fcbb787117c67ab6f6b1ea8dc414 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 246f665fbd077ced5c24fc0cbc4cbc399e38342a..d30247b10b036e8aa9b71cafd5931ba2467a2d2c 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<TFragment> : FeedView<TFragment, IPlatformContent adapter.onAddToQueueClicked.subscribe(this) { if(it is IPlatformVideo) { StatePlayer.instance.addToQueue(it); - val name = if (it.name.length > 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 22d76d01579eaa32de5829e2df10e86a1e87d998..98d9826c81bd46d3f97cf9b5890aa60f5ad2ecf0 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 60b1776aa95742510c45553b3bc9d8ee76595068..14024a6bb775ee41aeb31b8c47e7fd2987dd3e61 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -537,6 +537,7 @@ <string name="play_feed_as_queue">Play Feed as Queue</string> <string name="play_entire_feed">Play entire feed</string> <string name="queued">Queued</string> + <string name="already_queued">Already queued</string> <string name="used">Used</string> <string name="available">Available</string> <string name="failed_to_load_next_page">Failed to load next page</string>