mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-03 23:58:55 +01:00 
			
		
		
		
	Fix EHentai reading progress not carrying over
This commit is contained in:
		@@ -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()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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()
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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()}"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user