(cherry picked from commit 5b2e937d5fdeadc8a9a994b99b3f6b7a277f2513) # Conflicts: # app/src/main/java/eu/kanade/domain/source/model/SourcePagingSourceType.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt
47 lines
1.8 KiB
Kotlin
47 lines
1.8 KiB
Kotlin
package eu.kanade.data.source
|
|
|
|
import eu.kanade.tachiyomi.source.model.FilterList
|
|
import eu.kanade.tachiyomi.source.model.MangasPage
|
|
import eu.kanade.tachiyomi.source.model.MetadataMangasPage
|
|
import eu.kanade.tachiyomi.source.model.SManga
|
|
import eu.kanade.tachiyomi.source.online.all.EHentai
|
|
import exh.metadata.metadata.base.RaisedSearchMetadata
|
|
import tachiyomi.core.util.lang.awaitSingle
|
|
import tachiyomi.data.source.SourcePagingSource
|
|
|
|
abstract class EHentaiPagingSource(override val source: EHentai) : SourcePagingSource(source) {
|
|
|
|
override fun getPageLoadResult(
|
|
params: LoadParams<Long>,
|
|
mangasPage: MangasPage,
|
|
): LoadResult.Page<Long, Pair<SManga, RaisedSearchMetadata?>> {
|
|
mangasPage as MetadataMangasPage
|
|
val metadata = mangasPage.mangasMetadata
|
|
|
|
return LoadResult.Page(
|
|
data = mangasPage.mangas
|
|
.mapIndexed { index, sManga -> sManga to metadata.getOrNull(index) },
|
|
prevKey = null,
|
|
nextKey = mangasPage.nextKey,
|
|
)
|
|
}
|
|
}
|
|
|
|
class EHentaiSearchPagingSource(source: EHentai, val query: String, val filters: FilterList) : EHentaiPagingSource(source) {
|
|
override suspend fun requestNextPage(currentPage: Int): MangasPage {
|
|
return source.fetchSearchManga(currentPage, query, filters).awaitSingle()
|
|
}
|
|
}
|
|
|
|
class EHentaiPopularPagingSource(source: EHentai) : EHentaiPagingSource(source) {
|
|
override suspend fun requestNextPage(currentPage: Int): MangasPage {
|
|
return source.fetchPopularManga(currentPage).awaitSingle()
|
|
}
|
|
}
|
|
|
|
class EHentaiLatestPagingSource(source: EHentai) : EHentaiPagingSource(source) {
|
|
override suspend fun requestNextPage(currentPage: Int): MangasPage {
|
|
return source.fetchLatestUpdates(currentPage).awaitSingle()
|
|
}
|
|
}
|