diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/ChapterQueries.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/ChapterQueries.kt index 3de5d892d..0b08a2c2e 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/ChapterQueries.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/ChapterQueries.kt @@ -94,6 +94,17 @@ interface ChapterQueries : DbProvider { .build() ) .prepare() + + fun getChaptersReadWithUrls(urls: List) = db.get() + .listOfObjects(Chapter::class.java) + .withQuery( + Query.builder() + .table(ChapterTable.TABLE) + .where("${ChapterTable.COL_URL} IN (?) AND ${ChapterTable.COL_READ} = 1") + .whereArgs(urls.joinToString { "\"$it\"" }) + .build() + ) + .prepare() // SY <-- fun insertChapter(chapter: Chapter) = db.put().`object`(chapter).prepare() diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterSourceSync.kt b/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterSourceSync.kt index e2fb0050b..838089d30 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterSourceSync.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterSourceSync.kt @@ -9,6 +9,7 @@ import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.online.HttpSource import exh.EH_SOURCE_ID import exh.EXH_SOURCE_ID +import exh.debug.DebugToggles import java.util.Date import java.util.TreeSet import uy.kohesive.injekt.Injekt @@ -137,13 +138,24 @@ fun syncChaptersWithSource( if (manga.source == EH_SOURCE_ID || manga.source == EXH_SOURCE_ID) { val finalAdded = toAdd.subtract(readded) if (finalAdded.isNotEmpty()) { - val max = dbChapters.maxBy { it.last_page_read } + val max = dbChapters.maxByOrNull { it.last_page_read } if (max != null && max.last_page_read > 0) { for (chapter in finalAdded) { chapter.last_page_read = max.last_page_read } } } + if (readded.isEmpty() && !DebugToggles.INCLUDE_ONLY_ROOT_WHEN_LOADING_EXH_VERSIONS.enabled) { + val readChapters = db.getChaptersReadWithUrls(finalAdded.map { it.url }).executeAsBlocking() + if (readChapters.isNotEmpty()) { + finalAdded.onEach { chapter -> + readChapters.firstOrNull { it.url == chapter.url }?.let { + chapter.read = true + chapter.last_page_read = it.last_page_read + } + } + } + } } // <-- EXH