Merge Latest and Browse into one screen (#7921)
* Merge Latest and Browse into one
* Add back Latest button
* Change context to IO instead of launching a job
* Use loading screen when loading initial page
(cherry picked from commit cc6aef693e)
# Conflicts:
# app/src/main/java/eu/kanade/data/source/SourceRepositoryImpl.kt
# app/src/main/java/eu/kanade/presentation/browse/BrowseLatestScreen.kt
# app/src/main/java/eu/kanade/presentation/browse/BrowseSourceScreen.kt
# app/src/main/java/eu/kanade/presentation/browse/SourceSearchScreen.kt
# app/src/main/java/eu/kanade/presentation/browse/SourcesScreen.kt
# app/src/main/java/eu/kanade/presentation/browse/components/BrowseLatestToolbar.kt
# app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceComfortableGrid.kt
# app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceToolbar.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchController.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcesTab.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowsePagingSource.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceController.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourcePresenter.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/latest/LatestUpdatesController.kt
# app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/latest/LatestUpdatesPresenter.kt
This commit is contained in:
@@ -1,15 +1,15 @@
|
||||
package exh.md.follows
|
||||
|
||||
import eu.kanade.data.source.SourcePagingSource
|
||||
import eu.kanade.tachiyomi.source.model.MangasPage
|
||||
import eu.kanade.tachiyomi.source.online.all.MangaDex
|
||||
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowsePagingSource
|
||||
|
||||
/**
|
||||
* LatestUpdatesPager inherited from the general Pager.
|
||||
*/
|
||||
class MangaDexFollowsPagingSource(val source: MangaDex) : BrowsePagingSource() {
|
||||
class MangaDexFollowsPagingSource(val mangadex: MangaDex) : SourcePagingSource(mangadex) {
|
||||
|
||||
override suspend fun requestNextPage(currentPage: Int): MangasPage {
|
||||
return source.fetchFollows(currentPage)
|
||||
return mangadex.fetchFollows(currentPage)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,10 +4,9 @@ import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.State
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.paging.PagingSource
|
||||
import eu.kanade.domain.manga.model.Manga
|
||||
import eu.kanade.domain.source.model.SourcePagingSourceType
|
||||
import eu.kanade.tachiyomi.source.model.FilterList
|
||||
import eu.kanade.tachiyomi.source.model.SManga
|
||||
import eu.kanade.tachiyomi.source.online.all.MangaDex
|
||||
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourcePresenter
|
||||
import exh.metadata.metadata.base.RaisedSearchMetadata
|
||||
@@ -18,7 +17,7 @@ import exh.source.getMainSource
|
||||
*/
|
||||
class MangaDexFollowsPresenter(sourceId: Long) : BrowseSourcePresenter(sourceId) {
|
||||
|
||||
override fun createPager(query: String, filters: FilterList): PagingSource<Long, Pair<SManga, RaisedSearchMetadata?>> {
|
||||
override fun createSourcePagingSource(query: String, filters: FilterList): SourcePagingSourceType {
|
||||
return MangaDexFollowsPagingSource(source!!.getMainSource() as MangaDex)
|
||||
}
|
||||
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
package exh.md.similar
|
||||
|
||||
import eu.kanade.data.source.NoResultsException
|
||||
import eu.kanade.data.source.SourcePagingSource
|
||||
import eu.kanade.domain.manga.model.Manga
|
||||
import eu.kanade.tachiyomi.source.model.MangasPage
|
||||
import eu.kanade.tachiyomi.source.model.MetadataMangasPage
|
||||
import eu.kanade.tachiyomi.source.online.all.MangaDex
|
||||
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowsePagingSource
|
||||
import eu.kanade.tachiyomi.ui.browse.source.browse.NoResultsException
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.coroutineScope
|
||||
|
||||
/**
|
||||
* MangaDexSimilarPagingSource inherited from the general Pager.
|
||||
*/
|
||||
class MangaDexSimilarPagingSource(val manga: Manga, val source: MangaDex) : BrowsePagingSource() {
|
||||
class MangaDexSimilarPagingSource(val manga: Manga, val mangadex: MangaDex) : SourcePagingSource(mangadex) {
|
||||
|
||||
override suspend fun requestNextPage(currentPage: Int): MangasPage {
|
||||
val mangasPage = coroutineScope {
|
||||
val similarPageDef = async { source.getMangaSimilar(manga.toSManga()) }
|
||||
val relatedPageDef = async { source.getMangaRelated(manga.toSManga()) }
|
||||
val similarPageDef = async { mangadex.getMangaSimilar(manga.toSManga()) }
|
||||
val relatedPageDef = async { mangadex.getMangaRelated(manga.toSManga()) }
|
||||
val similarPage = similarPageDef.await()
|
||||
val relatedPage = relatedPageDef.await()
|
||||
|
||||
|
||||
@@ -5,11 +5,10 @@ import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.State
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.paging.PagingSource
|
||||
import eu.kanade.domain.manga.interactor.GetManga
|
||||
import eu.kanade.domain.manga.model.Manga
|
||||
import eu.kanade.domain.source.model.SourcePagingSourceType
|
||||
import eu.kanade.tachiyomi.source.model.FilterList
|
||||
import eu.kanade.tachiyomi.source.model.SManga
|
||||
import eu.kanade.tachiyomi.source.online.all.MangaDex
|
||||
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourcePresenter
|
||||
import exh.metadata.metadata.base.RaisedSearchMetadata
|
||||
@@ -34,7 +33,7 @@ class MangaDexSimilarPresenter(
|
||||
this.manga = runBlocking { getManga.await(mangaId) }
|
||||
}
|
||||
|
||||
override fun createPager(query: String, filters: FilterList): PagingSource<Long, Pair<SManga, RaisedSearchMetadata?>> {
|
||||
override fun createSourcePagingSource(query: String, filters: FilterList): SourcePagingSourceType {
|
||||
return MangaDexSimilarPagingSource(manga!!, source!!.getMainSource() as MangaDex)
|
||||
}
|
||||
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
package exh.recs
|
||||
|
||||
import eu.kanade.data.source.NoResultsException
|
||||
import eu.kanade.data.source.SourcePagingSource
|
||||
import eu.kanade.domain.manga.model.Manga
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import eu.kanade.tachiyomi.network.NetworkHelper
|
||||
import eu.kanade.tachiyomi.network.POST
|
||||
import eu.kanade.tachiyomi.network.await
|
||||
import eu.kanade.tachiyomi.network.parseAs
|
||||
import eu.kanade.tachiyomi.source.CatalogueSource
|
||||
import eu.kanade.tachiyomi.source.model.MangasPage
|
||||
import eu.kanade.tachiyomi.source.model.SManga
|
||||
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowsePagingSource
|
||||
import eu.kanade.tachiyomi.ui.browse.source.browse.NoResultsException
|
||||
import eu.kanade.tachiyomi.util.lang.withIOContext
|
||||
import eu.kanade.tachiyomi.util.system.logcat
|
||||
import exh.util.MangaType
|
||||
@@ -193,10 +194,11 @@ class Anilist : API("https://graphql.anilist.co/") {
|
||||
}
|
||||
|
||||
open class RecommendsPagingSource(
|
||||
source: CatalogueSource,
|
||||
private val manga: Manga,
|
||||
private val smart: Boolean = true,
|
||||
private var preferredApi: API = API.MYANIMELIST,
|
||||
) : BrowsePagingSource() {
|
||||
) : SourcePagingSource(source) {
|
||||
override suspend fun requestNextPage(currentPage: Int): MangasPage {
|
||||
if (smart) preferredApi = if (manga.mangaType() != MangaType.TYPE_MANGA) API.ANILIST else preferredApi
|
||||
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
package exh.recs
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.paging.PagingSource
|
||||
import eu.kanade.domain.manga.interactor.GetManga
|
||||
import eu.kanade.domain.manga.model.Manga
|
||||
import eu.kanade.domain.source.model.SourcePagingSourceType
|
||||
import eu.kanade.tachiyomi.source.model.FilterList
|
||||
import eu.kanade.tachiyomi.source.model.SManga
|
||||
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourcePresenter
|
||||
import exh.metadata.metadata.base.RaisedSearchMetadata
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
@@ -28,7 +26,7 @@ class RecommendsPresenter(
|
||||
this.manga = runBlocking { getManga.await(mangaId) }
|
||||
}
|
||||
|
||||
override fun createPager(query: String, filters: FilterList): PagingSource<Long, Pair<SManga, RaisedSearchMetadata?>> {
|
||||
return RecommendsPagingSource(manga!!)
|
||||
override fun createSourcePagingSource(query: String, filters: FilterList): SourcePagingSourceType {
|
||||
return RecommendsPagingSource(source!!, manga!!)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user