komikku/data/src/main/java/tachiyomi/data/source/EHentaiPagingSource.kt
AntsyLich 50d31978b2
Deduplicate entries when browsing (mihonapp/mihon#1957)
(cherry picked from commit f81da3dcce9afba883b6a3accdd3bf4ea21cfa81)
2025-04-05 23:20:42 +07:00

56 lines
1.9 KiB
Kotlin

package tachiyomi.data.source
import eu.kanade.tachiyomi.source.CatalogueSource
import eu.kanade.tachiyomi.source.model.FilterList
import eu.kanade.tachiyomi.source.model.MangasPage
import eu.kanade.tachiyomi.source.model.MetadataMangasPage
import exh.metadata.metadata.RaisedSearchMetadata
import mihon.domain.manga.model.toDomainManga
import tachiyomi.domain.manga.model.Manga
abstract class EHentaiPagingSource(override val source: CatalogueSource) : BaseSourcePagingSource(source) {
override suspend fun getPageLoadResult(
params: LoadParams<Long>,
mangasPage: MangasPage,
): LoadResult.Page<Long, Pair<Manga, RaisedSearchMetadata?>> {
mangasPage as MetadataMangasPage
val metadata = mangasPage.mangasMetadata
val manga = mangasPage.mangas
.map { it.toDomainManga(source.id) }
.filter { seenManga.add(it.url) }
.let { networkToLocalManga(it) }
// SY -->
.mapIndexed { index, manga -> manga to metadata.getOrNull(index) }
// SY <--
return LoadResult.Page(
data = manga,
prevKey = null,
nextKey = mangasPage.nextKey,
)
}
}
class EHentaiSearchPagingSource(
source: CatalogueSource,
val query: String,
val filters: FilterList,
) : EHentaiPagingSource(source) {
override suspend fun requestNextPage(currentPage: Int): MangasPage {
return source.getSearchManga(currentPage, query, filters)
}
}
class EHentaiPopularPagingSource(source: CatalogueSource) : EHentaiPagingSource(source) {
override suspend fun requestNextPage(currentPage: Int): MangasPage {
return source.getPopularManga(currentPage)
}
}
class EHentaiLatestPagingSource(source: CatalogueSource) : EHentaiPagingSource(source) {
override suspend fun requestNextPage(currentPage: Int): MangasPage {
return source.getLatestUpdates(currentPage)
}
}