From f723a549d4bb13a99a6a5d1b2246e2732bbe9eff Mon Sep 17 00:00:00 2001 From: deniscerri <64997243+deniscerri@users.noreply.github.com> Date: Sun, 27 Jul 2025 21:39:16 +0200 Subject: [PATCH] add reverse toggle for multiple download card --- .../ytdl/database/dao/DownloadDao.kt | 11 +++++++++++ .../database/repository/DownloadRepository.kt | 4 ++++ .../database/viewmodel/DownloadViewModel.kt | 8 ++++++++ .../DownloadMultipleBottomSheetDialog.kt | 18 ++++++++++++++++++ .../deniscerri/ytdl/ui/more/WebViewActivity.kt | 1 + .../layout/download_multiple_bottom_sheet.xml | 11 +++++++++++ 6 files changed, 53 insertions(+) diff --git a/app/src/main/java/com/deniscerri/ytdl/database/dao/DownloadDao.kt b/app/src/main/java/com/deniscerri/ytdl/database/dao/DownloadDao.kt index 89ee09c4..d7e8cf43 100644 --- a/app/src/main/java/com/deniscerri/ytdl/database/dao/DownloadDao.kt +++ b/app/src/main/java/com/deniscerri/ytdl/database/dao/DownloadDao.kt @@ -356,6 +356,17 @@ interface DownloadDao { } } + @Transaction + suspend fun reverseProcessingDownloads() { + val items = getProcessingDownloadsList() + val newIDs = items.reversed().map { it.id } + items.forEach { updateDownloadID(it.id, -(it.id)) } + + items.forEachIndexed { idx, it -> + updateDownloadID(-(it.id), newIDs[idx]) + } + } + @Query("Update downloads set id=:newId where id=:id") suspend fun updateDownloadID(id: Long, newId: Long) diff --git a/app/src/main/java/com/deniscerri/ytdl/database/repository/DownloadRepository.kt b/app/src/main/java/com/deniscerri/ytdl/database/repository/DownloadRepository.kt index 4d10de83..59309cda 100644 --- a/app/src/main/java/com/deniscerri/ytdl/database/repository/DownloadRepository.kt +++ b/app/src/main/java/com/deniscerri/ytdl/database/repository/DownloadRepository.kt @@ -144,6 +144,10 @@ class DownloadRepository(private val downloadDao: DownloadDao) { return downloadDao.getProcessingDownloadsList() } + suspend fun reverseProcessingDownloads() { + downloadDao.reverseProcessingDownloads() + } + fun getActiveAndQueuedDownloads() : List { return downloadDao.getActiveAndQueuedDownloadsList() } diff --git a/app/src/main/java/com/deniscerri/ytdl/database/viewmodel/DownloadViewModel.kt b/app/src/main/java/com/deniscerri/ytdl/database/viewmodel/DownloadViewModel.kt index b6bb8c02..19c6e199 100644 --- a/app/src/main/java/com/deniscerri/ytdl/database/viewmodel/DownloadViewModel.kt +++ b/app/src/main/java/com/deniscerri/ytdl/database/viewmodel/DownloadViewModel.kt @@ -127,6 +127,7 @@ class DownloadViewModel(private val application: Application) : AndroidViewModel var processingItems = MutableStateFlow(false) var processingItemsJob : Job? = null + var processingSort = MutableStateFlow("ASC") init { dbManager = DBManager.getInstance(application) @@ -619,6 +620,13 @@ class DownloadViewModel(private val application: Application) : AndroidViewModel ) } + suspend fun toggleProcessingSort() : String { + processingItems.emit(true) + processingSort.value = if (processingSort.value == "ASC") "DESC" else "ASC" + repository.reverseProcessingDownloads() + processingItems.emit(false) + return processingSort.value + } fun turnDownloadItemsToProcessingDownloads(itemIDs: List, deleteExisting : Boolean = false) = viewModelScope.launch(Dispatchers.IO){ val job = viewModelScope.launch(Dispatchers.IO) { diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadMultipleBottomSheetDialog.kt b/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadMultipleBottomSheetDialog.kt index 38c761f7..d791dfbe 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadMultipleBottomSheetDialog.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadMultipleBottomSheetDialog.kt @@ -22,6 +22,7 @@ import android.widget.TextView import android.widget.Toast import androidx.activity.result.contract.ActivityResultContracts import androidx.constraintlayout.widget.ConstraintLayout +import androidx.core.content.ContextCompat import androidx.core.os.bundleOf import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat @@ -38,6 +39,7 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.afollestad.materialdialogs.utils.MDUtil.getStringArray import com.deniscerri.ytdl.R +import com.deniscerri.ytdl.database.DBManager.SORTING import com.deniscerri.ytdl.database.models.CommandTemplate import com.deniscerri.ytdl.database.models.DownloadItem import com.deniscerri.ytdl.database.models.DownloadItemConfigureMultiple @@ -921,6 +923,22 @@ class DownloadMultipleBottomSheetDialog : BottomSheetDialogFragment(), Configure updateBottomAppBarMenuItemsVisibility() } + + val sortBtn = view.findViewById(R.id.sortBtn) + sortBtn.setOnClickListener { + lifecycleScope.launch { + val newSort = withContext(Dispatchers.IO) { + downloadViewModel.toggleProcessingSort() + } + + when(newSort) { + "ASC" -> sortBtn.icon = ContextCompat.getDrawable(requireContext(), R.drawable.ic_down) + "DESC" -> sortBtn.icon = ContextCompat.getDrawable(requireContext(), R.drawable.ic_up) + } + recyclerView.scrollTo(0, 0) + } + } + } override fun onResume() { diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/more/WebViewActivity.kt b/app/src/main/java/com/deniscerri/ytdl/ui/more/WebViewActivity.kt index 1865951d..d8904e51 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/more/WebViewActivity.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/more/WebViewActivity.kt @@ -233,6 +233,7 @@ class WebViewActivity : BaseActivity() { } preferences.edit().putString("useragent_header", userAgentString).apply() } + cookieManager.setAcceptCookie(true) cookieManager.setAcceptThirdPartyCookies(this, true) } } diff --git a/app/src/main/res/layout/download_multiple_bottom_sheet.xml b/app/src/main/res/layout/download_multiple_bottom_sheet.xml index df6fedfd..4c5191df 100644 --- a/app/src/main/res/layout/download_multiple_bottom_sheet.xml +++ b/app/src/main/res/layout/download_multiple_bottom_sheet.xml @@ -263,6 +263,17 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" /> + +