feat: set Log.minLevel in app entry points and migrate android.util.Log usages

- Set Log.minLevel based on BuildConfig.DEBUG in Amethyst.kt init
- Set Log.minLevel = DEBUG in Desktop Main.kt
- Migrate VideoCompressionHelper to quartz Log + LogLevel enum
- Migrate VoiceAnonymizer, VoiceMessagePreview, LiveStatusIndicator to quartz Log

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
davotoula
2026-03-28 01:15:09 +01:00
parent 25b2cb42d0
commit 250d89ca0a
6 changed files with 19 additions and 12 deletions
@@ -23,9 +23,11 @@ package com.vitorpamplona.amethyst
import android.app.Application
import com.vitorpamplona.amethyst.service.logging.Logging
import com.vitorpamplona.quartz.utils.Log
import com.vitorpamplona.quartz.utils.LogLevel
class Amethyst : Application() {
init {
Log.minLevel = if (BuildConfig.DEBUG) LogLevel.DEBUG else LogLevel.ERROR
Log.d("AmethystApp", "Creating App $this")
}
@@ -26,7 +26,6 @@ import android.net.Uri
import android.os.Handler
import android.os.Looper
import android.text.format.Formatter.formatFileSize
import android.util.Log
import android.widget.Toast
import com.abedelazizshe.lightcompressorlibrary.CompressionListener
import com.abedelazizshe.lightcompressorlibrary.VideoCodec
@@ -34,6 +33,8 @@ import com.abedelazizshe.lightcompressorlibrary.VideoCompressor
import com.abedelazizshe.lightcompressorlibrary.config.AppSpecificStorageConfiguration
import com.abedelazizshe.lightcompressorlibrary.config.Configuration
import com.abedelazizshe.lightcompressorlibrary.config.VideoResizer
import com.vitorpamplona.quartz.utils.Log
import com.vitorpamplona.quartz.utils.LogLevel
import kotlinx.coroutines.suspendCancellableCoroutine
import kotlinx.coroutines.withTimeoutOrNull
import java.io.File
@@ -217,7 +218,7 @@ object VideoCompressionHelper {
if (path == null) {
applicationContext.notifyUser(
"Video compression succeeded, but path was null",
Log.WARN,
LogLevel.WARN,
)
if (continuation.isActive) continuation.resume(null)
return
@@ -237,7 +238,7 @@ object VideoCompressionHelper {
}
applicationContext.notifyUser(
"Compressed file larger than original. Using original.",
Log.WARN,
LogLevel.WARN,
)
if (continuation.isActive) {
continuation.resume(
@@ -276,7 +277,7 @@ object VideoCompressionHelper {
) {
applicationContext.notifyUser(
"Video compression failed: $failureMessage",
Log.ERROR,
LogLevel.ERROR,
)
if (continuation.isActive) continuation.resume(null)
}
@@ -306,16 +307,17 @@ object VideoCompressionHelper {
private fun Context.notifyUser(
message: String,
logLevel: Int = Log.DEBUG,
logLevel: LogLevel = LogLevel.DEBUG,
duration: Int = Toast.LENGTH_LONG,
) {
Handler(Looper.getMainLooper()).post {
Toast.makeText(this, message, duration).show()
}
when (logLevel) {
Log.ERROR -> Log.e(LOG_TAG, message)
Log.WARN -> Log.w(LOG_TAG, message)
else -> Log.d(LOG_TAG, message)
LogLevel.ERROR -> Log.e(LOG_TAG, message)
LogLevel.WARN -> Log.w(LOG_TAG, message)
LogLevel.INFO -> Log.i(LOG_TAG, message)
LogLevel.DEBUG -> Log.d(LOG_TAG, message)
}
}
@@ -25,7 +25,6 @@ import android.media.MediaCodecInfo
import android.media.MediaExtractor
import android.media.MediaFormat
import android.media.MediaMuxer
import android.util.Log
import be.tarsos.dsp.AudioDispatcher
import be.tarsos.dsp.AudioEvent
import be.tarsos.dsp.AudioProcessor
@@ -33,6 +32,7 @@ import be.tarsos.dsp.WaveformSimilarityBasedOverlapAdd
import be.tarsos.dsp.io.TarsosDSPAudioFloatConverter
import be.tarsos.dsp.io.TarsosDSPAudioFormat
import be.tarsos.dsp.resample.RateTransposer
import com.vitorpamplona.quartz.utils.Log
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.currentCoroutineContext
import kotlinx.coroutines.isActive
@@ -21,7 +21,6 @@
package com.vitorpamplona.amethyst.ui.actions.uploads
import android.media.MediaPlayer
import android.util.Log
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
@@ -60,6 +59,7 @@ import com.vitorpamplona.amethyst.R
import com.vitorpamplona.amethyst.ui.components.AudioWaveformReadOnly
import com.vitorpamplona.amethyst.ui.stringRes
import com.vitorpamplona.quartz.nipA0VoiceMessages.AudioMeta
import com.vitorpamplona.quartz.utils.Log
import kotlinx.coroutines.delay
import kotlinx.coroutines.isActive
import java.io.File
@@ -275,7 +275,7 @@ private fun ManageMediaPlayer(
try {
player?.stop()
} catch (e: IllegalStateException) {
Log.d("VoiceMessagePreview", "MediaPlayer stop failed (already stopped)", e)
Log.d("VoiceMessagePreview", "MediaPlayer stop failed (already stopped): ${e.message}")
}
player?.release()
onPlayerChanged(null)
@@ -20,7 +20,6 @@
*/
package com.vitorpamplona.amethyst.ui.screen.loggedIn.home.live
import android.util.Log
import androidx.compose.foundation.Canvas
import androidx.compose.foundation.layout.size
import androidx.compose.runtime.Composable
@@ -34,6 +33,7 @@ import com.vitorpamplona.amethyst.commons.model.emphChat.EphemeralChatChannel
import com.vitorpamplona.amethyst.commons.model.nip53LiveActivities.LiveActivitiesChannel
import com.vitorpamplona.amethyst.service.OnlineChecker
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
import com.vitorpamplona.quartz.utils.Log
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.withContext
@@ -101,6 +101,8 @@ import com.vitorpamplona.amethyst.desktop.ui.relay.RelayStatusCard
import com.vitorpamplona.amethyst.desktop.ui.settings.MediaServerSettings
import com.vitorpamplona.quartz.nip01Core.relay.normalizer.RelayUrlNormalizer
import com.vitorpamplona.quartz.nip47WalletConnect.Nip47WalletConnect
import com.vitorpamplona.quartz.utils.Log
import com.vitorpamplona.quartz.utils.LogLevel
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob
@@ -158,6 +160,7 @@ sealed class DesktopScreen {
}
fun main() {
Log.minLevel = LogLevel.DEBUG
DesktopImageLoaderSetup.setup()
Runtime.getRuntime().addShutdownHook(
Thread {