From 250d89ca0a08dfcdf14eb60f40666760e58ac804 Mon Sep 17 00:00:00 2001 From: davotoula Date: Sat, 28 Mar 2026 01:15:09 +0100 Subject: [PATCH] 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 --- .../com/vitorpamplona/amethyst/Amethyst.kt | 2 ++ .../service/uploads/VideoCompressionHelper.kt | 18 ++++++++++-------- .../ui/actions/uploads/VoiceAnonymizer.kt | 2 +- .../ui/actions/uploads/VoiceMessagePreview.kt | 4 ++-- .../loggedIn/home/live/LiveStatusIndicator.kt | 2 +- .../com/vitorpamplona/amethyst/desktop/Main.kt | 3 +++ 6 files changed, 19 insertions(+), 12 deletions(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/Amethyst.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/Amethyst.kt index 5c90cfd7f..b6a8b5f93 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/Amethyst.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/Amethyst.kt @@ -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") } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/VideoCompressionHelper.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/VideoCompressionHelper.kt index 2f2e3adc5..90a559045 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/VideoCompressionHelper.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/service/uploads/VideoCompressionHelper.kt @@ -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) } } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/VoiceAnonymizer.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/VoiceAnonymizer.kt index a8e6ff782..f9fd2fc65 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/VoiceAnonymizer.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/VoiceAnonymizer.kt @@ -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 diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/VoiceMessagePreview.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/VoiceMessagePreview.kt index c87d34b75..7603e0864 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/VoiceMessagePreview.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/uploads/VoiceMessagePreview.kt @@ -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) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/live/LiveStatusIndicator.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/live/LiveStatusIndicator.kt index fdf604366..04365cac6 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/live/LiveStatusIndicator.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/home/live/LiveStatusIndicator.kt @@ -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 diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/Main.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/Main.kt index 4c73e002b..ee2123873 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/Main.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/Main.kt @@ -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 {