refactor: Implement the log writer myself

Kermit's official crashlytics integration enable firebase way too early.
This commit is contained in:
Ahmad Ansori Palembani 2024-06-13 18:52:47 +07:00
parent d4f360c75d
commit a8b1c7f05e
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6
3 changed files with 26 additions and 5 deletions

View file

@ -0,0 +1,24 @@
package dev.yokai.core
import co.touchlab.kermit.DefaultFormatter
import co.touchlab.kermit.LogWriter
import co.touchlab.kermit.Message
import co.touchlab.kermit.Severity
import co.touchlab.kermit.Tag
import com.google.firebase.crashlytics.ktx.crashlytics
import com.google.firebase.ktx.Firebase
class CrashlyticsLogWriter : LogWriter() {
override fun isLoggable(tag: String, severity: Severity): Boolean = severity >= Severity.Info
override fun log(severity: Severity, message: String, tag: String, throwable: Throwable?) {
try {
Firebase.crashlytics.log(DefaultFormatter.formatMessage(severity, Tag(tag), Message(message)))
if (throwable != null && severity >= Severity.Warn) {
Firebase.crashlytics.recordException(throwable)
}
} catch (_: Exception) {
// Probably crashlytics not yet initialized or disabled
}
}
}

View file

@ -22,9 +22,7 @@ import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.ProcessLifecycleOwner
import androidx.lifecycle.lifecycleScope
import androidx.multidex.MultiDex
import co.touchlab.kermit.ExperimentalKermitApi
import co.touchlab.kermit.Logger
import co.touchlab.kermit.crashlytics.CrashlyticsLogWriter
import coil3.ImageLoader
import coil3.PlatformContext
import coil3.SingletonImageLoader
@ -36,6 +34,7 @@ import coil3.request.crossfade
import coil3.util.DebugLogger
import com.google.firebase.crashlytics.ktx.crashlytics
import com.google.firebase.ktx.Firebase
import dev.yokai.core.CrashlyticsLogWriter
import dev.yokai.core.di.AppModule
import dev.yokai.core.di.DomainModule
import dev.yokai.core.di.PreferenceModule
@ -73,7 +72,6 @@ open class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.F
private val disableIncognitoReceiver = DisableIncognitoReceiver()
@OptIn(ExperimentalKermitApi::class)
@SuppressLint("LaunchActivityFromNotification")
override fun onCreate() {
super<Application>.onCreate()