@@ -1,6 +1,10 @@
|
||||
package mihon.data.extension.repository
|
||||
|
||||
import app.cash.sqldelight.async.coroutines.awaitAsList
|
||||
import dev.zacsweers.metro.AppScope
|
||||
import dev.zacsweers.metro.ContributesBinding
|
||||
import dev.zacsweers.metro.Inject
|
||||
import dev.zacsweers.metro.SingleIn
|
||||
import eu.kanade.tachiyomi.extension.model.Extension
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.awaitAll
|
||||
@@ -15,6 +19,9 @@ import tachiyomi.data.Database
|
||||
import tachiyomi.data.subscribeToList
|
||||
import tachiyomi.data.subscribeToOne
|
||||
|
||||
@Inject
|
||||
@SingleIn(AppScope::class)
|
||||
@ContributesBinding(AppScope::class)
|
||||
class ExtensionStoreRepositoryImpl(
|
||||
private val service: ExtensionStoreService,
|
||||
private val database: Database,
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package mihon.data.extension.service
|
||||
|
||||
import dev.zacsweers.metro.AppScope
|
||||
import dev.zacsweers.metro.Inject
|
||||
import dev.zacsweers.metro.SingleIn
|
||||
import eu.kanade.tachiyomi.extension.model.Extension
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import eu.kanade.tachiyomi.network.NetworkHelper
|
||||
@@ -20,6 +23,8 @@ import okio.gzip
|
||||
import tachiyomi.core.common.util.system.logcat
|
||||
import kotlin.coroutines.cancellation.CancellationException
|
||||
|
||||
@Inject
|
||||
@SingleIn(AppScope::class)
|
||||
class ExtensionStoreService(
|
||||
private val network: NetworkHelper,
|
||||
private val json: Json,
|
||||
|
||||
@@ -2,12 +2,19 @@ package tachiyomi.data.category
|
||||
|
||||
import app.cash.sqldelight.async.coroutines.awaitAsList
|
||||
import app.cash.sqldelight.async.coroutines.awaitAsOneOrNull
|
||||
import dev.zacsweers.metro.AppScope
|
||||
import dev.zacsweers.metro.ContributesBinding
|
||||
import dev.zacsweers.metro.Inject
|
||||
import dev.zacsweers.metro.SingleIn
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import tachiyomi.data.Database
|
||||
import tachiyomi.data.subscribeToList
|
||||
import tachiyomi.domain.category.model.Category
|
||||
import tachiyomi.domain.category.repository.CategoryRepository
|
||||
|
||||
@Inject
|
||||
@SingleIn(AppScope::class)
|
||||
@ContributesBinding(AppScope::class)
|
||||
class CategoryRepositoryImpl(
|
||||
private val database: Database,
|
||||
) : CategoryRepository {
|
||||
|
||||
@@ -3,6 +3,10 @@ package tachiyomi.data.chapter
|
||||
import app.cash.sqldelight.async.coroutines.awaitAsList
|
||||
import app.cash.sqldelight.async.coroutines.awaitAsOne
|
||||
import app.cash.sqldelight.async.coroutines.awaitAsOneOrNull
|
||||
import dev.zacsweers.metro.AppScope
|
||||
import dev.zacsweers.metro.ContributesBinding
|
||||
import dev.zacsweers.metro.Inject
|
||||
import dev.zacsweers.metro.SingleIn
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.serialization.json.JsonObject
|
||||
import logcat.LogPriority
|
||||
@@ -15,6 +19,9 @@ import tachiyomi.domain.chapter.model.Chapter
|
||||
import tachiyomi.domain.chapter.model.ChapterUpdate
|
||||
import tachiyomi.domain.chapter.repository.ChapterRepository
|
||||
|
||||
@Inject
|
||||
@SingleIn(AppScope::class)
|
||||
@ContributesBinding(AppScope::class)
|
||||
class ChapterRepositoryImpl(
|
||||
private val database: Database,
|
||||
) : ChapterRepository {
|
||||
|
||||
@@ -3,6 +3,10 @@ package tachiyomi.data.history
|
||||
import app.cash.sqldelight.async.coroutines.awaitAsList
|
||||
import app.cash.sqldelight.async.coroutines.awaitAsOne
|
||||
import app.cash.sqldelight.async.coroutines.awaitAsOneOrNull
|
||||
import dev.zacsweers.metro.AppScope
|
||||
import dev.zacsweers.metro.ContributesBinding
|
||||
import dev.zacsweers.metro.Inject
|
||||
import dev.zacsweers.metro.SingleIn
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import logcat.LogPriority
|
||||
import tachiyomi.core.common.util.system.logcat
|
||||
@@ -13,6 +17,9 @@ import tachiyomi.domain.history.model.HistoryUpdate
|
||||
import tachiyomi.domain.history.model.HistoryWithRelations
|
||||
import tachiyomi.domain.history.repository.HistoryRepository
|
||||
|
||||
@Inject
|
||||
@SingleIn(AppScope::class)
|
||||
@ContributesBinding(AppScope::class)
|
||||
class HistoryRepositoryImpl(
|
||||
private val database: Database,
|
||||
) : HistoryRepository {
|
||||
|
||||
@@ -3,6 +3,10 @@ package tachiyomi.data.manga
|
||||
import app.cash.sqldelight.async.coroutines.awaitAsList
|
||||
import app.cash.sqldelight.async.coroutines.awaitAsOne
|
||||
import app.cash.sqldelight.async.coroutines.awaitAsOneOrNull
|
||||
import dev.zacsweers.metro.AppScope
|
||||
import dev.zacsweers.metro.ContributesBinding
|
||||
import dev.zacsweers.metro.Inject
|
||||
import dev.zacsweers.metro.SingleIn
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.datetime.TimeZone
|
||||
import kotlinx.datetime.atStartOfDayIn
|
||||
@@ -23,6 +27,9 @@ import tachiyomi.domain.manga.model.MangaWithChapterCount
|
||||
import tachiyomi.domain.manga.repository.MangaRepository
|
||||
import kotlin.time.Clock
|
||||
|
||||
@Inject
|
||||
@SingleIn(AppScope::class)
|
||||
@ContributesBinding(AppScope::class)
|
||||
class MangaRepositoryImpl(
|
||||
private val database: Database,
|
||||
) : MangaRepository {
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
package tachiyomi.data.release
|
||||
|
||||
import android.os.Build
|
||||
import dev.zacsweers.metro.AppScope
|
||||
import dev.zacsweers.metro.ContributesBinding
|
||||
import dev.zacsweers.metro.Inject
|
||||
import dev.zacsweers.metro.SingleIn
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import eu.kanade.tachiyomi.network.NetworkHelper
|
||||
import eu.kanade.tachiyomi.network.awaitSuccess
|
||||
@@ -10,6 +14,9 @@ import tachiyomi.domain.release.interactor.GetApplicationRelease
|
||||
import tachiyomi.domain.release.model.Release
|
||||
import tachiyomi.domain.release.service.ReleaseService
|
||||
|
||||
@Inject
|
||||
@SingleIn(AppScope::class)
|
||||
@ContributesBinding(AppScope::class)
|
||||
class ReleaseServiceImpl(
|
||||
private val networkService: NetworkHelper,
|
||||
private val json: Json,
|
||||
|
||||
@@ -9,26 +9,31 @@ import tachiyomi.core.common.util.lang.withIOContext
|
||||
import tachiyomi.domain.manga.interactor.NetworkToLocalManga
|
||||
import tachiyomi.domain.manga.model.Manga
|
||||
import tachiyomi.domain.source.repository.SourcePagingSource
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
|
||||
class SourceSearchPagingSource(
|
||||
source: Source,
|
||||
private val query: String,
|
||||
private val filters: FilterList,
|
||||
) : BaseSourcePagingSource(source) {
|
||||
networkToLocalManga: NetworkToLocalManga,
|
||||
) : BaseSourcePagingSource(source, networkToLocalManga) {
|
||||
override suspend fun requestNextPage(currentPage: Int): MangasPage {
|
||||
return source.getSearchManga(currentPage, query, filters)
|
||||
}
|
||||
}
|
||||
|
||||
class SourcePopularPagingSource(source: Source) : BaseSourcePagingSource(source) {
|
||||
class SourcePopularPagingSource(
|
||||
source: Source,
|
||||
networkToLocalManga: NetworkToLocalManga,
|
||||
) : BaseSourcePagingSource(source, networkToLocalManga) {
|
||||
override suspend fun requestNextPage(currentPage: Int): MangasPage {
|
||||
return source.getPopularManga(currentPage)
|
||||
}
|
||||
}
|
||||
|
||||
class SourceLatestPagingSource(source: Source) : BaseSourcePagingSource(source) {
|
||||
class SourceLatestPagingSource(
|
||||
source: Source,
|
||||
networkToLocalManga: NetworkToLocalManga,
|
||||
) : BaseSourcePagingSource(source, networkToLocalManga) {
|
||||
override suspend fun requestNextPage(currentPage: Int): MangasPage {
|
||||
return source.getLatestUpdates(currentPage)
|
||||
}
|
||||
@@ -36,7 +41,7 @@ class SourceLatestPagingSource(source: Source) : BaseSourcePagingSource(source)
|
||||
|
||||
abstract class BaseSourcePagingSource(
|
||||
protected val source: Source,
|
||||
private val networkToLocalManga: NetworkToLocalManga = Injekt.get(),
|
||||
private val networkToLocalManga: NetworkToLocalManga,
|
||||
) : SourcePagingSource() {
|
||||
|
||||
private val seenManga = hashSetOf<String>()
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
package tachiyomi.data.source
|
||||
|
||||
import dev.zacsweers.metro.AppScope
|
||||
import dev.zacsweers.metro.ContributesBinding
|
||||
import dev.zacsweers.metro.Inject
|
||||
import dev.zacsweers.metro.SingleIn
|
||||
import eu.kanade.tachiyomi.source.Source
|
||||
import eu.kanade.tachiyomi.source.model.FilterList
|
||||
import eu.kanade.tachiyomi.source.online.HttpSource
|
||||
@@ -8,6 +12,7 @@ import kotlinx.coroutines.flow.combine
|
||||
import kotlinx.coroutines.flow.map
|
||||
import tachiyomi.data.Database
|
||||
import tachiyomi.data.subscribeToList
|
||||
import tachiyomi.domain.manga.interactor.NetworkToLocalManga
|
||||
import tachiyomi.domain.source.model.SourceWithCount
|
||||
import tachiyomi.domain.source.model.StubSource
|
||||
import tachiyomi.domain.source.repository.SourcePagingSource
|
||||
@@ -15,9 +20,13 @@ import tachiyomi.domain.source.repository.SourceRepository
|
||||
import tachiyomi.domain.source.service.SourceManager
|
||||
import tachiyomi.domain.source.model.Source as DomainSource
|
||||
|
||||
@Inject
|
||||
@SingleIn(AppScope::class)
|
||||
@ContributesBinding(AppScope::class)
|
||||
class SourceRepositoryImpl(
|
||||
private val sourceManager: SourceManager,
|
||||
private val database: Database,
|
||||
private val networkToLocalManga: NetworkToLocalManga,
|
||||
) : SourceRepository {
|
||||
|
||||
override fun getSources(): Flow<List<DomainSource>> {
|
||||
@@ -76,15 +85,15 @@ class SourceRepositoryImpl(
|
||||
query: String,
|
||||
filterList: FilterList,
|
||||
): SourcePagingSource {
|
||||
return SourceSearchPagingSource(sourceManager.getOrStub(sourceId), query, filterList)
|
||||
return SourceSearchPagingSource(sourceManager.getOrStub(sourceId), query, filterList, networkToLocalManga)
|
||||
}
|
||||
|
||||
override fun getPopular(sourceId: Long): SourcePagingSource {
|
||||
return SourcePopularPagingSource(sourceManager.getOrStub(sourceId))
|
||||
return SourcePopularPagingSource(sourceManager.getOrStub(sourceId), networkToLocalManga)
|
||||
}
|
||||
|
||||
override fun getLatest(sourceId: Long): SourcePagingSource {
|
||||
return SourceLatestPagingSource(sourceManager.getOrStub(sourceId))
|
||||
return SourceLatestPagingSource(sourceManager.getOrStub(sourceId), networkToLocalManga)
|
||||
}
|
||||
|
||||
private fun mapSourceToDomainSource(source: Source): DomainSource = DomainSource(
|
||||
|
||||
@@ -1,12 +1,19 @@
|
||||
package tachiyomi.data.source
|
||||
|
||||
import app.cash.sqldelight.async.coroutines.awaitAsOneOrNull
|
||||
import dev.zacsweers.metro.AppScope
|
||||
import dev.zacsweers.metro.ContributesBinding
|
||||
import dev.zacsweers.metro.Inject
|
||||
import dev.zacsweers.metro.SingleIn
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import tachiyomi.data.Database
|
||||
import tachiyomi.data.subscribeToList
|
||||
import tachiyomi.domain.source.model.StubSource
|
||||
import tachiyomi.domain.source.repository.StubSourceRepository
|
||||
|
||||
@Inject
|
||||
@SingleIn(AppScope::class)
|
||||
@ContributesBinding(AppScope::class)
|
||||
class StubSourceRepositoryImpl(
|
||||
private val database: Database,
|
||||
) : StubSourceRepository {
|
||||
|
||||
@@ -2,12 +2,19 @@ package tachiyomi.data.track
|
||||
|
||||
import app.cash.sqldelight.async.coroutines.awaitAsList
|
||||
import app.cash.sqldelight.async.coroutines.awaitAsOneOrNull
|
||||
import dev.zacsweers.metro.AppScope
|
||||
import dev.zacsweers.metro.ContributesBinding
|
||||
import dev.zacsweers.metro.Inject
|
||||
import dev.zacsweers.metro.SingleIn
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import tachiyomi.data.Database
|
||||
import tachiyomi.data.subscribeToList
|
||||
import tachiyomi.domain.track.model.Track
|
||||
import tachiyomi.domain.track.repository.TrackRepository
|
||||
|
||||
@Inject
|
||||
@SingleIn(AppScope::class)
|
||||
@ContributesBinding(AppScope::class)
|
||||
class TrackRepositoryImpl(
|
||||
private val database: Database,
|
||||
) : TrackRepository {
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
package tachiyomi.data.updates
|
||||
|
||||
import app.cash.sqldelight.async.coroutines.awaitAsList
|
||||
import dev.zacsweers.metro.AppScope
|
||||
import dev.zacsweers.metro.ContributesBinding
|
||||
import dev.zacsweers.metro.Inject
|
||||
import dev.zacsweers.metro.SingleIn
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import tachiyomi.core.common.util.lang.toLong
|
||||
import tachiyomi.data.Database
|
||||
@@ -9,6 +13,9 @@ import tachiyomi.domain.manga.model.MangaCover
|
||||
import tachiyomi.domain.updates.model.UpdatesWithRelations
|
||||
import tachiyomi.domain.updates.repository.UpdatesRepository
|
||||
|
||||
@Inject
|
||||
@SingleIn(AppScope::class)
|
||||
@ContributesBinding(AppScope::class)
|
||||
class UpdatesRepositoryImpl(
|
||||
private val database: Database,
|
||||
) : UpdatesRepository {
|
||||
|
||||
Reference in New Issue
Block a user