@@ -22,9 +22,7 @@ import com.github.libretube.constants.IntentData
2222import com.github.libretube.constants.PreferenceKeys
2323import com.github.libretube.databinding.FragmentDownloadContentBinding
2424import com.github.libretube.databinding.FragmentDownloadsBinding
25- import com.github.libretube.db.DatabaseHelper
2625import com.github.libretube.db.DatabaseHolder.Database
27- import com.github.libretube.db.obj.DownloadWithItems
2826import com.github.libretube.db.obj.filterByTab
2927import com.github.libretube.extensions.ceilHalf
3028import com.github.libretube.extensions.formatAsFileSize
@@ -108,7 +106,6 @@ class DownloadsFragmentPage : DynamicLayoutManagerFragment(R.layout.fragment_dow
108106 private val binding get() = _binding !!
109107
110108 private var binder: DownloadService .LocalBinder ? = null
111- private val downloads = mutableListOf<DownloadWithItems >()
112109 private val downloadReceiver = DownloadReceiver ()
113110 private lateinit var downloadTab: DownloadTab
114111
@@ -172,7 +169,6 @@ class DownloadsFragmentPage : DynamicLayoutManagerFragment(R.layout.fragment_dow
172169 return @DownloadsAdapter isDownloading.not ()
173170 }
174171 binding.downloadsRecView.adapter = adapter
175- adapter.submitList(downloads)
176172
177173 var selectedSortType =
178174 PreferenceHelper .getInt(PreferenceKeys .SELECTED_DOWNLOAD_SORT_TYPE , 0 )
@@ -197,14 +193,10 @@ class DownloadsFragmentPage : DynamicLayoutManagerFragment(R.layout.fragment_dow
197193 Database .downloadDao().getAll()
198194 }
199195
200- downloads.clear()
201- downloads.addAll(dbDownloads.filterByTab(downloadTab))
202-
203- if (downloads.isEmpty()) return @launch
204-
196+ val downloads = dbDownloads.filterByTab(downloadTab)
197+ adapter.submitList(downloads)
205198 sortDownloadList(selectedSortType)
206199
207-
208200 binding.downloadsRecView.setOnDismissListener { position ->
209201 adapter.showDeleteDialog(requireContext(), position)
210202 // put the item back to the center, as it's currently out of the screen
@@ -242,7 +234,7 @@ class DownloadsFragmentPage : DynamicLayoutManagerFragment(R.layout.fragment_dow
242234 private fun toggleVisibilities () {
243235 val binding = _binding ? : return
244236
245- val isEmpty = downloads.isEmpty()
237+ val isEmpty = adapter.itemCount == 0
246238 binding.downloadsEmpty.isVisible = isEmpty
247239 binding.downloadsContainer.isGone = isEmpty
248240 binding.deleteAll.isGone = isEmpty
@@ -251,10 +243,10 @@ class DownloadsFragmentPage : DynamicLayoutManagerFragment(R.layout.fragment_dow
251243
252244 private fun sortDownloadList (sortType : Int , previousSortType : Int? = null) {
253245 if (previousSortType == null && sortType == 1 ) {
254- adapter.submitList(downloads .reversed())
246+ adapter.submitList(adapter.items .reversed())
255247 }
256248 if (previousSortType != null && sortType != previousSortType) {
257- adapter.submitList(downloads .reversed())
249+ adapter.submitList(adapter.items .reversed())
258250 }
259251 }
260252
@@ -267,14 +259,7 @@ class DownloadsFragmentPage : DynamicLayoutManagerFragment(R.layout.fragment_dow
267259 onlyDeleteWatchedVideos = selected
268260 }
269261 .setPositiveButton(R .string.okay) { _, _ ->
270- lifecycleScope.launch {
271- for (downloadIndex in downloads.size - 1 downTo 0 ) {
272- val download = adapter.currentList[downloadIndex].download
273- if (! onlyDeleteWatchedVideos || DatabaseHelper .isVideoWatched(download.videoId, download.duration ? : 0 )) {
274- adapter.deleteDownload(downloadIndex)
275- }
276- }
277- }
262+ adapter.deleteAllDownloads(onlyDeleteWatchedVideos)
278263 }
279264 .setNegativeButton(R .string.cancel, null )
280265 .show()
@@ -312,7 +297,7 @@ class DownloadsFragmentPage : DynamicLayoutManagerFragment(R.layout.fragment_dow
312297 }
313298
314299 fun updateProgress (id : Int , status : DownloadStatus ) {
315- val index = downloads .indexOfFirst {
300+ val index = adapter.items .indexOfFirst {
316301 it.downloadItems.any { item -> item.id == id }
317302 }
318303 val view =
0 commit comments