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