소스 검색

Don't enqueue bookmarked chapters for deletion (fixes #3691)

arkon 4 년 전
부모
커밋
4c8665c9f0

+ 14 - 8
app/src/main/java/eu/kanade/tachiyomi/data/download/DownloadManager.kt

@@ -198,14 +198,10 @@ class DownloadManager(private val context: Context) {
      * @param manga the manga of the chapters.
      * @param source the source of the chapters.
      */
-    fun deleteChapters(chapters: List<Chapter>, manga: Manga, source: Source) {
-        queue.remove(chapters)
+    fun deleteChapters(chapters: List<Chapter>, manga: Manga, source: Source): List<Chapter> {
+        val filteredChapters = getChaptersToDelete(chapters)
 
-        val filteredChapters = if (!preferences.removeBookmarkedChapters()) {
-            chapters.filterNot { it.bookmark }
-        } else {
-            chapters
-        }
+        queue.remove(filteredChapters)
 
         val chapterDirs = provider.findChapterDirs(filteredChapters, manga, source)
         chapterDirs.forEach { it.delete() }
@@ -213,6 +209,8 @@ class DownloadManager(private val context: Context) {
         if (cache.getDownloadCount(manga) == 0) { // Delete manga directory if empty
             chapterDirs.firstOrNull()?.parentFile?.delete()
         }
+
+        return filteredChapters
     }
 
     /**
@@ -234,7 +232,7 @@ class DownloadManager(private val context: Context) {
      * @param manga the manga of the chapters.
      */
     fun enqueueDeleteChapters(chapters: List<Chapter>, manga: Manga) {
-        pendingDeleter.addChapters(chapters, manga)
+        pendingDeleter.addChapters(getChaptersToDelete(chapters), manga)
     }
 
     /**
@@ -273,4 +271,12 @@ class DownloadManager(private val context: Context) {
             Timber.e("Could not rename downloaded chapter: %s.", oldNames.joinToString())
         }
     }
+
+    private fun getChaptersToDelete(chapters: List<Chapter>): List<Chapter> {
+        return if (!preferences.removeBookmarkedChapters()) {
+            chapters.filterNot { it.bookmark }
+        } else {
+            chapters
+        }
+    }
 }

+ 5 - 10
app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt

@@ -494,16 +494,11 @@ class MangaPresenter(
      * @param chapters the chapters to delete.
      */
     private fun deleteChaptersInternal(chapters: List<ChapterItem>) {
-        val filteredChapters = if (!preferences.removeBookmarkedChapters()) {
-            chapters.filterNot { it.bookmark }
-        } else {
-            chapters
-        }
-
-        downloadManager.deleteChapters(filteredChapters, manga, source)
-        filteredChapters.forEach {
-            it.status = Download.NOT_DOWNLOADED
-            it.download = null
+        downloadManager.deleteChapters(chapters, manga, source).forEach {
+            if (it is ChapterItem) {
+                it.status = Download.NOT_DOWNLOADED
+                it.download = null
+            }
         }
     }