瀏覽代碼

Fix download ahead missing out 1 chapter (#7927)

* Fix download ahead missing out 1 chapter

* Move toLong() function

* Add check whether the next chapter is queued
nzoba 2 年之前
父節點
當前提交
07d1b9f3ba

+ 0 - 3
app/src/main/java/eu/kanade/data/DatabaseUtils.kt

@@ -1,3 +0,0 @@
-package eu.kanade.data
-
-fun Boolean.toLong() = if (this) 1L else 0L

+ 1 - 1
app/src/main/java/eu/kanade/data/chapter/ChapterRepositoryImpl.kt

@@ -1,11 +1,11 @@
 package eu.kanade.data.chapter
 
 import eu.kanade.data.DatabaseHandler
-import eu.kanade.data.toLong
 import eu.kanade.domain.chapter.model.Chapter
 import eu.kanade.domain.chapter.model.ChapterUpdate
 import eu.kanade.domain.chapter.repository.ChapterRepository
 import eu.kanade.tachiyomi.util.system.logcat
+import eu.kanade.tachiyomi.util.system.toLong
 import kotlinx.coroutines.flow.Flow
 import logcat.LogPriority
 

+ 1 - 1
app/src/main/java/eu/kanade/data/manga/MangaRepositoryImpl.kt

@@ -2,12 +2,12 @@ package eu.kanade.data.manga
 
 import eu.kanade.data.DatabaseHandler
 import eu.kanade.data.listOfStringsAdapter
-import eu.kanade.data.toLong
 import eu.kanade.domain.manga.model.Manga
 import eu.kanade.domain.manga.model.MangaUpdate
 import eu.kanade.domain.manga.repository.MangaRepository
 import eu.kanade.tachiyomi.data.database.models.LibraryManga
 import eu.kanade.tachiyomi.util.system.logcat
+import eu.kanade.tachiyomi.util.system.toLong
 import kotlinx.coroutines.flow.Flow
 import logcat.LogPriority
 

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt

@@ -6,7 +6,6 @@ import com.hippo.unifile.UniFile
 import data.Manga_sync
 import data.Mangas
 import eu.kanade.data.DatabaseHandler
-import eu.kanade.data.toLong
 import eu.kanade.domain.category.interactor.GetCategories
 import eu.kanade.domain.category.model.Category
 import eu.kanade.domain.history.model.HistoryUpdate
@@ -35,6 +34,7 @@ import eu.kanade.tachiyomi.data.database.models.Track
 import eu.kanade.tachiyomi.data.preference.PreferencesHelper
 import eu.kanade.tachiyomi.source.SourceManager
 import eu.kanade.tachiyomi.util.system.logcat
+import eu.kanade.tachiyomi.util.system.toLong
 import kotlinx.serialization.protobuf.ProtoBuf
 import logcat.LogPriority
 import okio.buffer

+ 11 - 6
app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt

@@ -54,6 +54,7 @@ import eu.kanade.tachiyomi.util.storage.DiskUtil
 import eu.kanade.tachiyomi.util.storage.cacheImageDir
 import eu.kanade.tachiyomi.util.system.isOnline
 import eu.kanade.tachiyomi.util.system.logcat
+import eu.kanade.tachiyomi.util.system.toInt
 import kotlinx.coroutines.async
 import kotlinx.coroutines.awaitAll
 import kotlinx.coroutines.runBlocking
@@ -449,15 +450,19 @@ class ReaderPresenter(
         val nextChapter = viewerChaptersRelay.value?.nextChapter?.chapter ?: return
         val chaptersNumberToDownload = preferences.autoDownloadWhileReading().get()
         if (chaptersNumberToDownload == 0 || !manga.favorite) return
-        val isNextChapterDownloaded =
-            downloadManager.isChapterDownloaded(nextChapter.name, nextChapter.scanlator, manga.title, manga.source)
-        if (isNextChapterDownloaded) {
-            downloadAutoNextChapters(chaptersNumberToDownload, nextChapter.id)
+        val isNextChapterDownloadedOrQueued = downloadManager.isChapterDownloaded(
+            nextChapter.name,
+            nextChapter.scanlator,
+            manga.title,
+            manga.source,
+        ) || downloadManager.getChapterDownloadOrNull(nextChapter) != null
+        if (isNextChapterDownloadedOrQueued) {
+            downloadAutoNextChapters(chaptersNumberToDownload, nextChapter.id, nextChapter.read)
         }
     }
 
-    private fun downloadAutoNextChapters(choice: Int, nextChapterId: Long?) {
-        val chaptersToDownload = getNextUnreadChaptersSorted(nextChapterId).take(choice - 1)
+    private fun downloadAutoNextChapters(choice: Int, nextChapterId: Long?, isNextChapterRead: Boolean) {
+        val chaptersToDownload = getNextUnreadChaptersSorted(nextChapterId).take(choice - 1 + isNextChapterRead.toInt())
         if (chaptersToDownload.isNotEmpty()) {
             downloadChapters(chaptersToDownload)
         }

+ 5 - 0
app/src/main/java/eu/kanade/tachiyomi/util/system/BooleanExtensions.kt

@@ -0,0 +1,5 @@
+package eu.kanade.tachiyomi.util.system
+
+fun Boolean.toInt() = if (this) 1 else 0
+
+fun Boolean.toLong() = if (this) 1L else 0L