diff --git a/app/src/main/java/com/github/libretube/ui/dialogs/CreatePlaylistDialog.kt b/app/src/main/java/com/github/libretube/ui/dialogs/CreatePlaylistDialog.kt index 0053e60f3..6df8d0192 100644 --- a/app/src/main/java/com/github/libretube/ui/dialogs/CreatePlaylistDialog.kt +++ b/app/src/main/java/com/github/libretube/ui/dialogs/CreatePlaylistDialog.kt @@ -8,6 +8,7 @@ import androidx.lifecycle.lifecycleScope import com.github.libretube.R import com.github.libretube.api.PlaylistsHelper import com.github.libretube.databinding.DialogCreatePlaylistBinding +import com.github.libretube.util.TextUtils import com.github.libretube.util.ThemeHelper import com.google.android.material.dialog.MaterialAlertDialogBuilder @@ -21,6 +22,15 @@ class CreatePlaylistDialog( binding.title.text = ThemeHelper.getStyledAppName(requireContext()) + binding.clonePlaylist.setOnClickListener { + val playlistUrl = binding.playlistUrl.text.toString() + if (!TextUtils.validateUrl(playlistUrl)) { + Toast.makeText(context, R.string.invalid_url, Toast.LENGTH_SHORT).show() + return@setOnClickListener + } + PlaylistsHelper.clonePlaylist(requireContext().applicationContext, playlistUrl) + } + binding.cancelButton.setOnClickListener { dismiss() } diff --git a/app/src/main/java/com/github/libretube/util/TextUtils.kt b/app/src/main/java/com/github/libretube/util/TextUtils.kt index cc9014cac..acf78f83a 100644 --- a/app/src/main/java/com/github/libretube/util/TextUtils.kt +++ b/app/src/main/java/com/github/libretube/util/TextUtils.kt @@ -1,5 +1,7 @@ package com.github.libretube.util +import java.net.URL + object TextUtils { /** * Separator used for descriptions @@ -14,4 +16,17 @@ object TextUtils { fun toTwoDecimalsString(num: Int): String { return if (num >= 10) num.toString() else "0$num" } + + /** + * Check whether an Url is valid + * @param url The url to test + * @return Whether the URL is valid + */ + fun validateUrl(url: String): Boolean { + runCatching { + URL(url).toURI() + return true + } + return false + } } diff --git a/app/src/main/res/drawable/ic_copy.xml b/app/src/main/res/drawable/ic_copy.xml new file mode 100644 index 000000000..89f03149c --- /dev/null +++ b/app/src/main/res/drawable/ic_copy.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/dialog_create_playlist.xml b/app/src/main/res/layout/dialog_create_playlist.xml index 0f60991a3..b5d27477f 100644 --- a/app/src/main/res/layout/dialog_create_playlist.xml +++ b/app/src/main/res/layout/dialog_create_playlist.xml @@ -4,7 +4,6 @@ android:layout_height="wrap_content" android:orientation="vertical"> - + + + + + + + @@ -25,7 +45,6 @@ android:inputType="text" /> - Playlist created. Playlist name The playlist name can\'t be empty - Add to playlist + Add Done. Failed :( About @@ -420,6 +420,7 @@ Failed to fetch available instances. Hide watched videos from feed Don\'t show videos being watched more than 90% in the subscriptions tab. + Playlist URL Download Service