feat: Verbose logging

This commit is contained in:
Ahmad Ansori Palembani 2024-09-02 09:40:54 +07:00
parent 1925a503d9
commit 5a1a7063b2
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6
7 changed files with 30 additions and 5 deletions

View file

@ -11,6 +11,7 @@
--> -->
## Additions ## Additions
- Sync DoH provider list with upstream (added Mullvad, Control D, Njalla, and Shecan) - Sync DoH provider list with upstream (added Mullvad, Control D, Njalla, and Shecan)
- Added option to enable verbose logging
## Fixes ## Fixes
- Fixed only few DoH provider is actually being used (Cloudflare, Google, AdGuard, and Quad9) - Fixed only few DoH provider is actually being used (Cloudflare, Google, AdGuard, and Quad9)

View file

@ -44,6 +44,7 @@ import eu.kanade.tachiyomi.data.coil.TachiyomiImageDecoder
import eu.kanade.tachiyomi.data.notification.Notifications import eu.kanade.tachiyomi.data.notification.Notifications
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.network.NetworkHelper import eu.kanade.tachiyomi.network.NetworkHelper
import eu.kanade.tachiyomi.network.NetworkPreferences
import eu.kanade.tachiyomi.ui.library.LibraryPresenter import eu.kanade.tachiyomi.ui.library.LibraryPresenter
import eu.kanade.tachiyomi.ui.recents.RecentsPresenter import eu.kanade.tachiyomi.ui.recents.RecentsPresenter
import eu.kanade.tachiyomi.ui.security.SecureActivityDelegate import eu.kanade.tachiyomi.ui.security.SecureActivityDelegate
@ -75,6 +76,7 @@ open class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.F
val preferences: PreferencesHelper by injectLazy() val preferences: PreferencesHelper by injectLazy()
val basePreferences: BasePreferences by injectLazy() val basePreferences: BasePreferences by injectLazy()
val networkPreferences: NetworkPreferences by injectLazy()
private val disableIncognitoReceiver = DisableIncognitoReceiver() private val disableIncognitoReceiver = DisableIncognitoReceiver()
@ -253,7 +255,7 @@ open class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.F
crossfade(true) crossfade(true)
allowRgb565(this@App.getSystemService<ActivityManager>()!!.isLowRamDevice) allowRgb565(this@App.getSystemService<ActivityManager>()!!.isLowRamDevice)
allowHardware(true) allowHardware(true)
if (BuildConfig.DEBUG) { if (networkPreferences.verboseLogging().get()) {
logger(DebugLogger()) logger(DebugLogger())
} }

View file

@ -4,13 +4,13 @@ import android.app.Application
import android.graphics.Bitmap import android.graphics.Bitmap
import android.net.Uri import android.net.Uri
import androidx.core.net.toFile import androidx.core.net.toFile
import co.touchlab.kermit.Logger
import coil3.imageLoader import coil3.imageLoader
import coil3.request.CachePolicy import coil3.request.CachePolicy
import coil3.request.ImageRequest import coil3.request.ImageRequest
import coil3.request.SuccessResult import coil3.request.SuccessResult
import com.hippo.unifile.UniFile import com.hippo.unifile.UniFile
import dev.icerock.moko.resources.StringResource import dev.icerock.moko.resources.StringResource
import eu.kanade.tachiyomi.BuildConfig
import eu.kanade.tachiyomi.data.cache.CoverCache import eu.kanade.tachiyomi.data.cache.CoverCache
import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.DatabaseHelper
import eu.kanade.tachiyomi.data.database.models.Category 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.TrackManager
import eu.kanade.tachiyomi.data.track.TrackService import eu.kanade.tachiyomi.data.track.TrackService
import eu.kanade.tachiyomi.domain.manga.models.Manga 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.LocalSource
import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.SourceManager
@ -112,6 +113,8 @@ class MangaDetailsPresenter(
private val updateChapter: UpdateChapter by injectLazy() private val updateChapter: UpdateChapter by injectLazy()
private val updateManga: UpdateManga by injectLazy() private val updateManga: UpdateManga by injectLazy()
private val networkPreferences: NetworkPreferences by injectLazy()
// private val currentMangaInternal: MutableStateFlow<Manga?> = MutableStateFlow(null) // private val currentMangaInternal: MutableStateFlow<Manga?> = MutableStateFlow(null)
// val currentManga get() = currentMangaInternal.asStateFlow() // val currentManga get() = currentMangaInternal.asStateFlow()
@ -967,7 +970,7 @@ class MangaDetailsPresenter(
DiskUtil.scanMedia(preferences.context, file) DiskUtil.scanMedia(preferences.context, file)
true true
} catch (e: Exception) { } catch (e: Exception) {
if (BuildConfig.DEBUG) e.printStackTrace() if (networkPreferences.verboseLogging().get()) Logger.e(e) { "Unable to save cover" }
false false
} }
} }

View file

@ -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 { preference {
key = "debug_info" key = "debug_info"
titleRes = MR.strings.pref_debug_info titleRes = MR.strings.pref_debug_info

View file

@ -1,6 +1,7 @@
package yokai.core.di package yokai.core.di
import android.app.Application import android.app.Application
import eu.kanade.tachiyomi.BuildConfig
import eu.kanade.tachiyomi.core.preference.AndroidPreferenceStore import eu.kanade.tachiyomi.core.preference.AndroidPreferenceStore
import eu.kanade.tachiyomi.core.preference.PreferenceStore import eu.kanade.tachiyomi.core.preference.PreferenceStore
import eu.kanade.tachiyomi.core.security.SecurityPreferences import eu.kanade.tachiyomi.core.security.SecurityPreferences
@ -39,7 +40,12 @@ class PreferenceModule(val application: Application) : InjektModule {
addSingletonFactory { DownloadPreferences(get()) } addSingletonFactory { DownloadPreferences(get()) }
addSingletonFactory { NetworkPreferences(get()) } addSingletonFactory {
NetworkPreferences(
get(),
BuildConfig.FLAVOR == "dev" || BuildConfig.DEBUG || BuildConfig.NIGHTLY,
)
}
addSingletonFactory { SecurityPreferences(get()) } addSingletonFactory { SecurityPreferences(get()) }

View file

@ -2,7 +2,12 @@ package eu.kanade.tachiyomi.network
import eu.kanade.tachiyomi.core.preference.PreferenceStore 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) fun dohProvider() = preferenceStore.getInt("doh_provider", -1)

View file

@ -799,6 +799,8 @@
<string name="saves_error_logs">Saves error logs to a file for sharing with the developers</string> <string name="saves_error_logs">Saves error logs to a file for sharing with the developers</string>
<string name="about_dont_kill_my_app">Some manufacturers have additional app restrictions that kill background services. This website has more info on how to fix it.</string> <string name="about_dont_kill_my_app">Some manufacturers have additional app restrictions that kill background services. This website has more info on how to fix it.</string>
<string name="crash_log_saved">Crash logs saved</string> <string name="crash_log_saved">Crash logs saved</string>
<string name="pref_verbose_logging">Verbose logging</string>
<string name="pref_verbose_logging_summary">Print verbose logs to system log (may reduces app performance)</string>
<string name="network">Network</string> <string name="network">Network</string>
<string name="doh">DNS over HTTPS</string> <string name="doh">DNS over HTTPS</string>
<string name="user_agent_string">Default user agent string</string> <string name="user_agent_string">Default user agent string</string>