3
3
Fork 1
mirror of https://github.com/recloudstream/cloudstream.git synced 2024-08-15 01:53:11 +00:00

Move setting isMultiDeleteState to view model and don't close if no items

This commit is contained in:
Luna712 2024-07-08 21:11:25 -06:00 committed by GitHub
parent 64c45d0468
commit 40bfe7210d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 43 additions and 36 deletions
app/src/main/java/com/lagradost/cloudstream3/ui/download

View file

@ -113,6 +113,15 @@ class DownloadChildFragment : Fragment() {
setAppBarNoScrollFlagsOnTV()
}
observe(downloadsViewModel.isMultiDeleteState) { isMultiDeleteState ->
val adapter = binding?.downloadChildList?.adapter as? DownloadAdapter
adapter?.setIsMultiDeleteState(isMultiDeleteState)
binding?.downloadDeleteAppbar?.isVisible = isMultiDeleteState
if (!isMultiDeleteState) {
detachBackPressedCallback()
downloadsViewModel.clearSelectedItems()
}
}
observe(downloadsViewModel.selectedItems) {
handleSelectedChange(it)
binding?.btnDelete?.text =
@ -160,8 +169,7 @@ class DownloadChildFragment : Fragment() {
}
binding?.btnCancel?.setOnClickListener {
adapter?.setIsMultiDeleteState(false)
downloadsViewModel.clearSelectedItems()
downloadsViewModel.setIsMultiDeleteState(false)
}
binding?.btnSelectAll?.setOnClickListener {
@ -169,23 +177,15 @@ class DownloadChildFragment : Fragment() {
downloadsViewModel.selectAllItems()
}
adapter?.setIsMultiDeleteState(true)
} else {
binding?.downloadDeleteAppbar?.isVisible = false
detachBackPressedCallback()
adapter?.setIsMultiDeleteState(false)
downloadsViewModel.clearSelectedItems()
downloadsViewModel.setIsMultiDeleteState(true)
}
}
private fun setUpDownloadDeleteListener(folder: String) {
downloadDeleteEventListener = { id: Int ->
val list = (binding?.downloadChildList?.adapter as? DownloadAdapter)?.currentList
if (list != null) {
if (list.any { it.data.id == id }) {
updateList(folder)
}
if (list?.any { it.data.id == id } == true) {
updateList(folder)
}
}
downloadDeleteEventListener?.let { VideoDownloadManager.downloadDeleteEvent += it }
@ -197,8 +197,7 @@ class DownloadChildFragment : Fragment() {
if (backPressedCallback == null) {
backPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
(binding?.downloadChildList?.adapter as? DownloadAdapter)?.setIsMultiDeleteState(false)
downloadsViewModel.clearSelectedItems()
downloadsViewModel.setIsMultiDeleteState(false)
}
}
}

View file

@ -112,6 +112,19 @@ class DownloadFragment : Fragment() {
observe(downloadsViewModel.downloadBytes) {
updateStorageInfo(view.context, it, R.string.app_storage, binding?.downloadAppTxt, binding?.downloadApp)
}
observe(downloadsViewModel.isMultiDeleteState) { isMultiDeleteState ->
val adapter = binding?.downloadList?.adapter as? DownloadAdapter
adapter?.setIsMultiDeleteState(isMultiDeleteState)
binding?.downloadDeleteAppbar?.isVisible = isMultiDeleteState
if (!isMultiDeleteState) {
detachBackPressedCallback()
downloadsViewModel.clearSelectedItems()
// Make sure we don't display it early
if (downloadsViewModel.usedBytes.value?.let { it > 0 } == true) {
binding?.downloadStorageAppbar?.isVisible = true
}
}
}
observe(downloadsViewModel.selectedItems) {
handleSelectedChange(it)
binding?.btnDelete?.text =
@ -195,8 +208,7 @@ class DownloadFragment : Fragment() {
}
binding?.btnCancel?.setOnClickListener {
adapter?.setIsMultiDeleteState(false)
downloadsViewModel.clearSelectedItems()
downloadsViewModel.setIsMultiDeleteState(false)
}
binding?.btnSelectAll?.setOnClickListener {
@ -204,17 +216,7 @@ class DownloadFragment : Fragment() {
downloadsViewModel.selectAllItems()
}
adapter?.setIsMultiDeleteState(true)
} else {
binding?.downloadDeleteAppbar?.isVisible = false
// Make sure we don't display it early
if (downloadsViewModel.usedBytes.value?.let { it > 0 } == true) {
binding?.downloadStorageAppbar?.isVisible = true
}
detachBackPressedCallback()
adapter?.setIsMultiDeleteState(false)
downloadsViewModel.clearSelectedItems()
downloadsViewModel.setIsMultiDeleteState(true)
}
}
@ -329,8 +331,7 @@ class DownloadFragment : Fragment() {
if (backPressedCallback == null) {
backPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
(binding?.downloadList?.adapter as? DownloadAdapter)?.setIsMultiDeleteState(false)
downloadsViewModel.clearSelectedItems()
downloadsViewModel.setIsMultiDeleteState(false)
}
}
}

View file

@ -32,19 +32,26 @@ class DownloadViewModel : ViewModel() {
val headerCards: LiveData<List<VisualDownloadCached.Header>> = _headerCards
private val _usedBytes = MutableLiveData<Long>()
private val _availableBytes = MutableLiveData<Long>()
private val _downloadBytes = MutableLiveData<Long>()
private val _selectedItems = MutableLiveData<MutableList<VisualDownloadCached>>(mutableListOf())
val usedBytes: LiveData<Long> = _usedBytes
private val _availableBytes = MutableLiveData<Long>()
val availableBytes: LiveData<Long> = _availableBytes
private val _downloadBytes = MutableLiveData<Long>()
val downloadBytes: LiveData<Long> = _downloadBytes
private val _isMultiDeleteState = MutableLiveData(false)
val isMultiDeleteState: LiveData<Boolean> = _isMultiDeleteState
private val _selectedItems = MutableLiveData<MutableList<VisualDownloadCached>>(mutableListOf())
val selectedItems: LiveData<MutableList<VisualDownloadCached>> = _selectedItems
private var previousVisual: List<VisualDownloadCached.Header>? = null
fun setIsMultiDeleteState(value: Boolean) {
_isMultiDeleteState.postValue(value)
}
fun addSelected(item: VisualDownloadCached) {
val currentSelected = selectedItems.value ?: mutableListOf()
if (!currentSelected.contains(item)) {
@ -215,7 +222,7 @@ class DownloadViewModel : ViewModel() {
DialogInterface.BUTTON_POSITIVE -> {
viewModelScope.launchSafe {
deleteFilesAndUpdateSettings(context, ids, this)
clearSelectedItems()
setIsMultiDeleteState(false)
updateList(context)
}
}