56 lines
1.9 KiB
Kotlin
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)
|
|
}
|
|
}
|