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,8 +1,13 @@
package eu.kanade.tachiyomi.core.security
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 PrivacyPreferences(
preferenceStore: PreferenceStore,
) {
@@ -1,11 +1,16 @@
package eu.kanade.tachiyomi.core.security
import dev.icerock.moko.resources.StringResource
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.getEnum
import tachiyomi.i18n.MR
@Inject
@SingleIn(AppScope::class)
class SecurityPreferences(
preferenceStore: PreferenceStore,
) {
@@ -2,12 +2,17 @@ package eu.kanade.tachiyomi.network
import android.content.Context
import app.cash.quickjs.QuickJs
import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.Inject
import dev.zacsweers.metro.SingleIn
import tachiyomi.core.common.util.lang.withIOContext
/**
* Util for evaluating JavaScript in sources.
*/
@Suppress("UNUSED", "UNCHECKED_CAST")
@Inject
@SingleIn(AppScope::class)
class JavaScriptEngine(context: Context) {
/**
@@ -1,6 +1,9 @@
package eu.kanade.tachiyomi.network
import android.content.Context
import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.Inject
import dev.zacsweers.metro.SingleIn
import eu.kanade.tachiyomi.network.interceptor.CloudflareInterceptor
import eu.kanade.tachiyomi.network.interceptor.UncaughtExceptionInterceptor
import eu.kanade.tachiyomi.network.interceptor.UserAgentInterceptor
@@ -11,6 +14,8 @@ import java.io.File
import kotlin.time.Duration.Companion.minutes
import kotlin.time.Duration.Companion.seconds
@Inject
@SingleIn(AppScope::class)
class NetworkHelper(
private val context: Context,
private val preferences: NetworkPreferences,
@@ -1,14 +1,23 @@
package eu.kanade.tachiyomi.network
import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.Inject
import dev.zacsweers.metro.SingleIn
import mihon.core.metro.IsDebugBuild
import tachiyomi.core.common.preference.Preference
import tachiyomi.core.common.preference.PreferenceStore
@Inject
@SingleIn(AppScope::class)
class NetworkPreferences(
preferenceStore: PreferenceStore,
verboseLoggingDefault: Boolean = false,
@IsDebugBuild isDebugBuild: Boolean,
) {
val verboseLogging: Preference<Boolean> = preferenceStore.getBoolean("verbose_logging", verboseLoggingDefault)
val verboseLogging: Preference<Boolean> = preferenceStore.getBoolean(
"verbose_logging",
isDebugBuild,
)
val dohProvider: Preference<Int> = preferenceStore.getInt("doh_provider", -1)
@@ -3,6 +3,10 @@ package tachiyomi.core.common.preference
import android.content.Context
import android.content.SharedPreferences
import androidx.preference.PreferenceManager
import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.ContributesBinding
import dev.zacsweers.metro.Inject
import dev.zacsweers.metro.SingleIn
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.callbackFlow
import tachiyomi.core.common.preference.AndroidPreference.BooleanPrimitive
@@ -15,10 +19,11 @@ import tachiyomi.core.common.preference.AndroidPreference.ObjectSetAsStringSet
import tachiyomi.core.common.preference.AndroidPreference.StringPrimitive
import tachiyomi.core.common.preference.AndroidPreference.StringSetPrimitive
class AndroidPreferenceStore(
context: Context,
private val sharedPreferences: SharedPreferences = PreferenceManager.getDefaultSharedPreferences(context),
) : PreferenceStore {
@SingleIn(AppScope::class)
@ContributesBinding(AppScope::class)
class AndroidPreferenceStore(private val sharedPreferences: SharedPreferences) : PreferenceStore {
@Inject constructor(context: Context) : this(PreferenceManager.getDefaultSharedPreferences(context))
private val keyFlow = sharedPreferences.keyFlow
@@ -3,10 +3,17 @@ package tachiyomi.core.common.storage
import android.content.Context
import android.os.Environment
import androidx.core.net.toUri
import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.ContributesBinding
import dev.zacsweers.metro.Inject
import dev.zacsweers.metro.SingleIn
import tachiyomi.core.common.i18n.stringResource
import tachiyomi.i18n.MR
import java.io.File
@Inject
@SingleIn(AppScope::class)
@ContributesBinding(AppScope::class)
class AndroidStorageFolderProvider(
private val context: Context,
) : FolderProvider {