瀏覽代碼

Ensure final download status is always set (#9453)

Two-Ai 1 年之前
父節點
當前提交
cb2d43c0d1
共有 1 個文件被更改,包括 28 次插入22 次删除
  1. 28 22
      app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt

+ 28 - 22
app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt

@@ -526,9 +526,15 @@ class Downloader(
         dirname: String,
     ) {
         // Page list hasn't been initialized
-        val downloadPageCount = download.pages?.size ?: return
-        // Ensure that all pages has been downloaded
-        if (download.downloadedImages < downloadPageCount) return
+        val downloadPageCount = download.pages?.size ?: run {
+            download.status = Download.State.ERROR
+            return
+        }
+        // Ensure that all pages have been downloaded
+        if (download.downloadedImages != downloadPageCount) {
+            download.status = Download.State.ERROR
+            return
+        }
         // Ensure that the chapter folder has all the pages
         val downloadedImagesCount = tmpDir.listFiles().orEmpty().count {
             val fileName = it.name.orEmpty()
@@ -540,29 +546,29 @@ class Downloader(
                 else -> true
             }
         }
+        if (downloadedImagesCount != downloadPageCount) {
+            download.status = Download.State.ERROR
+            return
+        }
 
-        download.status = if (downloadedImagesCount == downloadPageCount) {
-            createComicInfoFile(
-                tmpDir,
-                download.manga,
-                download.chapter,
-                download.source,
-            )
-
-            // Only rename the directory if it's downloaded
-            if (downloadPreferences.saveChaptersAsCBZ().get()) {
-                archiveChapter(mangaDir, dirname, tmpDir)
-            } else {
-                tmpDir.renameTo(dirname)
-            }
-            cache.addChapter(dirname, mangaDir, download.manga)
-
-            DiskUtil.createNoMediaFile(tmpDir, context)
+        createComicInfoFile(
+            tmpDir,
+            download.manga,
+            download.chapter,
+            download.source,
+        )
 
-            Download.State.DOWNLOADED
+        // Only rename the directory if it's downloaded
+        if (downloadPreferences.saveChaptersAsCBZ().get()) {
+            archiveChapter(mangaDir, dirname, tmpDir)
         } else {
-            Download.State.ERROR
+            tmpDir.renameTo(dirname)
         }
+        cache.addChapter(dirname, mangaDir, download.manga)
+
+        DiskUtil.createNoMediaFile(tmpDir, context)
+
+        download.status = Download.State.DOWNLOADED
     }
 
     /**