mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	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
This commit is contained in:
		@@ -1,3 +0,0 @@
 | 
			
		||||
package eu.kanade.data
 | 
			
		||||
 | 
			
		||||
fun Boolean.toLong() = if (this) 1L else 0L
 | 
			
		||||
@@ -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
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
		Reference in New Issue
	
	Block a user