Fix EHentai reading progress not carrying over

This commit is contained in:
NerdNumber9 2019-08-13 00:04:02 -04:00
parent b64ecfb836
commit 141edac99b
4 changed files with 39 additions and 15 deletions

View File

@ -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()
}

View File

@ -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()
}

View File

@ -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()}"

View File

@ -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