diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/EHentai.kt b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/EHentai.kt index dfa59a008..23158eb95 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/source/online/all/EHentai.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/source/online/all/EHentai.kt @@ -191,17 +191,20 @@ class EHentai(override val id: Long, }!!.nextElementSibling().text()).time } // Build and append the rest of the galleries - newDisplay.mapIndexed { index, newGallery -> - val link = newGallery.attr("href") - val name = newGallery.text() - val posted = (newGallery.nextSibling() as TextNode).text().removePrefix(", added ") - SChapter.create().apply { - this.url = EHentaiSearchMetadata.normalizeUrl(link) - this.name = "v${index + 2}: $name" - this.chapter_number = index + 2f - this.date_upload = EX_DATE_FORMAT.parse(posted).time - } - }.reversed() + self + if(DebugToggles.INCLUDE_ONLY_ROOT_WHEN_LOADING_EXH_VERSIONS.enabled) listOf(self) + else { + newDisplay.mapIndexed { index, newGallery -> + val link = newGallery.attr("href") + val name = newGallery.text() + val posted = (newGallery.nextSibling() as TextNode).text().removePrefix(", added ") + SChapter.create().apply { + this.url = EHentaiSearchMetadata.normalizeUrl(link) + this.name = "v${index + 2}: $name" + this.chapter_number = index + 2f + this.date_upload = EX_DATE_FORMAT.parse(posted).time + } + }.reversed() + self + } }.toObservable() } diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/ChapterSourceSync.kt b/app/src/main/java/eu/kanade/tachiyomi/util/ChapterSourceSync.kt index 60aff194a..3ec7ab965 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/util/ChapterSourceSync.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/ChapterSourceSync.kt @@ -6,6 +6,8 @@ import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.source.Source 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 java.util.* /** @@ -118,6 +120,21 @@ fun syncChaptersWithSource(db: DatabaseHelper, readded.add(c) } } + + // --> EXH (carry over reading progress) + 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 } + if (max != null && max.last_page_read > 0) { + for (chapter in finalAdded) { + chapter.last_page_read = max.last_page_read + } + } + } + } + // <-- EXH + db.insertChapters(toAdd).executeAsBlocking() } diff --git a/app/src/main/java/exh/debug/DebugToggles.kt b/app/src/main/java/exh/debug/DebugToggles.kt index 1728a85a3..5b3d062e8 100644 --- a/app/src/main/java/exh/debug/DebugToggles.kt +++ b/app/src/main/java/exh/debug/DebugToggles.kt @@ -4,10 +4,16 @@ import eu.kanade.tachiyomi.data.preference.PreferencesHelper import uy.kohesive.injekt.injectLazy enum class DebugToggles(val default: Boolean) { + // Redirect to master version of gallery when encountering a gallery that has a parent/child that is already in the library ENABLE_EXH_ROOT_REDIRECT(true), + // Enable debug overlay (only available in debug builds) ENABLE_DEBUG_OVERLAY(true), + // Convert non-root galleries into root galleries when loading them PULL_TO_ROOT_WHEN_LOADING_EXH_MANGA_DETAILS(true), - RESTRICT_EXH_GALLERY_UPDATE_CHECK_FREQUENCY(true); + // Do not update the same gallery too often + RESTRICT_EXH_GALLERY_UPDATE_CHECK_FREQUENCY(true), + // Pretend that all galleries only have a single version + INCLUDE_ONLY_ROOT_WHEN_LOADING_EXH_VERSIONS(false); val prefKey = "eh_debug_toggle_${name.toLowerCase()}" diff --git a/app/src/main/java/exh/eh/EHentaiUpdateHelper.kt b/app/src/main/java/exh/eh/EHentaiUpdateHelper.kt index 4fe1aee1c..ba9e2f476 100644 --- a/app/src/main/java/exh/eh/EHentaiUpdateHelper.kt +++ b/app/src/main/java/exh/eh/EHentaiUpdateHelper.kt @@ -87,9 +87,7 @@ class EHentaiUpdateHelper(context: Context) { .fold(accepted.chapters) { curChapters, chapter -> val existing = curChapters.find { it.url == chapter.url } - val newLastPageRead = chainsAsChapters.filter { it.date_upload < chapter.date_upload }.maxBy { - it.last_page_read - }?.last_page_read + val newLastPageRead = chainsAsChapters.maxBy { it.last_page_read }?.last_page_read if (existing != null) { existing.read = existing.read || chapter.read