From f86fb0ee44b5b883da3b84f41e795c0fabd3757e Mon Sep 17 00:00:00 2001 From: Kai Date: Thu, 5 Jun 2025 23:13:05 -0500 Subject: [PATCH] add functionality to copy playlists fix https://github.com/futo-org/grayjay-android/issues/2306 Changelog: added --- .../mainactivity/main/PlaylistFragment.kt | 27 ++++++++++--------- .../futo/platformplayer/models/Playlist.kt | 3 +++ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/PlaylistFragment.kt b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/PlaylistFragment.kt index c56585b0..ba433563 100644 --- a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/PlaylistFragment.kt +++ b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/PlaylistFragment.kt @@ -10,7 +10,6 @@ import androidx.lifecycle.lifecycleScope import com.futo.platformplayer.* import com.futo.platformplayer.activities.IWithResultLauncher 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 import com.futo.platformplayer.api.media.models.video.SerializedPlatformVideo import com.futo.platformplayer.constructs.TaskHandler @@ -165,14 +164,16 @@ class PlaylistFragment : MainFragment() { }; } - private fun copyPlaylist(playlist: Playlist) { + private fun savePlaylist(playlist: Playlist) { StatePlaylists.instance.playlistStore.save(playlist) - _fragment.topBar?.assume()?.setMenuItems( - arrayListOf() - ) UIDialogs.toast("Playlist saved") } + private fun copyPlaylist(playlist: Playlist) { + StatePlaylists.instance.playlistStore.save(playlist.makeCopy()) + UIDialogs.toast("Playlist copied") + } + fun onShown(parameter: Any?) { _taskLoadPlaylist.cancel() @@ -188,12 +189,14 @@ class PlaylistFragment : MainFragment() { setButtonExportVisible(false) setButtonEditVisible(true) - if (!StatePlaylists.instance.playlistStore.hasItem { it.id == parameter.id }) { - _fragment.topBar?.assume() - ?.setMenuItems(arrayListOf(Pair(R.drawable.ic_copy) { + _fragment.topBar?.assume() + ?.setMenuItems(arrayListOf(Pair(R.drawable.ic_copy) { + if (StatePlaylists.instance.playlistStore.hasItem { it.id == parameter.id }) { copyPlaylist(parameter) - })) - } + } else { + savePlaylist(parameter) + } + })) } else { setName(null) setVideos(null, false) @@ -259,7 +262,7 @@ class PlaylistFragment : MainFragment() { val playlist = _playlist ?: return if (!StatePlaylists.instance.playlistStore.hasItem { it.id == playlist.id }) { UIDialogs.showConfirmationDialog(context, "Playlist must be saved to download", { - copyPlaylist(playlist) + savePlaylist(playlist) download() }) return @@ -292,7 +295,7 @@ class PlaylistFragment : MainFragment() { val playlist = _playlist ?: return if (!StatePlaylists.instance.playlistStore.hasItem { it.id == playlist.id }) { UIDialogs.showConfirmationDialog(context, "Playlist must be saved to edit the name", { - copyPlaylist(playlist) + savePlaylist(playlist) onEditClick() }) return diff --git a/app/src/main/java/com/futo/platformplayer/models/Playlist.kt b/app/src/main/java/com/futo/platformplayer/models/Playlist.kt index d7b1035f..d6bca755 100644 --- a/app/src/main/java/com/futo/platformplayer/models/Playlist.kt +++ b/app/src/main/java/com/futo/platformplayer/models/Playlist.kt @@ -35,6 +35,9 @@ class Playlist { this.videos = ArrayList(list); } + fun makeCopy(): Playlist { + return Playlist("$name (Copy)", videos) + } companion object { fun fromV8(config: SourcePluginConfig, obj: V8ValueObject?): Playlist? {