mirror of
https://github.com/libre-tube/LibreTube.git
synced 2024-12-14 22:30:30 +05:30
Merge pull request #3155 from Bnyro/master
Fix deletion and renaming feedback toasts for playlists
This commit is contained in:
commit
f84353e7ee
@ -169,7 +169,7 @@ interface PipedApi {
|
|||||||
suspend fun renamePlaylist(
|
suspend fun renamePlaylist(
|
||||||
@Header("Authorization") token: String,
|
@Header("Authorization") token: String,
|
||||||
@Body playlistId: PlaylistId
|
@Body playlistId: PlaylistId
|
||||||
): PlaylistId
|
): Message
|
||||||
|
|
||||||
@POST("user/playlists/delete")
|
@POST("user/playlists/delete")
|
||||||
suspend fun deletePlaylist(
|
suspend fun deletePlaylist(
|
||||||
|
@ -128,7 +128,7 @@ object PlaylistsHelper {
|
|||||||
true
|
true
|
||||||
} else {
|
} else {
|
||||||
val playlist = PlaylistId(playlistId, newName = newName)
|
val playlist = PlaylistId(playlistId, newName = newName)
|
||||||
RetrofitInstance.authApi.renamePlaylist(token, playlist).playlistId != null
|
RetrofitInstance.authApi.renamePlaylist(token, playlist).message == "ok"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -231,6 +231,25 @@ object PlaylistsHelper {
|
|||||||
}.getOrNull()?.playlistId
|
}.getOrNull()?.playlistId
|
||||||
}
|
}
|
||||||
|
|
||||||
|
suspend fun deletePlaylist(playlistId: String, playlistType: PlaylistType): Boolean {
|
||||||
|
if (playlistType == PlaylistType.LOCAL) {
|
||||||
|
DatabaseHolder.Database.localPlaylistsDao().deletePlaylistById(playlistId)
|
||||||
|
DatabaseHolder.Database.localPlaylistsDao().deletePlaylistItemsByPlaylistId(playlistId)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
val response = try {
|
||||||
|
RetrofitInstance.authApi.deletePlaylist(
|
||||||
|
PreferenceHelper.getToken(),
|
||||||
|
PlaylistId(playlistId)
|
||||||
|
)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
Log.e(TAG(), e.toString())
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return response.message == "ok"
|
||||||
|
}
|
||||||
|
|
||||||
fun getPrivatePlaylistType(): PlaylistType {
|
fun getPrivatePlaylistType(): PlaylistType {
|
||||||
return if (loggedIn) PlaylistType.PRIVATE else PlaylistType.LOCAL
|
return if (loggedIn) PlaylistType.PRIVATE else PlaylistType.LOCAL
|
||||||
}
|
}
|
||||||
|
@ -2,17 +2,13 @@ package com.github.libretube.ui.dialogs
|
|||||||
|
|
||||||
import android.app.Dialog
|
import android.app.Dialog
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.util.Log
|
|
||||||
import androidx.fragment.app.DialogFragment
|
import androidx.fragment.app.DialogFragment
|
||||||
import androidx.lifecycle.lifecycleScope
|
|
||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
import com.github.libretube.api.RetrofitInstance
|
import com.github.libretube.api.PlaylistsHelper
|
||||||
import com.github.libretube.api.obj.PlaylistId
|
|
||||||
import com.github.libretube.db.DatabaseHolder
|
|
||||||
import com.github.libretube.enums.PlaylistType
|
import com.github.libretube.enums.PlaylistType
|
||||||
import com.github.libretube.extensions.TAG
|
import com.github.libretube.extensions.toastFromMainDispatcher
|
||||||
import com.github.libretube.helpers.PreferenceHelper
|
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
@ -27,41 +23,20 @@ class DeletePlaylistDialog(
|
|||||||
.setTitle(R.string.deletePlaylist)
|
.setTitle(R.string.deletePlaylist)
|
||||||
.setMessage(R.string.areYouSure)
|
.setMessage(R.string.areYouSure)
|
||||||
.setPositiveButton(R.string.yes) { _, _ ->
|
.setPositiveButton(R.string.yes) { _, _ ->
|
||||||
lifecycleScope.launch(Dispatchers.IO) {
|
val appContext = context?.applicationContext
|
||||||
deletePlaylist()
|
CoroutineScope(Dispatchers.IO).launch {
|
||||||
|
val success = PlaylistsHelper.deletePlaylist(playlistId, playlistType)
|
||||||
|
appContext?.toastFromMainDispatcher(
|
||||||
|
if (success) R.string.success else R.string.fail
|
||||||
|
)
|
||||||
|
withContext(Dispatchers.Main) {
|
||||||
|
runCatching {
|
||||||
|
onSuccess.invoke()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.setNegativeButton(R.string.cancel, null)
|
.setNegativeButton(R.string.cancel, null)
|
||||||
.show()
|
.show()
|
||||||
}
|
}
|
||||||
|
|
||||||
private suspend fun deletePlaylist() {
|
|
||||||
if (playlistType == PlaylistType.LOCAL) {
|
|
||||||
DatabaseHolder.Database.localPlaylistsDao().deletePlaylistById(playlistId)
|
|
||||||
DatabaseHolder.Database.localPlaylistsDao().deletePlaylistItemsByPlaylistId(playlistId)
|
|
||||||
withContext(Dispatchers.Main) {
|
|
||||||
onSuccess()
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
val response = try {
|
|
||||||
RetrofitInstance.authApi.deletePlaylist(
|
|
||||||
PreferenceHelper.getToken(),
|
|
||||||
PlaylistId(playlistId)
|
|
||||||
)
|
|
||||||
} catch (e: Exception) {
|
|
||||||
Log.e(TAG(), e.toString())
|
|
||||||
return
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
if (response.message == "ok") {
|
|
||||||
withContext(Dispatchers.Main) {
|
|
||||||
onSuccess()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (e: Exception) {
|
|
||||||
Log.e(TAG(), e.toString())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -109,6 +109,7 @@ import java.io.IOException
|
|||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.concurrent.Executors
|
import java.util.concurrent.Executors
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
|
@ -18,7 +18,9 @@ import com.github.libretube.ui.dialogs.DownloadDialog
|
|||||||
import com.github.libretube.ui.dialogs.ShareDialog
|
import com.github.libretube.ui.dialogs.ShareDialog
|
||||||
import com.github.libretube.ui.fragments.SubscriptionsFragment
|
import com.github.libretube.ui.fragments.SubscriptionsFragment
|
||||||
import com.github.libretube.util.PlayingQueue
|
import com.github.libretube.util.PlayingQueue
|
||||||
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user