diff --git a/CHANGELOG.md b/CHANGELOG.md index b594fcce11..718eb9e5bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ --> ## Additions - Sync DoH provider list with upstream (added Mullvad, Control D, Njalla, and Shecan) +- Added option to enable verbose logging ## Fixes - Fixed only few DoH provider is actually being used (Cloudflare, Google, AdGuard, and Quad9) diff --git a/app/src/main/java/eu/kanade/tachiyomi/App.kt b/app/src/main/java/eu/kanade/tachiyomi/App.kt index 2c487bf5b9..73d4e76cc5 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/App.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/App.kt @@ -44,6 +44,7 @@ import eu.kanade.tachiyomi.data.coil.TachiyomiImageDecoder import eu.kanade.tachiyomi.data.notification.Notifications import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.network.NetworkHelper +import eu.kanade.tachiyomi.network.NetworkPreferences import eu.kanade.tachiyomi.ui.library.LibraryPresenter import eu.kanade.tachiyomi.ui.recents.RecentsPresenter import eu.kanade.tachiyomi.ui.security.SecureActivityDelegate @@ -75,6 +76,7 @@ open class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.F val preferences: PreferencesHelper by injectLazy() val basePreferences: BasePreferences by injectLazy() + val networkPreferences: NetworkPreferences by injectLazy() private val disableIncognitoReceiver = DisableIncognitoReceiver() @@ -253,7 +255,7 @@ open class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.F crossfade(true) allowRgb565(this@App.getSystemService()!!.isLowRamDevice) allowHardware(true) - if (BuildConfig.DEBUG) { + if (networkPreferences.verboseLogging().get()) { logger(DebugLogger()) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt index c6f658a91b..c1049bd17e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsPresenter.kt @@ -4,13 +4,13 @@ import android.app.Application import android.graphics.Bitmap import android.net.Uri import androidx.core.net.toFile +import co.touchlab.kermit.Logger import coil3.imageLoader import coil3.request.CachePolicy import coil3.request.ImageRequest import coil3.request.SuccessResult import com.hippo.unifile.UniFile import dev.icerock.moko.resources.StringResource -import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.data.cache.CoverCache import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.Category @@ -35,6 +35,7 @@ import eu.kanade.tachiyomi.data.track.EnhancedTrackService import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.data.track.TrackService import eu.kanade.tachiyomi.domain.manga.models.Manga +import eu.kanade.tachiyomi.network.NetworkPreferences import eu.kanade.tachiyomi.source.LocalSource import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.SourceManager @@ -112,6 +113,8 @@ class MangaDetailsPresenter( private val updateChapter: UpdateChapter by injectLazy() private val updateManga: UpdateManga by injectLazy() + private val networkPreferences: NetworkPreferences by injectLazy() + // private val currentMangaInternal: MutableStateFlow = MutableStateFlow(null) // val currentManga get() = currentMangaInternal.asStateFlow() @@ -967,7 +970,7 @@ class MangaDetailsPresenter( DiskUtil.scanMedia(preferences.context, file) true } catch (e: Exception) { - if (BuildConfig.DEBUG) e.printStackTrace() + if (networkPreferences.verboseLogging().get()) Logger.e(e) { "Unable to save cover" } false } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsAdvancedController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsAdvancedController.kt index 3c47a610cf..9a820465e9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsAdvancedController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/controllers/SettingsAdvancedController.kt @@ -129,6 +129,12 @@ class SettingsAdvancedController : SettingsLegacyController() { } } + switchPreference { + bindTo(networkPreferences.verboseLogging()) + titleRes = MR.strings.pref_verbose_logging + summaryRes = MR.strings.pref_verbose_logging_summary + } + preference { key = "debug_info" titleRes = MR.strings.pref_debug_info diff --git a/app/src/main/java/yokai/core/di/PreferenceModule.kt b/app/src/main/java/yokai/core/di/PreferenceModule.kt index f209685ea8..98a9b23086 100644 --- a/app/src/main/java/yokai/core/di/PreferenceModule.kt +++ b/app/src/main/java/yokai/core/di/PreferenceModule.kt @@ -1,6 +1,7 @@ package yokai.core.di import android.app.Application +import eu.kanade.tachiyomi.BuildConfig import eu.kanade.tachiyomi.core.preference.AndroidPreferenceStore import eu.kanade.tachiyomi.core.preference.PreferenceStore import eu.kanade.tachiyomi.core.security.SecurityPreferences @@ -39,7 +40,12 @@ class PreferenceModule(val application: Application) : InjektModule { addSingletonFactory { DownloadPreferences(get()) } - addSingletonFactory { NetworkPreferences(get()) } + addSingletonFactory { + NetworkPreferences( + get(), + BuildConfig.FLAVOR == "dev" || BuildConfig.DEBUG || BuildConfig.NIGHTLY, + ) + } addSingletonFactory { SecurityPreferences(get()) } diff --git a/core/src/commonMain/kotlin/eu/kanade/tachiyomi/network/NetworkPreferences.kt b/core/src/commonMain/kotlin/eu/kanade/tachiyomi/network/NetworkPreferences.kt index bcc9d58a72..10f116181c 100644 --- a/core/src/commonMain/kotlin/eu/kanade/tachiyomi/network/NetworkPreferences.kt +++ b/core/src/commonMain/kotlin/eu/kanade/tachiyomi/network/NetworkPreferences.kt @@ -2,7 +2,12 @@ package eu.kanade.tachiyomi.network import eu.kanade.tachiyomi.core.preference.PreferenceStore -class NetworkPreferences(private val preferenceStore: PreferenceStore) { +class NetworkPreferences( + private val preferenceStore: PreferenceStore, + private val verboseLogging: Boolean, +) { + + fun verboseLogging() = preferenceStore.getBoolean("verbose_logging", verboseLogging) fun dohProvider() = preferenceStore.getInt("doh_provider", -1) diff --git a/i18n/src/commonMain/moko-resources/base/strings.xml b/i18n/src/commonMain/moko-resources/base/strings.xml index a809a88adc..af3020dd2f 100644 --- a/i18n/src/commonMain/moko-resources/base/strings.xml +++ b/i18n/src/commonMain/moko-resources/base/strings.xml @@ -799,6 +799,8 @@ Saves error logs to a file for sharing with the developers Some manufacturers have additional app restrictions that kill background services. This website has more info on how to fix it. Crash logs saved + Verbose logging + Print verbose logs to system log (may reduces app performance) Network DNS over HTTPS Default user agent string