diff --git a/app/src/main/java/com/bitchat/android/features/media/MediaConstraints.kt b/app/src/main/java/com/bitchat/android/features/media/MediaConstraints.kt index 1b068594..855c78b7 100644 --- a/app/src/main/java/com/bitchat/android/features/media/MediaConstraints.kt +++ b/app/src/main/java/com/bitchat/android/features/media/MediaConstraints.kt @@ -4,5 +4,9 @@ object MediaConstraints { // Global configurable media size limit (in bytes) // Change this value to adjust the max size for all media transfers const val MAX_MEDIA_BYTES: Long = 1L * 1024L * 1024L // 1 MB -} + // Maximum voice recording duration + // Centralizes the limit used for timer display and auto-stop logic + const val MAX_RECORDING_SECONDS: Int = 30 + const val MAX_RECORDING_MS: Long = MAX_RECORDING_SECONDS * 1000L +} diff --git a/app/src/main/java/com/bitchat/android/ui/InputComponents.kt b/app/src/main/java/com/bitchat/android/ui/InputComponents.kt index f3a3b216..8199819b 100644 --- a/app/src/main/java/com/bitchat/android/ui/InputComponents.kt +++ b/app/src/main/java/com/bitchat/android/ui/InputComponents.kt @@ -241,7 +241,7 @@ fun MessageInput( val secs = (elapsedMs / 1000).toInt() val mm = secs / 60 val ss = secs % 60 - val maxSecs = 10 // 10 second max recording time + val maxSecs = com.bitchat.android.features.media.MediaConstraints.MAX_RECORDING_SECONDS val maxMm = maxSecs / 60 val maxSs = maxSecs % 60 Text( diff --git a/app/src/main/java/com/bitchat/android/ui/VoiceInputComponents.kt b/app/src/main/java/com/bitchat/android/ui/VoiceInputComponents.kt index 03ab53aa..be87d7b2 100644 --- a/app/src/main/java/com/bitchat/android/ui/VoiceInputComponents.kt +++ b/app/src/main/java/com/bitchat/android/ui/VoiceInputComponents.kt @@ -20,6 +20,7 @@ import androidx.compose.ui.hapticfeedback.HapticFeedbackType import androidx.compose.ui.unit.dp import com.bitchat.android.features.voice.VoiceRecorder import com.google.accompanist.permissions.ExperimentalPermissionsApi +import com.bitchat.android.features.media.MediaConstraints import com.google.accompanist.permissions.PermissionStatus import com.google.accompanist.permissions.rememberPermissionState import kotlinx.coroutines.Job @@ -82,8 +83,8 @@ fun VoiceRecordButton( val amp = recorder?.pollAmplitude() ?: 0 val elapsedMs = (System.currentTimeMillis() - recordingStart).coerceAtLeast(0L) latestOnAmplitude.value(amp, elapsedMs) - // Auto-stop after 10 seconds - if (elapsedMs >= 10_000 && isRecording) { + // Auto-stop after configured max duration + if (elapsedMs >= MediaConstraints.MAX_RECORDING_MS && isRecording) { val file = recorder?.stop() isRecording = false recorder = null