Migrate to Metro DI (#3608)

Assisted-by: Claude:claude-opus-5
This commit is contained in:
AntsyLich
2026-08-17 00:47:48 +06:00
committed by GitHub
parent 1e5b1dc5e7
commit b2015d1ef3
314 changed files with 2416 additions and 2010 deletions
@@ -1,5 +1,6 @@
package mihon.domain.chapter.interactor
import dev.zacsweers.metro.Inject
import tachiyomi.domain.category.interactor.GetCategories
import tachiyomi.domain.chapter.interactor.GetChaptersByMangaId
import tachiyomi.domain.chapter.model.Chapter
@@ -13,6 +14,7 @@ import tachiyomi.domain.manga.model.Manga
* @property downloadPreferences User preferences related to chapter downloads.
* @property getCategories Interactor for retrieving categories associated with a manga.
*/
@Inject
class FilterChaptersForDownload(
private val getChaptersByMangaId: GetChaptersByMangaId,
private val downloadPreferences: DownloadPreferences,
@@ -1,7 +1,9 @@
package mihon.domain.extension.interactor
import dev.zacsweers.metro.Inject
import mihon.domain.extension.repository.ExtensionStoreRepository
@Inject
class AddExtensionStore(
private val repository: ExtensionStoreRepository,
) {
@@ -1,7 +1,9 @@
package mihon.domain.extension.interactor
import dev.zacsweers.metro.Inject
import mihon.domain.extension.repository.ExtensionStoreRepository
@Inject
class GetExtensionStoreCountAsFlow(
private val repository: ExtensionStoreRepository,
) {
@@ -1,9 +1,11 @@
package mihon.domain.extension.interactor
import dev.zacsweers.metro.Inject
import kotlinx.coroutines.flow.Flow
import mihon.domain.extension.model.ExtensionStore
import mihon.domain.extension.repository.ExtensionStoreRepository
@Inject
class GetExtensionStores(
private val repository: ExtensionStoreRepository,
) {
@@ -1,7 +1,9 @@
package mihon.domain.extension.interactor
import dev.zacsweers.metro.Inject
import mihon.domain.extension.repository.ExtensionStoreRepository
@Inject
class RemoveExtensionStore(
private val repository: ExtensionStoreRepository,
) {
@@ -1,7 +1,9 @@
package mihon.domain.extension.interactor
import dev.zacsweers.metro.Inject
import mihon.domain.extension.repository.ExtensionStoreRepository
@Inject
class UpdateExtensionStores(
private val repository: ExtensionStoreRepository,
) {
@@ -1,10 +1,12 @@
package mihon.domain.upcoming.interactor
import dev.zacsweers.metro.Inject
import eu.kanade.tachiyomi.source.model.SManga
import kotlinx.coroutines.flow.Flow
import tachiyomi.domain.manga.model.Manga
import tachiyomi.domain.manga.repository.MangaRepository
@Inject
class GetUpcomingManga(
private val mangaRepository: MangaRepository,
) {
@@ -1,8 +1,13 @@
package tachiyomi.domain.backup.service
import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.Inject
import dev.zacsweers.metro.SingleIn
import tachiyomi.core.common.preference.Preference
import tachiyomi.core.common.preference.PreferenceStore
@Inject
@SingleIn(AppScope::class)
class BackupPreferences(
preferenceStore: PreferenceStore,
) {
@@ -1,5 +1,6 @@
package tachiyomi.domain.category.interactor
import dev.zacsweers.metro.Inject
import logcat.LogPriority
import tachiyomi.core.common.util.lang.withNonCancellableContext
import tachiyomi.core.common.util.system.logcat
@@ -7,6 +8,7 @@ import tachiyomi.domain.category.model.Category
import tachiyomi.domain.category.repository.CategoryRepository
import tachiyomi.domain.library.service.LibraryPreferences
@Inject
class CreateCategoryWithName(
private val categoryRepository: CategoryRepository,
private val preferences: LibraryPreferences,
@@ -1,5 +1,6 @@
package tachiyomi.domain.category.interactor
import dev.zacsweers.metro.Inject
import logcat.LogPriority
import tachiyomi.core.common.util.lang.withNonCancellableContext
import tachiyomi.core.common.util.system.logcat
@@ -7,6 +8,7 @@ import tachiyomi.domain.category.repository.CategoryRepository
import tachiyomi.domain.download.service.DownloadPreferences
import tachiyomi.domain.library.service.LibraryPreferences
@Inject
class DeleteCategory(
private val categoryRepository: CategoryRepository,
private val libraryPreferences: LibraryPreferences,
@@ -1,9 +1,11 @@
package tachiyomi.domain.category.interactor
import dev.zacsweers.metro.Inject
import kotlinx.coroutines.flow.Flow
import tachiyomi.domain.category.model.Category
import tachiyomi.domain.category.repository.CategoryRepository
@Inject
class GetCategories(
private val categoryRepository: CategoryRepository,
) {
@@ -1,11 +1,13 @@
package tachiyomi.domain.category.interactor
import dev.zacsweers.metro.Inject
import logcat.LogPriority
import tachiyomi.core.common.util.lang.withNonCancellableContext
import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.category.model.Category
import tachiyomi.domain.category.repository.CategoryRepository
@Inject
class RenameCategory(
private val categoryRepository: CategoryRepository,
) {
@@ -1,5 +1,6 @@
package tachiyomi.domain.category.interactor
import dev.zacsweers.metro.Inject
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
import logcat.LogPriority
@@ -8,6 +9,7 @@ import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.category.model.Category
import tachiyomi.domain.category.repository.CategoryRepository
@Inject
class ReorderCategory(
private val categoryRepository: CategoryRepository,
) {
@@ -1,9 +1,11 @@
package tachiyomi.domain.category.interactor
import dev.zacsweers.metro.Inject
import tachiyomi.domain.category.repository.CategoryRepository
import tachiyomi.domain.library.model.plus
import tachiyomi.domain.library.service.LibraryPreferences
@Inject
class ResetCategoryFlags(
private val preferences: LibraryPreferences,
private val categoryRepository: CategoryRepository,
@@ -1,8 +1,10 @@
package tachiyomi.domain.category.interactor
import dev.zacsweers.metro.Inject
import tachiyomi.domain.library.model.LibraryDisplayMode
import tachiyomi.domain.library.service.LibraryPreferences
@Inject
class SetDisplayMode(
private val preferences: LibraryPreferences,
) {
@@ -1,9 +1,11 @@
package tachiyomi.domain.category.interactor
import dev.zacsweers.metro.Inject
import logcat.LogPriority
import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.manga.repository.MangaRepository
@Inject
class SetMangaCategories(
private val mangaRepository: MangaRepository,
) {
@@ -1,5 +1,6 @@
package tachiyomi.domain.category.interactor
import dev.zacsweers.metro.Inject
import tachiyomi.domain.category.model.Category
import tachiyomi.domain.category.repository.CategoryRepository
import tachiyomi.domain.library.model.LibrarySort
@@ -7,6 +8,7 @@ import tachiyomi.domain.library.model.plus
import tachiyomi.domain.library.service.LibraryPreferences
import kotlin.random.Random
@Inject
class SetSortModeForCategory(
private val preferences: LibraryPreferences,
private val categoryRepository: CategoryRepository,
@@ -1,10 +1,12 @@
package tachiyomi.domain.chapter.interactor
import dev.zacsweers.metro.Inject
import logcat.LogPriority
import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.chapter.repository.ChapterRepository
@Inject
class GetBookmarkedChaptersByMangaId(
private val chapterRepository: ChapterRepository,
) {
@@ -1,10 +1,12 @@
package tachiyomi.domain.chapter.interactor
import dev.zacsweers.metro.Inject
import logcat.LogPriority
import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.chapter.repository.ChapterRepository
@Inject
class GetChapter(
private val chapterRepository: ChapterRepository,
) {
@@ -1,8 +1,10 @@
package tachiyomi.domain.chapter.interactor
import dev.zacsweers.metro.Inject
import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.chapter.repository.ChapterRepository
@Inject
class GetChapterByUrlAndMangaId(
private val chapterRepository: ChapterRepository,
) {
@@ -1,10 +1,12 @@
package tachiyomi.domain.chapter.interactor
import dev.zacsweers.metro.Inject
import logcat.LogPriority
import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.chapter.repository.ChapterRepository
@Inject
class GetChaptersByMangaId(
private val chapterRepository: ChapterRepository,
) {
@@ -1,11 +1,13 @@
package tachiyomi.domain.chapter.interactor
import dev.zacsweers.metro.Inject
import tachiyomi.core.common.util.lang.withNonCancellableContext
import tachiyomi.domain.library.service.LibraryPreferences
import tachiyomi.domain.manga.interactor.GetFavorites
import tachiyomi.domain.manga.interactor.SetMangaChapterFlags
import tachiyomi.domain.manga.model.Manga
@Inject
class SetMangaDefaultChapterFlags(
private val libraryPreferences: LibraryPreferences,
private val setMangaChapterFlags: SetMangaChapterFlags,
@@ -1,7 +1,9 @@
package tachiyomi.domain.chapter.interactor
import dev.zacsweers.metro.Inject
import tachiyomi.domain.chapter.model.Chapter
@Inject
class ShouldUpdateDbChapter {
fun await(dbChapter: Chapter, sourceChapter: Chapter): Boolean {
@@ -1,10 +1,12 @@
package tachiyomi.domain.chapter.interactor
import dev.zacsweers.metro.Inject
import logcat.LogPriority
import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.chapter.model.ChapterUpdate
import tachiyomi.domain.chapter.repository.ChapterRepository
@Inject
class UpdateChapter(
private val chapterRepository: ChapterRepository,
) {
@@ -1,8 +1,13 @@
package tachiyomi.domain.download.service
import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.Inject
import dev.zacsweers.metro.SingleIn
import tachiyomi.core.common.preference.Preference
import tachiyomi.core.common.preference.PreferenceStore
@Inject
@SingleIn(AppScope::class)
class DownloadPreferences(
preferenceStore: PreferenceStore,
) {
@@ -1,10 +1,12 @@
package tachiyomi.domain.history.interactor
import dev.zacsweers.metro.Inject
import kotlinx.coroutines.flow.Flow
import tachiyomi.domain.history.model.History
import tachiyomi.domain.history.model.HistoryWithRelations
import tachiyomi.domain.history.repository.HistoryRepository
@Inject
class GetHistory(
private val repository: HistoryRepository,
) {
@@ -1,5 +1,6 @@
package tachiyomi.domain.history.interactor
import dev.zacsweers.metro.Inject
import tachiyomi.domain.chapter.interactor.GetChaptersByMangaId
import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.chapter.service.getChapterSort
@@ -7,6 +8,7 @@ import tachiyomi.domain.history.repository.HistoryRepository
import tachiyomi.domain.manga.interactor.GetManga
import kotlin.math.max
@Inject
class GetNextChapters(
private val getChaptersByMangaId: GetChaptersByMangaId,
private val getManga: GetManga,
@@ -1,7 +1,9 @@
package tachiyomi.domain.history.interactor
import dev.zacsweers.metro.Inject
import tachiyomi.domain.history.repository.HistoryRepository
@Inject
class GetTotalReadDuration(
private val repository: HistoryRepository,
) {
@@ -1,8 +1,10 @@
package tachiyomi.domain.history.interactor
import dev.zacsweers.metro.Inject
import tachiyomi.domain.history.model.HistoryWithRelations
import tachiyomi.domain.history.repository.HistoryRepository
@Inject
class RemoveHistory(
private val repository: HistoryRepository,
) {
@@ -1,8 +1,10 @@
package tachiyomi.domain.history.interactor
import dev.zacsweers.metro.Inject
import tachiyomi.domain.history.model.HistoryUpdate
import tachiyomi.domain.history.repository.HistoryRepository
@Inject
class UpsertHistory(
private val historyRepository: HistoryRepository,
) {
@@ -1,5 +1,8 @@
package tachiyomi.domain.library.service
import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.Inject
import dev.zacsweers.metro.SingleIn
import tachiyomi.core.common.preference.Preference
import tachiyomi.core.common.preference.PreferenceStore
import tachiyomi.core.common.preference.TriState
@@ -8,6 +11,8 @@ import tachiyomi.domain.library.model.LibraryDisplayMode
import tachiyomi.domain.library.model.LibrarySort
import tachiyomi.domain.manga.model.Manga
@Inject
@SingleIn(AppScope::class)
class LibraryPreferences(
private val preferenceStore: PreferenceStore,
) {
@@ -1,5 +1,6 @@
package tachiyomi.domain.manga.interactor
import dev.zacsweers.metro.Inject
import kotlinx.datetime.LocalDate
import kotlinx.datetime.LocalDateTime
import kotlinx.datetime.TimeZone
@@ -16,6 +17,7 @@ import kotlin.time.Clock
import kotlin.time.Duration.Companion.days
import kotlin.time.Instant
@Inject
class FetchInterval(
private val getChaptersByMangaId: GetChaptersByMangaId,
) {
@@ -1,9 +1,11 @@
package tachiyomi.domain.manga.interactor
import dev.zacsweers.metro.Inject
import tachiyomi.domain.manga.model.Manga
import tachiyomi.domain.manga.model.MangaWithChapterCount
import tachiyomi.domain.manga.repository.MangaRepository
@Inject
class GetDuplicateLibraryManga(
private val mangaRepository: MangaRepository,
) {
@@ -1,9 +1,11 @@
package tachiyomi.domain.manga.interactor
import dev.zacsweers.metro.Inject
import kotlinx.coroutines.flow.Flow
import tachiyomi.domain.manga.model.Manga
import tachiyomi.domain.manga.repository.MangaRepository
@Inject
class GetFavorites(
private val mangaRepository: MangaRepository,
) {
@@ -1,5 +1,6 @@
package tachiyomi.domain.manga.interactor
import dev.zacsweers.metro.Inject
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.catch
@@ -10,6 +11,7 @@ import tachiyomi.domain.library.model.LibraryManga
import tachiyomi.domain.manga.repository.MangaRepository
import kotlin.time.Duration.Companion.seconds
@Inject
class GetLibraryManga(
private val mangaRepository: MangaRepository,
) {
@@ -1,11 +1,13 @@
package tachiyomi.domain.manga.interactor
import dev.zacsweers.metro.Inject
import kotlinx.coroutines.flow.Flow
import logcat.LogPriority
import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.manga.model.Manga
import tachiyomi.domain.manga.repository.MangaRepository
@Inject
class GetManga(
private val mangaRepository: MangaRepository,
) {
@@ -1,8 +1,10 @@
package tachiyomi.domain.manga.interactor
import dev.zacsweers.metro.Inject
import tachiyomi.domain.manga.model.Manga
import tachiyomi.domain.manga.repository.MangaRepository
@Inject
class GetMangaByUrlAndSourceId(
private val mangaRepository: MangaRepository,
) {
@@ -1,5 +1,6 @@
package tachiyomi.domain.manga.interactor
import dev.zacsweers.metro.Inject
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
import tachiyomi.domain.chapter.model.Chapter
@@ -7,6 +8,7 @@ import tachiyomi.domain.chapter.repository.ChapterRepository
import tachiyomi.domain.manga.model.Manga
import tachiyomi.domain.manga.repository.MangaRepository
@Inject
class GetMangaWithChapters(
private val mangaRepository: MangaRepository,
private val chapterRepository: ChapterRepository,
@@ -1,8 +1,10 @@
package tachiyomi.domain.manga.interactor
import dev.zacsweers.metro.Inject
import tachiyomi.domain.manga.model.Manga
import tachiyomi.domain.manga.repository.MangaRepository
@Inject
class NetworkToLocalManga(
private val mangaRepository: MangaRepository,
) {
@@ -1,7 +1,9 @@
package tachiyomi.domain.manga.interactor
import dev.zacsweers.metro.Inject
import tachiyomi.domain.manga.repository.MangaRepository
@Inject
class ResetViewerFlags(
private val mangaRepository: MangaRepository,
) {
@@ -1,9 +1,11 @@
package tachiyomi.domain.manga.interactor
import dev.zacsweers.metro.Inject
import tachiyomi.domain.manga.model.Manga
import tachiyomi.domain.manga.model.MangaUpdate
import tachiyomi.domain.manga.repository.MangaRepository
@Inject
class SetMangaChapterFlags(
private val mangaRepository: MangaRepository,
) {
@@ -1,8 +1,10 @@
package tachiyomi.domain.manga.interactor
import dev.zacsweers.metro.Inject
import tachiyomi.domain.manga.model.MangaUpdate
import tachiyomi.domain.manga.repository.MangaRepository
@Inject
class UpdateMangaNotes(
private val mangaRepository: MangaRepository,
) {
@@ -1,8 +1,10 @@
package tachiyomi.domain.release.interactor
import dev.zacsweers.metro.Inject
import tachiyomi.domain.release.model.Release
import tachiyomi.domain.release.service.ReleaseService
@Inject
class GetApplicationRelease(
private val service: ReleaseService,
) {
@@ -1,9 +1,11 @@
package tachiyomi.domain.source.interactor
import dev.zacsweers.metro.Inject
import eu.kanade.tachiyomi.source.model.FilterList
import tachiyomi.domain.source.repository.SourcePagingSource
import tachiyomi.domain.source.repository.SourceRepository
@Inject
class GetRemoteManga(
private val repository: SourceRepository,
) {
@@ -1,9 +1,11 @@
package tachiyomi.domain.source.interactor
import dev.zacsweers.metro.Inject
import kotlinx.coroutines.flow.Flow
import tachiyomi.domain.source.model.SourceWithCount
import tachiyomi.domain.source.repository.SourceRepository
@Inject
class GetSourcesWithNonLibraryManga(
private val repository: SourceRepository,
) {
@@ -3,6 +3,9 @@ package tachiyomi.domain.storage.service
import android.content.Context
import androidx.core.net.toUri
import com.hippo.unifile.UniFile
import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.Inject
import dev.zacsweers.metro.SingleIn
import eu.kanade.tachiyomi.util.storage.DiskUtil
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
@@ -15,6 +18,8 @@ import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.receiveAsFlow
import kotlinx.coroutines.flow.shareIn
@Inject
@SingleIn(AppScope::class)
class StorageManager(
private val context: Context,
storagePreferences: StoragePreferences,
@@ -1,9 +1,14 @@
package tachiyomi.domain.storage.service
import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.Inject
import dev.zacsweers.metro.SingleIn
import tachiyomi.core.common.preference.Preference
import tachiyomi.core.common.preference.PreferenceStore
import tachiyomi.core.common.storage.FolderProvider
@Inject
@SingleIn(AppScope::class)
class StoragePreferences(
folderProvider: FolderProvider,
preferenceStore: PreferenceStore,
@@ -1,9 +1,11 @@
package tachiyomi.domain.track.interactor
import dev.zacsweers.metro.Inject
import logcat.LogPriority
import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.track.repository.TrackRepository
@Inject
class DeleteTrack(
private val trackRepository: TrackRepository,
) {
@@ -1,11 +1,13 @@
package tachiyomi.domain.track.interactor
import dev.zacsweers.metro.Inject
import kotlinx.coroutines.flow.Flow
import logcat.LogPriority
import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.track.model.Track
import tachiyomi.domain.track.repository.TrackRepository
@Inject
class GetTracks(
private val trackRepository: TrackRepository,
) {
@@ -1,10 +1,12 @@
package tachiyomi.domain.track.interactor
import dev.zacsweers.metro.Inject
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import tachiyomi.domain.track.model.Track
import tachiyomi.domain.track.repository.TrackRepository
@Inject
class GetTracksPerManga(
private val trackRepository: TrackRepository,
) {
@@ -1,10 +1,12 @@
package tachiyomi.domain.track.interactor
import dev.zacsweers.metro.Inject
import logcat.LogPriority
import tachiyomi.core.common.util.system.logcat
import tachiyomi.domain.track.model.Track
import tachiyomi.domain.track.repository.TrackRepository
@Inject
class InsertTrack(
private val trackRepository: TrackRepository,
) {
@@ -1,9 +1,14 @@
package tachiyomi.domain.upcoming.service
import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.Inject
import dev.zacsweers.metro.SingleIn
import tachiyomi.core.common.preference.Preference
import tachiyomi.core.common.preference.PreferenceStore
import tachiyomi.core.common.preference.getLongArray
@Inject
@SingleIn(AppScope::class)
class UpcomingPreferences(
preferenceStore: PreferenceStore,
) {
@@ -1,10 +1,12 @@
package tachiyomi.domain.updates.interactor
import dev.zacsweers.metro.Inject
import kotlinx.coroutines.flow.Flow
import tachiyomi.domain.updates.model.UpdatesWithRelations
import tachiyomi.domain.updates.repository.UpdatesRepository
import kotlin.time.Instant
@Inject
class GetUpdates(
private val repository: UpdatesRepository,
) {
@@ -1,11 +1,16 @@
package tachiyomi.domain.updates.service
import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.Inject
import dev.zacsweers.metro.SingleIn
import tachiyomi.core.common.preference.Preference
import tachiyomi.core.common.preference.PreferenceStore
import tachiyomi.core.common.preference.TriState
import tachiyomi.core.common.preference.getEnum
import tachiyomi.core.common.preference.getLongArray
@Inject
@SingleIn(AppScope::class)
class UpdatesPreferences(
preferenceStore: PreferenceStore,
) {