mirror of
https://github.com/libre-tube/LibreTube.git
synced 2024-12-15 14:50:30 +05:30
Merge pull request #2175 from Bnyro/master
Show the current name when renaming a playlist
This commit is contained in:
commit
7b3b145e2d
@ -154,7 +154,7 @@ interface PipedApi {
|
|||||||
suspend fun renamePlaylist(
|
suspend fun renamePlaylist(
|
||||||
@Header("Authorization") token: String,
|
@Header("Authorization") token: String,
|
||||||
@Body playlistId: PlaylistId
|
@Body playlistId: PlaylistId
|
||||||
)
|
): PlaylistId
|
||||||
|
|
||||||
@POST("user/playlists/delete")
|
@POST("user/playlists/delete")
|
||||||
suspend fun deletePlaylist(
|
suspend fun deletePlaylist(
|
||||||
|
@ -142,7 +142,7 @@ object PlaylistsHelper {
|
|||||||
).message == "ok"
|
).message == "ok"
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun renamePlaylist(playlistId: String, newName: String) {
|
suspend fun renamePlaylist(playlistId: String, newName: String): Boolean {
|
||||||
if (!loggedIn()) {
|
if (!loggedIn()) {
|
||||||
val playlist = awaitQuery {
|
val playlist = awaitQuery {
|
||||||
DatabaseHolder.Database.localPlaylistsDao().getAll()
|
DatabaseHolder.Database.localPlaylistsDao().getAll()
|
||||||
@ -151,16 +151,16 @@ object PlaylistsHelper {
|
|||||||
awaitQuery {
|
awaitQuery {
|
||||||
DatabaseHolder.Database.localPlaylistsDao().updatePlaylist(playlist)
|
DatabaseHolder.Database.localPlaylistsDao().updatePlaylist(playlist)
|
||||||
}
|
}
|
||||||
return
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
RetrofitInstance.authApi.renamePlaylist(
|
return RetrofitInstance.authApi.renamePlaylist(
|
||||||
token,
|
token,
|
||||||
PlaylistId(
|
PlaylistId(
|
||||||
playlistId = playlistId,
|
playlistId = playlistId,
|
||||||
newName = newName
|
newName = newName
|
||||||
)
|
)
|
||||||
)
|
).playlistId != null
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun removeFromPlaylist(playlistId: String, index: Int) {
|
suspend fun removeFromPlaylist(playlistId: String, index: Int) {
|
||||||
|
@ -0,0 +1,62 @@
|
|||||||
|
package com.github.libretube.ui.dialogs
|
||||||
|
|
||||||
|
import android.app.Dialog
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.text.InputType
|
||||||
|
import android.util.Log
|
||||||
|
import android.widget.Toast
|
||||||
|
import androidx.fragment.app.DialogFragment
|
||||||
|
import com.github.libretube.R
|
||||||
|
import com.github.libretube.api.PlaylistsHelper
|
||||||
|
import com.github.libretube.databinding.DialogTextPreferenceBinding
|
||||||
|
import com.github.libretube.extensions.TAG
|
||||||
|
import com.github.libretube.extensions.toastFromMainThread
|
||||||
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
|
class RenamePlaylistDialog(
|
||||||
|
private val playlistId: String,
|
||||||
|
private val currentPlaylistName: String
|
||||||
|
) : DialogFragment() {
|
||||||
|
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||||
|
val binding = DialogTextPreferenceBinding.inflate(layoutInflater)
|
||||||
|
binding.input.inputType = InputType.TYPE_CLASS_TEXT
|
||||||
|
binding.input.hint = getString(R.string.playlistName)
|
||||||
|
binding.input.setText(currentPlaylistName)
|
||||||
|
|
||||||
|
return MaterialAlertDialogBuilder(requireContext())
|
||||||
|
.setTitle(R.string.renamePlaylist)
|
||||||
|
.setView(binding.root)
|
||||||
|
.setPositiveButton(R.string.okay) { _, _ ->
|
||||||
|
val input = binding.input.text.toString()
|
||||||
|
if (input == "") {
|
||||||
|
Toast.makeText(
|
||||||
|
context,
|
||||||
|
R.string.emptyPlaylistName,
|
||||||
|
Toast.LENGTH_SHORT
|
||||||
|
).show()
|
||||||
|
return@setPositiveButton
|
||||||
|
}
|
||||||
|
if (input == currentPlaylistName) return@setPositiveButton
|
||||||
|
val appContext = requireContext().applicationContext
|
||||||
|
CoroutineScope(Dispatchers.IO).launch {
|
||||||
|
val success = try {
|
||||||
|
PlaylistsHelper.renamePlaylist(playlistId, binding.input.text.toString())
|
||||||
|
} catch (e: Exception) {
|
||||||
|
Log.e(TAG(), e.toString())
|
||||||
|
e.localizedMessage?.let { appContext.toastFromMainThread(it) }
|
||||||
|
return@launch
|
||||||
|
}
|
||||||
|
if (success) {
|
||||||
|
appContext.toastFromMainThread(R.string.success)
|
||||||
|
} else {
|
||||||
|
appContext.toastFromMainThread(R.string.server_error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.setNegativeButton(R.string.cancel, null)
|
||||||
|
.show()
|
||||||
|
}
|
||||||
|
}
|
@ -1,23 +1,20 @@
|
|||||||
package com.github.libretube.ui.sheets
|
package com.github.libretube.ui.sheets
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.text.InputType
|
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
import com.github.libretube.api.PlaylistsHelper
|
|
||||||
import com.github.libretube.api.RetrofitInstance
|
import com.github.libretube.api.RetrofitInstance
|
||||||
import com.github.libretube.api.obj.PlaylistId
|
import com.github.libretube.api.obj.PlaylistId
|
||||||
import com.github.libretube.databinding.DialogTextPreferenceBinding
|
|
||||||
import com.github.libretube.enums.PlaylistType
|
import com.github.libretube.enums.PlaylistType
|
||||||
import com.github.libretube.enums.ShareObjectType
|
import com.github.libretube.enums.ShareObjectType
|
||||||
import com.github.libretube.extensions.toID
|
import com.github.libretube.extensions.toID
|
||||||
import com.github.libretube.extensions.toastFromMainThread
|
import com.github.libretube.extensions.toastFromMainThread
|
||||||
import com.github.libretube.obj.ShareData
|
import com.github.libretube.obj.ShareData
|
||||||
import com.github.libretube.ui.dialogs.DeletePlaylistDialog
|
import com.github.libretube.ui.dialogs.DeletePlaylistDialog
|
||||||
|
import com.github.libretube.ui.dialogs.RenamePlaylistDialog
|
||||||
import com.github.libretube.ui.dialogs.ShareDialog
|
import com.github.libretube.ui.dialogs.ShareDialog
|
||||||
import com.github.libretube.util.BackgroundHelper
|
import com.github.libretube.util.BackgroundHelper
|
||||||
import com.github.libretube.util.PreferenceHelper
|
import com.github.libretube.util.PreferenceHelper
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
@ -27,7 +24,7 @@ import java.io.IOException
|
|||||||
|
|
||||||
class PlaylistOptionsBottomSheet(
|
class PlaylistOptionsBottomSheet(
|
||||||
private val playlistId: String,
|
private val playlistId: String,
|
||||||
playlistName: String,
|
private val playlistName: String,
|
||||||
private val playlistType: PlaylistType
|
private val playlistType: PlaylistType
|
||||||
) : BaseBottomSheet() {
|
) : BaseBottomSheet() {
|
||||||
private val shareData = ShareData(currentPlaylist = playlistName)
|
private val shareData = ShareData(currentPlaylist = playlistName)
|
||||||
@ -87,32 +84,8 @@ class PlaylistOptionsBottomSheet(
|
|||||||
.show(parentFragmentManager, null)
|
.show(parentFragmentManager, null)
|
||||||
}
|
}
|
||||||
context?.getString(R.string.renamePlaylist) -> {
|
context?.getString(R.string.renamePlaylist) -> {
|
||||||
val binding = DialogTextPreferenceBinding.inflate(layoutInflater)
|
RenamePlaylistDialog(playlistId, playlistName)
|
||||||
binding.input.hint = context?.getString(R.string.playlistName)
|
.show(parentFragmentManager, null)
|
||||||
binding.input.inputType = InputType.TYPE_CLASS_TEXT
|
|
||||||
|
|
||||||
MaterialAlertDialogBuilder(requireContext())
|
|
||||||
.setTitle(R.string.renamePlaylist)
|
|
||||||
.setView(binding.root)
|
|
||||||
.setPositiveButton(R.string.okay) { _, _ ->
|
|
||||||
if (binding.input.text.toString() == "") {
|
|
||||||
Toast.makeText(
|
|
||||||
context,
|
|
||||||
R.string.emptyPlaylistName,
|
|
||||||
Toast.LENGTH_SHORT
|
|
||||||
).show()
|
|
||||||
return@setPositiveButton
|
|
||||||
}
|
|
||||||
CoroutineScope(Dispatchers.IO).launch {
|
|
||||||
try {
|
|
||||||
PlaylistsHelper.renamePlaylist(playlistId, binding.input.text.toString())
|
|
||||||
} catch (e: Exception) {
|
|
||||||
return@launch
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.setNegativeButton(R.string.cancel, null)
|
|
||||||
.show()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user