From 206b560eb4ceea9db2112eff102a504037b5377b Mon Sep 17 00:00:00 2001 From: Bnyro Date: Sat, 10 Sep 2022 12:37:13 +0200 Subject: [PATCH] add option to rename a playlist --- .../java/com/github/libretube/api/PipedApi.kt | 6 ++ .../dialogs/PlaylistOptionsDialog.kt | 58 ++++++++++++++----- .../com/github/libretube/obj/PlaylistId.kt | 1 + app/src/main/res/values/strings.xml | 1 + 4 files changed, 50 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/com/github/libretube/api/PipedApi.kt b/app/src/main/java/com/github/libretube/api/PipedApi.kt index 6533b3ae6..1139da77c 100644 --- a/app/src/main/java/com/github/libretube/api/PipedApi.kt +++ b/app/src/main/java/com/github/libretube/api/PipedApi.kt @@ -140,6 +140,12 @@ interface PipedApi { @GET("user/playlists") suspend fun playlists(@Header("Authorization") token: String): List + @POST("user/playlists/rename") + suspend fun renamePlaylist( + @Header("Authorization") token: String, + @Body playlistId: PlaylistId + ) + @POST("user/playlists/delete") suspend fun deletePlaylist( @Header("Authorization") token: String, diff --git a/app/src/main/java/com/github/libretube/dialogs/PlaylistOptionsDialog.kt b/app/src/main/java/com/github/libretube/dialogs/PlaylistOptionsDialog.kt index ce5898a08..9169a9466 100644 --- a/app/src/main/java/com/github/libretube/dialogs/PlaylistOptionsDialog.kt +++ b/app/src/main/java/com/github/libretube/dialogs/PlaylistOptionsDialog.kt @@ -8,6 +8,7 @@ import android.widget.Toast import androidx.fragment.app.DialogFragment import com.github.libretube.R import com.github.libretube.api.RetrofitInstance +import com.github.libretube.databinding.DialogTextPreferenceBinding import com.github.libretube.extensions.TAG import com.github.libretube.extensions.toID import com.github.libretube.obj.PlaylistId @@ -36,6 +37,7 @@ class PlaylistOptionsDialog( if (isOwner) { optionsList = optionsList + + context?.getString(R.string.renamePlaylist)!! + context?.getString(R.string.deletePlaylist)!! - context?.getString(R.string.clonePlaylist)!! } @@ -88,8 +90,21 @@ class PlaylistOptionsDialog( shareDialog.show(parentFragmentManager, ShareDialog::class.java.name) } context?.getString(R.string.deletePlaylist) -> { - val token = PreferenceHelper.getToken() - deletePlaylist(playlistId, token) + deletePlaylist( + playlistId + ) + } + context?.getString(R.string.renamePlaylist) -> { + val binding = DialogTextPreferenceBinding.inflate(layoutInflater) + binding.input.hint = context?.getString(R.string.playlistName) + MaterialAlertDialogBuilder(requireContext()) + .setTitle(R.string.renamePlaylist) + .setView(binding.root) + .setPositiveButton(R.string.okay) { _, _ -> + renamePlaylist(playlistId, binding.input.text.toString()) + } + .setNegativeButton(R.string.cancel, null) + .show() } } } @@ -113,21 +128,32 @@ class PlaylistOptionsDialog( run() } - private fun deletePlaylist(id: String, token: String) { - fun run() { - CoroutineScope(Dispatchers.IO).launch { - try { - RetrofitInstance.authApi.deletePlaylist(token, PlaylistId(id)) - } catch (e: IOException) { - println(e) - Log.e(TAG(), "IOException, you might not have internet connection") - return@launch - } catch (e: HttpException) { - Log.e(TAG(), "HttpException, unexpected response") - return@launch - } + private fun renamePlaylist(id: String, newName: String) { + CoroutineScope(Dispatchers.IO).launch { + try { + RetrofitInstance.authApi.renamePlaylist( + PreferenceHelper.getToken(), + PlaylistId( + playlistId = id, + newName = newName + ) + ) + } catch (e: Exception) { + return@launch + } + } + } + + private fun deletePlaylist(id: String) { + CoroutineScope(Dispatchers.IO).launch { + try { + RetrofitInstance.authApi.deletePlaylist( + PreferenceHelper.getToken(), + PlaylistId(id) + ) + } catch (e: Exception) { + return@launch } } - run() } } diff --git a/app/src/main/java/com/github/libretube/obj/PlaylistId.kt b/app/src/main/java/com/github/libretube/obj/PlaylistId.kt index 93f31488c..b814e0055 100644 --- a/app/src/main/java/com/github/libretube/obj/PlaylistId.kt +++ b/app/src/main/java/com/github/libretube/obj/PlaylistId.kt @@ -6,5 +6,6 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties data class PlaylistId( var playlistId: String? = null, var videoId: String? = null, + var newName: String? = null, var index: Int = -1 ) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 19a4a1aac..73bc40136 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -316,4 +316,5 @@ Quality and format Delete Alternative trending layout + Rename playlist