From e36520faad15566be5cf7de5ebff37dc084a15ea Mon Sep 17 00:00:00 2001
From: FooIbar <118464521+FooIbar@users.noreply.github.com>
Date: Mon, 12 Feb 2024 22:40:45 +0800
Subject: [PATCH] Replace `printStackTrace` with proper priority log (#722)
* Replace `printStackTrace` with proper priority log
* Fix
---
app/build.gradle.kts | 2 ++
.../com/hippo/ehviewer/EhApplication.kt | 13 +++++++-----
.../com/hippo/ehviewer/SettingsCollector.kt | 5 +++--
.../com/hippo/ehviewer/client/EhEngine.kt | 3 ++-
.../hippo/ehviewer/client/EhTagDatabase.kt | 5 +++--
.../ehviewer/client/parser/ArchiveParser.kt | 3 ++-
.../client/parser/GalleryDetailParser.kt | 11 +++++-----
.../client/parser/GalleryListUrlParser.kt | 5 +++--
.../parser/GalleryNotAvailableParser.kt | 3 ++-
.../ehviewer/dailycheck/DailyCheckWork.kt | 5 +++--
.../ehviewer/download/DownloadManager.kt | 3 ++-
.../ehviewer/gallery/ArchivePageLoader.kt | 3 ++-
.../kotlin/com/hippo/ehviewer/image/Image.kt | 3 ++-
.../com/hippo/ehviewer/spider/SpiderDen.kt | 9 +++++----
.../com/hippo/ehviewer/spider/SpiderInfo.kt | 5 +++--
.../com/hippo/ehviewer/spider/SpiderQueen.kt | 9 +++++----
.../com/hippo/ehviewer/ui/MainActivity.kt | 3 ++-
.../com/hippo/ehviewer/ui/login/PostLogin.kt | 5 +++--
.../ehviewer/ui/screen/GalleryDetailScreen.kt | 9 +++++----
.../ehviewer/ui/settings/AdvancedScreen.kt | 9 +++++----
.../ehviewer/ui/settings/DownloadScreen.kt | 9 +++++----
.../kotlin/com/hippo/ehviewer/util/Crash.kt | 3 ++-
.../com/hippo/ehviewer/util/ExceptionUtils.kt | 3 ++-
.../kotlin/com/hippo/ehviewer/util/OSUtils.kt | 3 ++-
.../tachiyomi/ui/reader/ReaderActivity.kt | 5 +++--
.../eu/kanade/tachiyomi/util/system/Logcat.kt | 20 ++++++++++++++-----
gradle/libs.versions.toml | 2 ++
27 files changed, 99 insertions(+), 59 deletions(-)
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 7563686bc..5783a55f5 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -239,6 +239,8 @@ dependencies {
implementation(libs.okio.jvm)
+ implementation(libs.logcat)
+
implementation(libs.diff)
implementation(libs.aboutlibraries.core)
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/EhApplication.kt b/app/src/main/kotlin/com/hippo/ehviewer/EhApplication.kt
index 5efa81f6f..1218ab179 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/EhApplication.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/EhApplication.kt
@@ -20,7 +20,6 @@ import android.app.Application
import android.content.ComponentCallbacks2
import android.content.Context
import android.os.StrictMode
-import android.util.Log
import androidx.appcompat.app.AppCompatDelegate
import androidx.appcompat.content.res.AppCompatResources
import androidx.collection.LruCache
@@ -68,6 +67,9 @@ import io.ktor.client.plugins.cookies.HttpCookies
import java.io.File
import kotlinx.coroutines.ensureActive
import kotlinx.coroutines.launch
+import logcat.AndroidLogcatLogger
+import logcat.LogPriority
+import logcat.LogcatLogger
import moe.tarsin.coroutines.runSuspendCatching
import okhttp3.AsyncDns
import okhttp3.android.AndroidAsyncDns
@@ -104,6 +106,7 @@ class EhApplication : Application(), SingletonImageLoader.Factory {
System.loadLibrary("ehviewer")
System.loadLibrary("ehviewer_rust")
ReadableTime.initialize(this)
+ LogcatLogger.install(AndroidLogcatLogger(LogPriority.VERBOSE))
lifecycleScope.launchIO {
launchIO {
EhTagDatabase
@@ -127,7 +130,7 @@ class EhApplication : Application(), SingletonImageLoader.Factory {
}
}
}.onFailure {
- it.printStackTrace()
+ logcat(it)
}
}
launchIO {
@@ -143,7 +146,7 @@ class EhApplication : Application(), SingletonImageLoader.Factory {
if (BuildConfig.DEBUG) {
StrictMode.enableDefaults()
Snapshot.registerApplyObserver { anies, _ ->
- logcat(Log.VERBOSE) { anies.toString() }
+ logcat(LogPriority.VERBOSE) { anies.toString() }
}
}
}
@@ -152,12 +155,12 @@ class EhApplication : Application(), SingletonImageLoader.Factory {
runCatching {
keepNoMediaFileStatus()
}.onFailure {
- it.printStackTrace()
+ logcat(it)
}
runCatching {
clearTempDir()
}.onFailure {
- it.printStackTrace()
+ logcat(it)
}
}
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/SettingsCollector.kt b/app/src/main/kotlin/com/hippo/ehviewer/SettingsCollector.kt
index 2499423c3..63f18f4c1 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/SettingsCollector.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/SettingsCollector.kt
@@ -10,6 +10,7 @@ import com.hippo.ehviewer.dailycheck.updateDailyCheckWork
import com.hippo.ehviewer.ui.keepNoMediaFileStatus
import com.hippo.ehviewer.util.isAtLeastS
import eu.kanade.tachiyomi.util.lang.launchIO
+import eu.kanade.tachiyomi.util.system.logcat
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob
@@ -68,7 +69,7 @@ fun updateWhenGallerySiteChanges() {
runCatching {
EhEngine.getUConfig()
}.onFailure {
- it.printStackTrace()
+ logcat(it)
}
}
}
@@ -79,7 +80,7 @@ fun updateWhenTagTranslationChanges() {
runCatching {
EhTagDatabase.update()
}.onFailure {
- it.printStackTrace()
+ logcat(it)
}
}
}
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/client/EhEngine.kt b/app/src/main/kotlin/com/hippo/ehviewer/client/EhEngine.kt
index 2ad83b788..6b4229af0 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/client/EhEngine.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/client/EhEngine.kt
@@ -54,6 +54,7 @@ import com.hippo.ehviewer.dailycheck.today
import com.hippo.ehviewer.util.AppConfig
import com.hippo.ehviewer.util.ReadableTime
import com.hippo.ehviewer.util.StatusCodeException
+import eu.kanade.tachiyomi.util.system.logcat
import io.ktor.client.request.forms.append
import io.ktor.client.statement.HttpStatement
import io.ktor.client.statement.bodyAsChannel
@@ -203,7 +204,7 @@ object EhEngine {
}.onFailure { throwable ->
// It may get redirected when accessing ex for the first time
if (url == EhUrl.URL_UCONFIG_EX) {
- throwable.printStackTrace()
+ logcat(throwable)
ehRequest(url).fetchUsingAsText { check(U_CONFIG_TEXT in this) { "Unable to load config from $url!" } }
} else {
throw throwable
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/client/EhTagDatabase.kt b/app/src/main/kotlin/com/hippo/ehviewer/client/EhTagDatabase.kt
index 68a0f92df..cdef888b7 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/client/EhTagDatabase.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/client/EhTagDatabase.kt
@@ -25,6 +25,7 @@ import com.hippo.ehviewer.util.AppConfig
import com.hippo.ehviewer.util.FileUtils
import com.hippo.ehviewer.util.StatusCodeException
import com.hippo.ehviewer.util.copyTo
+import eu.kanade.tachiyomi.util.system.logcat
import io.ktor.client.HttpClient
import io.ktor.client.request.prepareGet
import io.ktor.client.statement.bodyAsChannel
@@ -213,7 +214,7 @@ object EhTagDatabase : CoroutineScope {
runSuspendCatching {
issueUpdateInMemoryData()
}.onFailure {
- it.printStackTrace()
+ logcat(it)
}
updateInternal()
}
@@ -272,7 +273,7 @@ object EhTagDatabase : CoroutineScope {
// Read new EhTagDatabase
issueUpdateInMemoryData(dataFile)
}.onFailure {
- it.printStackTrace()
+ logcat(it)
}
}
}
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/client/parser/ArchiveParser.kt b/app/src/main/kotlin/com/hippo/ehviewer/client/parser/ArchiveParser.kt
index bb415e2ce..b2ef0c790 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/client/parser/ArchiveParser.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/client/parser/ArchiveParser.kt
@@ -17,6 +17,7 @@ package com.hippo.ehviewer.client.parser
import com.hippo.ehviewer.client.exception.InsufficientFundsException
import com.hippo.ehviewer.client.exception.NoHAtHClientException
+import eu.kanade.tachiyomi.util.system.logcat
import org.jsoup.Jsoup
object ArchiveParser {
@@ -48,7 +49,7 @@ object ArchiveParser {
}.onSuccess {
archiveList.add(it)
}.onFailure {
- it.printStackTrace()
+ logcat(it)
}
}
}
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/client/parser/GalleryDetailParser.kt b/app/src/main/kotlin/com/hippo/ehviewer/client/parser/GalleryDetailParser.kt
index 5da09d848..8b78a70ca 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/client/parser/GalleryDetailParser.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/client/parser/GalleryDetailParser.kt
@@ -42,6 +42,7 @@ import com.hippo.ehviewer.util.toFloatOrDefault
import com.hippo.ehviewer.util.toIntOrDefault
import com.hippo.ehviewer.util.trimAnd
import com.hippo.ehviewer.util.unescapeXml
+import eu.kanade.tachiyomi.util.system.logcat
import java.time.Instant
import java.time.ZoneOffset
import java.time.format.DateTimeFormatter
@@ -298,7 +299,7 @@ object GalleryDetailParser {
if (group.size > 0) group else null
} catch (e: Throwable) {
ExceptionUtils.throwIfFatal(e)
- e.printStackTrace()
+ logcat(e)
null
}
}
@@ -313,7 +314,7 @@ object GalleryDetailParser {
parseTagGroups(tagGroups)
} catch (e: Throwable) {
ExceptionUtils.throwIfFatal(e)
- e.printStackTrace()
+ logcat(e)
emptyList()
}
}
@@ -323,7 +324,7 @@ object GalleryDetailParser {
trs.mapNotNull { parseTagGroup(it) }
} catch (e: Throwable) {
ExceptionUtils.throwIfFatal(e)
- e.printStackTrace()
+ logcat(e)
emptyList()
}
}
@@ -402,7 +403,7 @@ object GalleryDetailParser {
)
} catch (e: Throwable) {
ExceptionUtils.throwIfFatal(e)
- e.printStackTrace()
+ logcat(e)
null
}
}
@@ -434,7 +435,7 @@ object GalleryDetailParser {
GalleryCommentList(list, hasMore)
} catch (e: Throwable) {
ExceptionUtils.throwIfFatal(e)
- e.printStackTrace()
+ logcat(e)
EMPTY_GALLERY_COMMENT_LIST
}
}
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/client/parser/GalleryListUrlParser.kt b/app/src/main/kotlin/com/hippo/ehviewer/client/parser/GalleryListUrlParser.kt
index 4496abec7..24d5a67e2 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/client/parser/GalleryListUrlParser.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/client/parser/GalleryListUrlParser.kt
@@ -19,6 +19,7 @@ import android.net.Uri
import android.os.Build
import com.hippo.ehviewer.client.EhUrl
import com.hippo.ehviewer.client.data.ListUrlBuilder
+import eu.kanade.tachiyomi.util.system.logcat
import java.io.UnsupportedEncodingException
import java.net.MalformedURLException
import java.net.URL
@@ -77,7 +78,7 @@ object GalleryListUrlParser {
try {
URLDecoder.decode(uploader, StandardCharsets.UTF_8.displayName())
} catch (e: UnsupportedEncodingException) {
- e.printStackTrace()
+ logcat(e)
return null
}
}
@@ -106,7 +107,7 @@ object GalleryListUrlParser {
try {
URLDecoder.decode(tag, StandardCharsets.UTF_8.displayName())
} catch (e: UnsupportedEncodingException) {
- e.printStackTrace()
+ logcat(e)
return null
}
}
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/client/parser/GalleryNotAvailableParser.kt b/app/src/main/kotlin/com/hippo/ehviewer/client/parser/GalleryNotAvailableParser.kt
index 28ea9d829..555a0ff68 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/client/parser/GalleryNotAvailableParser.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/client/parser/GalleryNotAvailableParser.kt
@@ -18,6 +18,7 @@
package com.hippo.ehviewer.client.parser
import com.hippo.ehviewer.util.ExceptionUtils
+import eu.kanade.tachiyomi.util.system.logcat
import org.jsoup.Jsoup
object GalleryNotAvailableParser {
@@ -27,7 +28,7 @@ object GalleryNotAvailableParser {
e!!.child(0).html().replace("
", "\n")
}.getOrElse {
ExceptionUtils.throwIfFatal(it)
- it.printStackTrace()
+ logcat(it)
null
}
}
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/dailycheck/DailyCheckWork.kt b/app/src/main/kotlin/com/hippo/ehviewer/dailycheck/DailyCheckWork.kt
index 1410b30c9..23848d683 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/dailycheck/DailyCheckWork.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/dailycheck/DailyCheckWork.kt
@@ -24,6 +24,7 @@ import com.hippo.ehviewer.Settings
import com.hippo.ehviewer.client.EhCookieStore
import com.hippo.ehviewer.client.EhEngine
import eu.kanade.tachiyomi.util.lang.withIOContext
+import eu.kanade.tachiyomi.util.system.logcat
import java.time.Duration
import java.util.concurrent.TimeUnit
import kotlin.time.Duration.Companion.days
@@ -89,7 +90,7 @@ suspend fun checkDawn() = runCatching {
}
}
}.onFailure {
- it.printStackTrace()
+ logcat(WORK_NAME, it)
}
@SuppressLint("MissingPermission")
@@ -118,6 +119,6 @@ fun showEventNotification(html: String) {
runCatching {
notificationManager.notify(1, msg.build())
}.onFailure {
- it.printStackTrace()
+ logcat(WORK_NAME, it)
}
}
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/download/DownloadManager.kt b/app/src/main/kotlin/com/hippo/ehviewer/download/DownloadManager.kt
index a2be73277..9e4486a17 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/download/DownloadManager.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/download/DownloadManager.kt
@@ -47,6 +47,7 @@ import com.hippo.unifile.UniFile
import com.hippo.unifile.asUniFile
import com.hippo.unifile.asUniFileOrNull
import eu.kanade.tachiyomi.util.lang.launchIO
+import eu.kanade.tachiyomi.util.system.logcat
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.asSharedFlow
import kotlinx.coroutines.flow.transform
@@ -455,7 +456,7 @@ object DownloadManager : OnSpiderListener {
suspend fun resetAllReadingProgress() = runCatching {
EhDB.clearProgressInfo()
- }.onFailure { it.printStackTrace() }
+ }.onFailure { logcat(it) }
// Update in DB
// Update listener
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/gallery/ArchivePageLoader.kt b/app/src/main/kotlin/com/hippo/ehviewer/gallery/ArchivePageLoader.kt
index bff620ff8..901acbdaf 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/gallery/ArchivePageLoader.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/gallery/ArchivePageLoader.kt
@@ -31,6 +31,7 @@ import com.hippo.ehviewer.jni.releaseByteBuffer
import com.hippo.ehviewer.util.FileUtils
import com.hippo.unifile.UniFile
import com.hippo.unifile.displayPath
+import eu.kanade.tachiyomi.util.system.logcat
import java.nio.ByteBuffer
import kotlinx.coroutines.CoroutineStart
import kotlinx.coroutines.Job
@@ -160,7 +161,7 @@ class ArchivePageLoader(
extractToFd(index, it.fd)
}
}.getOrElse {
- it.printStackTrace()
+ logcat(it)
false
}
}
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/image/Image.kt b/app/src/main/kotlin/com/hippo/ehviewer/image/Image.kt
index ae75b21eb..5007c916c 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/image/Image.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/image/Image.kt
@@ -53,6 +53,7 @@ import com.hippo.ehviewer.util.isAtLeastP
import com.hippo.ehviewer.util.isAtLeastQ
import com.hippo.ehviewer.util.isAtLeastU
import com.hippo.unifile.UniFile
+import eu.kanade.tachiyomi.util.system.logcat
import java.nio.ByteBuffer
import splitties.init.appCtx
@@ -163,7 +164,7 @@ class Image private constructor(image: CoilImage, private val src: AutoCloseable
}
}.onFailure {
src.close()
- it.printStackTrace()
+ logcat(it)
}.getOrNull()
}
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/spider/SpiderDen.kt b/app/src/main/kotlin/com/hippo/ehviewer/spider/SpiderDen.kt
index 1823b2fa4..dd13d90af 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/spider/SpiderDen.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/spider/SpiderDen.kt
@@ -38,6 +38,7 @@ import com.hippo.unifile.UniFile
import com.hippo.unifile.asUniFile
import com.hippo.unifile.openOutputStream
import eu.kanade.tachiyomi.util.lang.withNonCancellableContext
+import eu.kanade.tachiyomi.util.system.logcat
import io.ktor.client.plugins.onDownload
import io.ktor.client.statement.HttpResponse
import io.ktor.client.statement.bodyAsChannel
@@ -89,7 +90,7 @@ class SpiderDen(val info: GalleryInfo) {
true
} ?: false
}.onFailure {
- it.printStackTrace()
+ logcat(it)
}.getOrDefault(false)
}
@@ -187,7 +188,7 @@ class SpiderDen(val info: GalleryInfo) {
data.asUniFile() sendTo file
return true
}.onFailure {
- it.printStackTrace()
+ logcat(it)
return false
}
}
@@ -197,7 +198,7 @@ class SpiderDen(val info: GalleryInfo) {
runCatching {
requireNotNull(findImageFile(uniFile, index)) sendTo file
}.onFailure {
- it.printStackTrace()
+ logcat(it)
return false
}.onSuccess {
return true
@@ -276,7 +277,7 @@ class SpiderDen(val info: GalleryInfo) {
}
info.getComicInfo().write(it)
}.onFailure {
- it.printStackTrace()
+ logcat(it)
}
}
}
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/spider/SpiderInfo.kt b/app/src/main/kotlin/com/hippo/ehviewer/spider/SpiderInfo.kt
index 9c919b20b..72dc38726 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/spider/SpiderInfo.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/spider/SpiderInfo.kt
@@ -7,6 +7,7 @@ import com.hippo.ehviewer.legacy.readLegacySpiderInfo
import com.hippo.unifile.UniFile
import com.hippo.unifile.openInputStream
import com.hippo.unifile.openOutputStream
+import eu.kanade.tachiyomi.util.system.logcat
import kotlinx.serialization.Serializable
import kotlinx.serialization.cbor.Cbor
import kotlinx.serialization.decodeFromByteArray
@@ -46,7 +47,7 @@ fun SpiderInfo.saveToCache() {
data.toFile().writeBytes(cbor.encodeToByteArray(this@saveToCache))
}
}.onFailure {
- it.printStackTrace()
+ logcat(it)
}
}
@@ -62,7 +63,7 @@ fun readFromCache(gid: Long): SpiderInfo? {
runCatching {
cbor.decodeFromByteArray(data.toFile().readBytes())
}.onFailure {
- it.printStackTrace()
+ logcat(it)
}.getOrNull()
}
}
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/spider/SpiderQueen.kt b/app/src/main/kotlin/com/hippo/ehviewer/spider/SpiderQueen.kt
index 3377e4a28..4d59c3dc7 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/spider/SpiderQueen.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/spider/SpiderQueen.kt
@@ -41,6 +41,7 @@ import com.hippo.ehviewer.image.Image
import com.hippo.ehviewer.util.ExceptionUtils
import com.hippo.unifile.UniFile
import eu.kanade.tachiyomi.util.lang.launchIO
+import eu.kanade.tachiyomi.util.system.logcat
import java.util.concurrent.atomic.AtomicInteger
import kotlin.time.Duration.Companion.milliseconds
import kotlin.time.Duration.Companion.seconds
@@ -244,7 +245,7 @@ class SpiderQueen private constructor(val galleryInfo: GalleryInfo) : CoroutineS
runCatching {
writeSpiderInfoToLocal()
}.onFailure {
- it.printStackTrace()
+ logcat(it)
}
}
}
@@ -352,7 +353,7 @@ class SpiderQueen private constructor(val galleryInfo: GalleryInfo) : CoroutineS
spiderInfo
}
}.onFailure {
- it.printStackTrace()
+ logcat(it)
}.getOrNull()
}
@@ -370,7 +371,7 @@ class SpiderQueen private constructor(val galleryInfo: GalleryInfo) : CoroutineS
spiderInfo.pTokenMap[index]
}
}.getOrElse {
- it.printStackTrace()
+ logcat(it)
null
}
}
@@ -400,7 +401,7 @@ class SpiderQueen private constructor(val galleryInfo: GalleryInfo) : CoroutineS
spiderInfo.pTokenMap[index]
}
}.getOrElse {
- it.printStackTrace()
+ logcat(it)
null
}
}
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt
index 2b34aeb1d..f97c93fd2 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/MainActivity.kt
@@ -133,6 +133,7 @@ import com.ramcosta.composedestinations.DestinationsNavHost
import com.ramcosta.composedestinations.rememberNavHostEngine
import com.ramcosta.composedestinations.utils.currentDestinationAsState
import eu.kanade.tachiyomi.util.lang.withIOContext
+import eu.kanade.tachiyomi.util.system.logcat
import java.io.File
import java.io.FileOutputStream
import kotlinx.coroutines.channels.BufferOverflow
@@ -193,7 +194,7 @@ class MainActivity : EhActivity() {
FileOutputStream(temp).use { bitmap.compress(Bitmap.CompressFormat.JPEG, 90, it) }
temp
}.getOrElse {
- it.printStackTrace()
+ logcat(it)
null
}
}
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/login/PostLogin.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/login/PostLogin.kt
index 6d1e3b724..cdac61334 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/ui/login/PostLogin.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/login/PostLogin.kt
@@ -4,6 +4,7 @@ import com.hippo.ehviewer.Settings
import com.hippo.ehviewer.client.EhCookieStore
import com.hippo.ehviewer.client.EhEngine
import com.hippo.ehviewer.client.EhUrl
+import eu.kanade.tachiyomi.util.system.logcat
import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.launch
@@ -15,7 +16,7 @@ suspend fun postLogin() = coroutineScope {
Settings.avatar = avatar
}
}.onFailure {
- it.printStackTrace()
+ logcat(it)
}
}
runCatching {
@@ -28,7 +29,7 @@ suspend fun postLogin() = coroutineScope {
EhEngine.getUConfig(EhUrl.URL_UCONFIG_E)
EhCookieStore.flush()
}.onFailure {
- it.printStackTrace()
+ logcat(it)
}
}
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryDetailScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryDetailScreen.kt
index 6271a9a52..f47b8f519 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryDetailScreen.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/screen/GalleryDetailScreen.kt
@@ -162,6 +162,7 @@ import eu.kanade.tachiyomi.util.lang.launchIO
import eu.kanade.tachiyomi.util.lang.launchUI
import eu.kanade.tachiyomi.util.lang.withIOContext
import eu.kanade.tachiyomi.util.lang.withUIContext
+import eu.kanade.tachiyomi.util.system.logcat
import kotlin.math.roundToInt
import kotlinx.coroutines.CancellationException
import kotlinx.coroutines.launch
@@ -380,7 +381,7 @@ fun GalleryDetailScreen(args: GalleryDetailScreenArgs, navigator: DestinationsNa
is NoHAtHClientException -> activity.showTip(R.string.download_archive_failure_no_hath)
is EhException -> activity.showTip(ExceptionUtils.getReadableString(it))
else -> {
- it.printStackTrace()
+ logcat(it)
activity.showTip(R.string.download_archive_failure)
}
}
@@ -631,7 +632,7 @@ fun GalleryDetailScreen(args: GalleryDetailScreenArgs, navigator: DestinationsNa
runSuspendCatching {
showTorrentDialog()
}.onFailure {
- it.printStackTrace()
+ logcat(it)
activity.showTip(R.string.download_torrent_failure)
}
} else {
@@ -687,7 +688,7 @@ fun GalleryDetailScreen(args: GalleryDetailScreenArgs, navigator: DestinationsNa
}
ratingText = getAllRatingText(result.rating, result.ratingCount)
}.onFailure {
- it.printStackTrace()
+ logcat(it)
activity.showTip(R.string.rate_failed)
}
}
@@ -1119,7 +1120,7 @@ fun GalleryDetailScreen(args: GalleryDetailScreenArgs, navigator: DestinationsNa
}
}
}.getOrElse {
- it.printStackTrace()
+ logcat(it)
false
}
val msg = if (success) {
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt
index f05b3119b..eb6e0d594 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/AdvancedScreen.kt
@@ -51,6 +51,7 @@ import com.hippo.ehviewer.util.ReadableTime
import com.hippo.ehviewer.util.isCronetAvailable
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
+import eu.kanade.tachiyomi.util.system.logcat
import java.io.File
import java.util.zip.ZipEntry
import java.util.zip.ZipOutputStream
@@ -123,7 +124,7 @@ fun AdvancedScreen(navigator: DestinationsNavigator) {
}
}.onFailure {
launchSnackBar(dumpLogError)
- it.printStackTrace()
+ logcat(it)
}
}
}
@@ -212,7 +213,7 @@ fun AdvancedScreen(navigator: DestinationsNavigator) {
EhDB.exportDB(context, uri)
launchSnackBar(getString(R.string.settings_advanced_export_data_to, uri.toString()))
}.onFailure {
- it.printStackTrace()
+ logcat(it)
launchSnackBar(exportFailed)
}
}
@@ -231,7 +232,7 @@ fun AdvancedScreen(navigator: DestinationsNavigator) {
EhDB.importDB(context, uri)
launchSnackBar(importSucceed)
}.onFailure {
- it.printStackTrace()
+ logcat(it)
launchSnackBar(importFailed)
}
}
@@ -270,7 +271,7 @@ fun AdvancedScreen(navigator: DestinationsNavigator) {
}.onSuccess {
launchSnackBar(backupSucceed)
}.onFailure {
- it.printStackTrace()
+ logcat(it)
launchSnackBar(backupFailed)
}
}
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/DownloadScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/DownloadScreen.kt
index c0d3ba54e..c31d536b0 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/DownloadScreen.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/settings/DownloadScreen.kt
@@ -52,6 +52,7 @@ import com.hippo.unifile.displayPath
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
import eu.kanade.tachiyomi.util.lang.launchNonCancellable
+import eu.kanade.tachiyomi.util.system.logcat
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import moe.tarsin.coroutines.runSuspendCatching
@@ -179,7 +180,7 @@ fun DownloadScreen(navigator: DestinationsNavigator) {
}
RestoreItem(dirname, gid, token)
}.onFailure {
- it.printStackTrace()
+ logcat(it)
}.getOrNull()
}
runCatching {
@@ -187,7 +188,7 @@ fun DownloadScreen(navigator: DestinationsNavigator) {
runSuspendCatching {
fillGalleryListByApi(this, EhUrl.referer)
}.onFailure {
- it.printStackTrace()
+ logcat(it)
}
}
if (result.isEmpty()) {
@@ -203,7 +204,7 @@ fun DownloadScreen(navigator: DestinationsNavigator) {
launchSnackBar(RESTORE_COUNT_MSG(count + restoreDirCount))
}
}.onFailure {
- it.printStackTrace()
+ logcat(it)
}
}
WorkPreference(
@@ -227,7 +228,7 @@ fun DownloadScreen(navigator: DestinationsNavigator) {
val cnt = downloadLocation.listFiles().sumOf { clearFile(it).compareTo(false) }
launchSnackBar(FINAL_CLEAR_REDUNDANCY_MSG(cnt))
}.onFailure {
- it.printStackTrace()
+ logcat(it)
}
}
}
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/util/Crash.kt b/app/src/main/kotlin/com/hippo/ehviewer/util/Crash.kt
index a2cbd4f23..84076e13f 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/util/Crash.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/util/Crash.kt
@@ -3,6 +3,7 @@ package com.hippo.ehviewer.util
import android.os.Build
import android.os.Debug
import com.hippo.ehviewer.BuildConfig
+import eu.kanade.tachiyomi.util.system.logcat
import java.io.File
import java.io.FileWriter
import java.io.OutputStreamWriter
@@ -75,7 +76,7 @@ object Crash {
fw.flush()
}
}.onFailure {
- it.printStackTrace()
+ logcat(it)
file.delete()
}
if (t is OutOfMemoryError) {
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/util/ExceptionUtils.kt b/app/src/main/kotlin/com/hippo/ehviewer/util/ExceptionUtils.kt
index 48d62184f..904eaa28c 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/util/ExceptionUtils.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/util/ExceptionUtils.kt
@@ -16,6 +16,7 @@
package com.hippo.ehviewer.util
import com.hippo.ehviewer.R
+import eu.kanade.tachiyomi.util.system.logcat
import java.io.IOException
import java.net.MalformedURLException
import java.net.ProtocolException
@@ -27,7 +28,7 @@ import splitties.init.appCtx
object ExceptionUtils {
fun getReadableString(e: Throwable): String {
- e.printStackTrace()
+ logcat(e)
val cause = e.cause
return if (e is IOException && cause != null) {
getReadableStringInternal(cause)
diff --git a/app/src/main/kotlin/com/hippo/ehviewer/util/OSUtils.kt b/app/src/main/kotlin/com/hippo/ehviewer/util/OSUtils.kt
index c60e57358..a861c7a4c 100644
--- a/app/src/main/kotlin/com/hippo/ehviewer/util/OSUtils.kt
+++ b/app/src/main/kotlin/com/hippo/ehviewer/util/OSUtils.kt
@@ -16,6 +16,7 @@
package com.hippo.ehviewer.util
import android.os.Looper
+import eu.kanade.tachiyomi.util.system.logcat
import java.io.BufferedReader
import java.io.FileReader
import java.util.regex.Pattern
@@ -59,7 +60,7 @@ object OSUtils {
}
}
}.onFailure {
- it.printStackTrace()
+ logcat(it)
}
if (sTotalMem == Long.MIN_VALUE) {
sTotalMem = -1L
diff --git a/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt b/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
index 20273a7f6..be539f2e8 100644
--- a/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
+++ b/app/src/main/kotlin/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
@@ -107,6 +107,7 @@ import eu.kanade.tachiyomi.ui.reader.viewer.pager.R2LPagerViewer
import eu.kanade.tachiyomi.util.lang.launchIO
import eu.kanade.tachiyomi.util.lang.withUIContext
import eu.kanade.tachiyomi.util.system.isNightMode
+import eu.kanade.tachiyomi.util.system.logcat
import java.io.File
import kotlinx.coroutines.FlowPreview
import kotlinx.coroutines.flow.MutableStateFlow
@@ -457,7 +458,7 @@ class ReaderActivity : EhActivity() {
try {
resolver.delete(imageUri, null, null)
} catch (e: Exception) {
- e.printStackTrace()
+ logcat(e)
}
return@launchIO makeToast(R.string.error_cant_save_image)
} else if (isAtLeastQ) {
@@ -484,7 +485,7 @@ class ReaderActivity : EhActivity() {
makeToast(getString(R.string.image_saved, it.displayPath))
}
}.onFailure {
- it.printStackTrace()
+ logcat(it)
makeToast(R.string.error_cant_find_activity)
}
}
diff --git a/app/src/main/kotlin/eu/kanade/tachiyomi/util/system/Logcat.kt b/app/src/main/kotlin/eu/kanade/tachiyomi/util/system/Logcat.kt
index ae82f0cb8..9dfc19737 100644
--- a/app/src/main/kotlin/eu/kanade/tachiyomi/util/system/Logcat.kt
+++ b/app/src/main/kotlin/eu/kanade/tachiyomi/util/system/Logcat.kt
@@ -1,11 +1,21 @@
package eu.kanade.tachiyomi.util.system
-import android.util.Log
+import logcat.LogPriority
+import logcat.asLog
+import logcat.logcat as logcatImpl
-inline fun logcat(tag: String, priority: Int = Log.DEBUG, message: () -> String) {
- Log.println(priority, tag, message())
+inline fun logcat(tag: String, priority: LogPriority = LogPriority.DEBUG, message: () -> String) {
+ logcatImpl(tag, priority, message)
}
-inline fun Any.logcat(priority: Int = Log.DEBUG, message: () -> String) {
- Log.println(priority, javaClass.simpleName, message())
+inline fun Any.logcat(priority: LogPriority = LogPriority.DEBUG, message: () -> String) {
+ logcatImpl(priority, message = message)
+}
+
+fun logcat(tag: String, throwable: Throwable) {
+ logcatImpl(tag, LogPriority.ERROR) { throwable.asLog() }
+}
+
+fun Any.logcat(throwable: Throwable) {
+ logcatImpl(LogPriority.ERROR) { throwable.asLog() }
}
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 00f06cf64..1476869b0 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -96,6 +96,8 @@ kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.
ktor-client-okhttp = { module = "io.ktor:ktor-client-okhttp", version.ref = "ktor" }
+logcat = "com.squareup.logcat:logcat:0.1"
+
material = { module = "com.google.android.material:material", version.ref = "google-android-material" }
okhttp-android = { module = "com.squareup.okhttp3:okhttp-android" }