mirror of
https://github.com/libre-tube/LibreTube.git
synced 2024-12-14 06:10:31 +05:30
Merge pull request #1917 from Bnyro/master
add confirmation for playlist deletion
This commit is contained in:
commit
25390209ce
@ -11,23 +11,10 @@
|
||||
"type": "UNIVERSAL",
|
||||
"filters": [],
|
||||
"attributes": [],
|
||||
"versionCode": 22,
|
||||
"versionName": "0.7.1",
|
||||
"versionCode": 23,
|
||||
"versionName": "0.8.0",
|
||||
"outputFile": "app-universal-release.apk"
|
||||
},
|
||||
{
|
||||
"type": "ONE_OF_MANY",
|
||||
"filters": [
|
||||
{
|
||||
"filterType": "ABI",
|
||||
"value": "x86_64"
|
||||
}
|
||||
],
|
||||
"attributes": [],
|
||||
"versionCode": 22,
|
||||
"versionName": "0.7.1",
|
||||
"outputFile": "app-x86_64-release.apk"
|
||||
},
|
||||
{
|
||||
"type": "ONE_OF_MANY",
|
||||
"filters": [
|
||||
@ -37,8 +24,8 @@
|
||||
}
|
||||
],
|
||||
"attributes": [],
|
||||
"versionCode": 22,
|
||||
"versionName": "0.7.1",
|
||||
"versionCode": 23,
|
||||
"versionName": "0.8.0",
|
||||
"outputFile": "app-x86-release.apk"
|
||||
},
|
||||
{
|
||||
@ -50,10 +37,23 @@
|
||||
}
|
||||
],
|
||||
"attributes": [],
|
||||
"versionCode": 22,
|
||||
"versionName": "0.7.1",
|
||||
"versionCode": 23,
|
||||
"versionName": "0.8.0",
|
||||
"outputFile": "app-arm64-v8a-release.apk"
|
||||
},
|
||||
{
|
||||
"type": "ONE_OF_MANY",
|
||||
"filters": [
|
||||
{
|
||||
"filterType": "ABI",
|
||||
"value": "x86_64"
|
||||
}
|
||||
],
|
||||
"attributes": [],
|
||||
"versionCode": 23,
|
||||
"versionName": "0.8.0",
|
||||
"outputFile": "app-x86_64-release.apk"
|
||||
},
|
||||
{
|
||||
"type": "ONE_OF_MANY",
|
||||
"filters": [
|
||||
@ -63,8 +63,8 @@
|
||||
}
|
||||
],
|
||||
"attributes": [],
|
||||
"versionCode": 22,
|
||||
"versionName": "0.7.1",
|
||||
"versionCode": 23,
|
||||
"versionName": "0.8.0",
|
||||
"outputFile": "app-armeabi-v7a-release.apk"
|
||||
}
|
||||
],
|
||||
|
@ -1,28 +1,17 @@
|
||||
package com.github.libretube.ui.adapters
|
||||
|
||||
import android.app.Activity
|
||||
import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.api.RetrofitInstance
|
||||
import com.github.libretube.api.obj.PlaylistId
|
||||
import com.github.libretube.api.obj.Playlists
|
||||
import com.github.libretube.databinding.PlaylistsRowBinding
|
||||
import com.github.libretube.extensions.TAG
|
||||
import com.github.libretube.ui.base.BaseActivity
|
||||
import com.github.libretube.ui.dialogs.DeletePlaylistDialog
|
||||
import com.github.libretube.ui.sheets.PlaylistOptionsBottomSheet
|
||||
import com.github.libretube.ui.viewholders.PlaylistsViewHolder
|
||||
import com.github.libretube.util.ImageHelper
|
||||
import com.github.libretube.util.NavigationHelper
|
||||
import com.github.libretube.util.PreferenceHelper
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import retrofit2.HttpException
|
||||
import java.io.IOException
|
||||
|
||||
class PlaylistsAdapter(
|
||||
private val playlists: MutableList<Playlists>
|
||||
@ -59,15 +48,16 @@ class PlaylistsAdapter(
|
||||
videoCount.text = playlist.videos.toString()
|
||||
|
||||
deletePlaylist.setOnClickListener {
|
||||
val builder = MaterialAlertDialogBuilder(root.context)
|
||||
builder.setTitle(R.string.deletePlaylist)
|
||||
builder.setMessage(R.string.areYouSure)
|
||||
builder.setPositiveButton(R.string.yes) { _, _ ->
|
||||
PreferenceHelper.getToken()
|
||||
deletePlaylist(root.context as Activity, playlist.id!!, position)
|
||||
DeletePlaylistDialog(playlist.id!!) {
|
||||
playlists.removeAt(position)
|
||||
(root.context as BaseActivity).runOnUiThread {
|
||||
notifyItemRemoved(position)
|
||||
notifyItemRangeChanged(position, itemCount)
|
||||
}
|
||||
builder.setNegativeButton(R.string.cancel, null)
|
||||
builder.show()
|
||||
}.show(
|
||||
(root.context as BaseActivity).supportFragmentManager,
|
||||
null
|
||||
)
|
||||
}
|
||||
root.setOnClickListener {
|
||||
NavigationHelper.navigatePlaylist(root.context, playlist.id, true)
|
||||
@ -87,33 +77,4 @@ class PlaylistsAdapter(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun deletePlaylist(activity: Activity, id: String, position: Int) {
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
val response = try {
|
||||
RetrofitInstance.authApi.deletePlaylist(
|
||||
PreferenceHelper.getToken(),
|
||||
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
|
||||
}
|
||||
try {
|
||||
if (response.message == "ok") {
|
||||
playlists.removeAt(position)
|
||||
activity.runOnUiThread {
|
||||
notifyItemRemoved(position)
|
||||
notifyItemRangeChanged(position, itemCount)
|
||||
}
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG(), e.toString())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,53 @@
|
||||
package com.github.libretube.ui.dialogs
|
||||
|
||||
import android.app.Dialog
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.api.RetrofitInstance
|
||||
import com.github.libretube.api.obj.PlaylistId
|
||||
import com.github.libretube.extensions.TAG
|
||||
import com.github.libretube.util.PreferenceHelper
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
class DeletePlaylistDialog(
|
||||
private val playlistId: String,
|
||||
private val onSuccess: () -> Unit = {}
|
||||
) : DialogFragment() {
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
return MaterialAlertDialogBuilder(requireContext())
|
||||
.setTitle(R.string.deletePlaylist)
|
||||
.setMessage(R.string.areYouSure)
|
||||
.setPositiveButton(R.string.yes) { _, _ ->
|
||||
PreferenceHelper.getToken()
|
||||
deletePlaylist()
|
||||
}
|
||||
.setNegativeButton(R.string.cancel, null)
|
||||
.show()
|
||||
}
|
||||
|
||||
private fun deletePlaylist() {
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
val response = try {
|
||||
RetrofitInstance.authApi.deletePlaylist(
|
||||
PreferenceHelper.getToken(),
|
||||
PlaylistId(playlistId)
|
||||
)
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG(), e.toString())
|
||||
return@launch
|
||||
}
|
||||
try {
|
||||
if (response.message == "ok") {
|
||||
onSuccess.invoke()
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG(), e.toString())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -11,6 +11,7 @@ import com.github.libretube.enums.ShareObjectType
|
||||
import com.github.libretube.extensions.toID
|
||||
import com.github.libretube.extensions.toastFromMainThread
|
||||
import com.github.libretube.obj.ShareData
|
||||
import com.github.libretube.ui.dialogs.DeletePlaylistDialog
|
||||
import com.github.libretube.ui.dialogs.ShareDialog
|
||||
import com.github.libretube.util.BackgroundHelper
|
||||
import com.github.libretube.util.PreferenceHelper
|
||||
@ -81,9 +82,8 @@ class PlaylistOptionsBottomSheet(
|
||||
shareDialog.show(parentFragmentManager, ShareDialog::class.java.name)
|
||||
}
|
||||
context?.getString(R.string.deletePlaylist) -> {
|
||||
deletePlaylist(
|
||||
playlistId
|
||||
)
|
||||
DeletePlaylistDialog(playlistId)
|
||||
.show(parentFragmentManager, null)
|
||||
}
|
||||
context?.getString(R.string.renamePlaylist) -> {
|
||||
val binding = DialogTextPreferenceBinding.inflate(layoutInflater)
|
||||
@ -145,17 +145,4 @@ class PlaylistOptionsBottomSheet(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun deletePlaylist(id: String) {
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
try {
|
||||
RetrofitInstance.authApi.deletePlaylist(
|
||||
PreferenceHelper.getToken(),
|
||||
PlaylistId(id)
|
||||
)
|
||||
} catch (e: Exception) {
|
||||
return@launch
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user