diff --git a/appconfig/src/main/kotlin/io/element/android/appconfig/VoiceMessageConfig.kt b/appconfig/src/main/kotlin/io/element/android/appconfig/VoiceMessageConfig.kt new file mode 100644 index 0000000000..a840079a5e --- /dev/null +++ b/appconfig/src/main/kotlin/io/element/android/appconfig/VoiceMessageConfig.kt @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2023 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.element.android.appconfig + +import kotlin.time.Duration.Companion.minutes + +object VoiceMessageConfig { + val maxVoiceMessageDuration = 30.minutes +} diff --git a/libraries/voicerecorder/impl/build.gradle.kts b/libraries/voicerecorder/impl/build.gradle.kts index 6ebfb28997..d73f06b868 100644 --- a/libraries/voicerecorder/impl/build.gradle.kts +++ b/libraries/voicerecorder/impl/build.gradle.kts @@ -31,6 +31,7 @@ dependencies { api(libs.opusencoder) implementation(libs.dagger) + implementation(projects.appconfig) implementation(projects.libraries.matrix.api) implementation(projects.libraries.core) implementation(projects.libraries.di) diff --git a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/VoiceRecorderImpl.kt b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/VoiceRecorderImpl.kt index 042ecacfbe..bc4e19d13e 100644 --- a/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/VoiceRecorderImpl.kt +++ b/libraries/voicerecorder/impl/src/main/kotlin/io/element/android/libraries/voicerecorder/impl/VoiceRecorderImpl.kt @@ -19,6 +19,7 @@ package io.element.android.libraries.voicerecorder.impl import android.Manifest import androidx.annotation.RequiresPermission import com.squareup.anvil.annotations.ContributesBinding +import io.element.android.appconfig.VoiceMessageConfig import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.coroutine.childScope import io.element.android.libraries.di.RoomScope @@ -94,7 +95,7 @@ class VoiceRecorderImpl @Inject constructor( val elapsedTime = startedAt.elapsedNow() - if (elapsedTime > 30.minutes) { + if (elapsedTime > VoiceMessageConfig.maxVoiceMessageDuration) { Timber.w("Voice message time limit reached") stopRecord(false) return@record diff --git a/libraries/voicerecorder/impl/src/test/kotlin/io/element/android/libraries/voicerecorder/impl/VoiceRecorderImplTest.kt b/libraries/voicerecorder/impl/src/test/kotlin/io/element/android/libraries/voicerecorder/impl/VoiceRecorderImplTest.kt index e3b2100ccc..d67a44f6f3 100644 --- a/libraries/voicerecorder/impl/src/test/kotlin/io/element/android/libraries/voicerecorder/impl/VoiceRecorderImplTest.kt +++ b/libraries/voicerecorder/impl/src/test/kotlin/io/element/android/libraries/voicerecorder/impl/VoiceRecorderImplTest.kt @@ -20,6 +20,7 @@ import android.media.AudioFormat import android.media.MediaRecorder import app.cash.turbine.test import com.google.common.truth.Truth.assertThat +import io.element.android.appconfig.VoiceMessageConfig import io.element.android.libraries.voicerecorder.api.VoiceRecorderState import io.element.android.libraries.voicerecorder.impl.audio.Audio import io.element.android.libraries.voicerecorder.impl.audio.AudioConfig @@ -77,8 +78,8 @@ class VoiceRecorderImplTest { voiceRecorder.startRecord() assertThat(awaitItem()).isEqualTo(VoiceRecorderState.Recording(0.minutes, listOf(1.0f))) - timeSource += 30.minutes - assertThat(awaitItem()).isEqualTo(VoiceRecorderState.Recording(30.minutes, listOf())) + timeSource += VoiceMessageConfig.maxVoiceMessageDuration + assertThat(awaitItem()).isEqualTo(VoiceRecorderState.Recording(VoiceMessageConfig.maxVoiceMessageDuration, listOf())) timeSource += 1.milliseconds assertThat(awaitItem()).isEqualTo( @@ -86,7 +87,7 @@ class VoiceRecorderImplTest { file = File(FILE_PATH), mimeType = "audio/ogg", waveform = List(100) { 1f }, - duration = 30.minutes, + duration = VoiceMessageConfig.maxVoiceMessageDuration, ) ) }