|
@@ -1,48 +1,50 @@
|
|
package tachiyomi.data.source
|
|
package tachiyomi.data.source
|
|
|
|
|
|
import eu.kanade.tachiyomi.source.CatalogueSource
|
|
import eu.kanade.tachiyomi.source.CatalogueSource
|
|
|
|
+import eu.kanade.tachiyomi.source.Source
|
|
import eu.kanade.tachiyomi.source.model.FilterList
|
|
import eu.kanade.tachiyomi.source.model.FilterList
|
|
import eu.kanade.tachiyomi.source.online.HttpSource
|
|
import eu.kanade.tachiyomi.source.online.HttpSource
|
|
import kotlinx.coroutines.flow.Flow
|
|
import kotlinx.coroutines.flow.Flow
|
|
import kotlinx.coroutines.flow.map
|
|
import kotlinx.coroutines.flow.map
|
|
import tachiyomi.data.DatabaseHandler
|
|
import tachiyomi.data.DatabaseHandler
|
|
-import tachiyomi.domain.source.model.Source
|
|
|
|
import tachiyomi.domain.source.model.SourceWithCount
|
|
import tachiyomi.domain.source.model.SourceWithCount
|
|
import tachiyomi.domain.source.model.StubSource
|
|
import tachiyomi.domain.source.model.StubSource
|
|
import tachiyomi.domain.source.repository.SourcePagingSourceType
|
|
import tachiyomi.domain.source.repository.SourcePagingSourceType
|
|
import tachiyomi.domain.source.repository.SourceRepository
|
|
import tachiyomi.domain.source.repository.SourceRepository
|
|
import tachiyomi.domain.source.service.SourceManager
|
|
import tachiyomi.domain.source.service.SourceManager
|
|
|
|
+import tachiyomi.domain.source.model.Source as DomainSource
|
|
|
|
|
|
class SourceRepositoryImpl(
|
|
class SourceRepositoryImpl(
|
|
private val sourceManager: SourceManager,
|
|
private val sourceManager: SourceManager,
|
|
private val handler: DatabaseHandler,
|
|
private val handler: DatabaseHandler,
|
|
) : SourceRepository {
|
|
) : SourceRepository {
|
|
|
|
|
|
- override fun getSources(): Flow<List<Source>> {
|
|
|
|
|
|
+ override fun getSources(): Flow<List<DomainSource>> {
|
|
return sourceManager.catalogueSources.map { sources ->
|
|
return sourceManager.catalogueSources.map { sources ->
|
|
sources.map {
|
|
sources.map {
|
|
- sourceMapper(it).copy(
|
|
|
|
|
|
+ mapSourceToDomainSource(it).copy(
|
|
supportsLatest = it.supportsLatest,
|
|
supportsLatest = it.supportsLatest,
|
|
)
|
|
)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- override fun getOnlineSources(): Flow<List<Source>> {
|
|
|
|
|
|
+ override fun getOnlineSources(): Flow<List<DomainSource>> {
|
|
return sourceManager.catalogueSources.map { sources ->
|
|
return sourceManager.catalogueSources.map { sources ->
|
|
sources
|
|
sources
|
|
.filterIsInstance<HttpSource>()
|
|
.filterIsInstance<HttpSource>()
|
|
- .map(sourceMapper)
|
|
|
|
|
|
+ .map(::mapSourceToDomainSource)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- override fun getSourcesWithFavoriteCount(): Flow<List<Pair<Source, Long>>> {
|
|
|
|
- val sourceIdWithFavoriteCount = handler.subscribeToList { mangasQueries.getSourceIdWithFavoriteCount() }
|
|
|
|
|
|
+ override fun getSourcesWithFavoriteCount(): Flow<List<Pair<DomainSource, Long>>> {
|
|
|
|
+ val sourceIdWithFavoriteCount =
|
|
|
|
+ handler.subscribeToList { mangasQueries.getSourceIdWithFavoriteCount() }
|
|
return sourceIdWithFavoriteCount.map { sourceIdsWithCount ->
|
|
return sourceIdWithFavoriteCount.map { sourceIdsWithCount ->
|
|
sourceIdsWithCount
|
|
sourceIdsWithCount
|
|
.map { (sourceId, count) ->
|
|
.map { (sourceId, count) ->
|
|
val source = sourceManager.getOrStub(sourceId)
|
|
val source = sourceManager.getOrStub(sourceId)
|
|
- val domainSource = sourceMapper(source).copy(
|
|
|
|
|
|
+ val domainSource = mapSourceToDomainSource(source).copy(
|
|
isStub = source is StubSource,
|
|
isStub = source is StubSource,
|
|
)
|
|
)
|
|
domainSource to count
|
|
domainSource to count
|
|
@@ -51,11 +53,12 @@ class SourceRepositoryImpl(
|
|
}
|
|
}
|
|
|
|
|
|
override fun getSourcesWithNonLibraryManga(): Flow<List<SourceWithCount>> {
|
|
override fun getSourcesWithNonLibraryManga(): Flow<List<SourceWithCount>> {
|
|
- val sourceIdWithNonLibraryManga = handler.subscribeToList { mangasQueries.getSourceIdsWithNonLibraryManga() }
|
|
|
|
|
|
+ val sourceIdWithNonLibraryManga =
|
|
|
|
+ handler.subscribeToList { mangasQueries.getSourceIdsWithNonLibraryManga() }
|
|
return sourceIdWithNonLibraryManga.map { sourceId ->
|
|
return sourceIdWithNonLibraryManga.map { sourceId ->
|
|
sourceId.map { (sourceId, count) ->
|
|
sourceId.map { (sourceId, count) ->
|
|
val source = sourceManager.getOrStub(sourceId)
|
|
val source = sourceManager.getOrStub(sourceId)
|
|
- val domainSource = sourceMapper(source).copy(
|
|
|
|
|
|
+ val domainSource = mapSourceToDomainSource(source).copy(
|
|
isStub = source is StubSource,
|
|
isStub = source is StubSource,
|
|
)
|
|
)
|
|
SourceWithCount(domainSource, count)
|
|
SourceWithCount(domainSource, count)
|
|
@@ -81,4 +84,12 @@ class SourceRepositoryImpl(
|
|
val source = sourceManager.get(sourceId) as CatalogueSource
|
|
val source = sourceManager.get(sourceId) as CatalogueSource
|
|
return SourceLatestPagingSource(source)
|
|
return SourceLatestPagingSource(source)
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ private fun mapSourceToDomainSource(source: Source): DomainSource = DomainSource(
|
|
|
|
+ id = source.id,
|
|
|
|
+ lang = source.lang,
|
|
|
|
+ name = source.name,
|
|
|
|
+ supportsLatest = false,
|
|
|
|
+ isStub = false,
|
|
|
|
+ )
|
|
}
|
|
}
|