From 03ac0f1f0324db27f02d83f27d97f76b1dfc397d Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Tue, 18 Oct 2022 11:00:21 +0200 Subject: [PATCH 01/11] Move Voice Broadcast feature flag to labs settings --- library/ui-strings/src/main/res/values/strings.xml | 2 ++ .../features/debug/features/DebugFeaturesStateFactory.kt | 5 ----- .../app/features/debug/features/DebugVectorFeatures.kt | 4 ---- vector-config/src/main/res/values/config-settings.xml | 2 ++ .../src/main/java/im/vector/app/features/VectorFeatures.kt | 2 -- .../home/room/detail/composer/MessageComposerFragment.kt | 2 +- .../im/vector/app/features/settings/VectorPreferences.kt | 5 +++++ vector/src/main/res/xml/vector_settings_labs.xml | 7 +++++++ 8 files changed, 17 insertions(+), 12 deletions(-) diff --git a/library/ui-strings/src/main/res/values/strings.xml b/library/ui-strings/src/main/res/values/strings.xml index 74ec175d17..1fda57180d 100644 --- a/library/ui-strings/src/main/res/values/strings.xml +++ b/library/ui-strings/src/main/res/values/strings.xml @@ -3346,6 +3346,8 @@ Have greater visibility and control over all your sessions. Enable client info recording Record the client name, version, and url to recognise sessions more easily in session manager. + Enable Voice broadcast (under active development) + Be able to record and send voice broadcast in room timeline. Only ended voice broadcast can be listened (listen live broadcast is not correctly supported for the moment) %s\nis looking a little empty. diff --git a/vector-app/src/debug/java/im/vector/app/features/debug/features/DebugFeaturesStateFactory.kt b/vector-app/src/debug/java/im/vector/app/features/debug/features/DebugFeaturesStateFactory.kt index 16e26ff3b5..0ce4416add 100644 --- a/vector-app/src/debug/java/im/vector/app/features/debug/features/DebugFeaturesStateFactory.kt +++ b/vector-app/src/debug/java/im/vector/app/features/debug/features/DebugFeaturesStateFactory.kt @@ -100,11 +100,6 @@ class DebugFeaturesStateFactory @Inject constructor( key = DebugFeatureKeys.reciprocateQrCodeLogin, factory = VectorFeatures::isReciprocateQrCodeLogin ), - createBooleanFeature( - label = "Enable Voice Broadcast", - key = DebugFeatureKeys.voiceBroadcastEnabled, - factory = VectorFeatures::isVoiceBroadcastEnabled - ), ) ) } diff --git a/vector-app/src/debug/java/im/vector/app/features/debug/features/DebugVectorFeatures.kt b/vector-app/src/debug/java/im/vector/app/features/debug/features/DebugVectorFeatures.kt index 5c497c24ec..487094b238 100644 --- a/vector-app/src/debug/java/im/vector/app/features/debug/features/DebugVectorFeatures.kt +++ b/vector-app/src/debug/java/im/vector/app/features/debug/features/DebugVectorFeatures.kt @@ -85,9 +85,6 @@ class DebugVectorFeatures( override fun isReciprocateQrCodeLogin() = read(DebugFeatureKeys.reciprocateQrCodeLogin) ?: vectorFeatures.isReciprocateQrCodeLogin() - override fun isVoiceBroadcastEnabled(): Boolean = read(DebugFeatureKeys.voiceBroadcastEnabled) - ?: vectorFeatures.isVoiceBroadcastEnabled() - fun override(value: T?, key: Preferences.Key) = updatePreferences { if (value == null) { it.remove(key) @@ -150,5 +147,4 @@ object DebugFeatureKeys { val qrCodeLoginEnabled = booleanPreferencesKey("qr-code-login-enabled") val qrCodeLoginForAllServers = booleanPreferencesKey("qr-code-login-for-all-servers") val reciprocateQrCodeLogin = booleanPreferencesKey("reciprocate-qr-code-login") - val voiceBroadcastEnabled = booleanPreferencesKey("voice-broadcast-enabled") } diff --git a/vector-config/src/main/res/values/config-settings.xml b/vector-config/src/main/res/values/config-settings.xml index 7b7aac8156..504c587b8d 100755 --- a/vector-config/src/main/res/values/config-settings.xml +++ b/vector-config/src/main/res/values/config-settings.xml @@ -49,6 +49,8 @@ false true false + true + false diff --git a/vector/src/main/java/im/vector/app/features/VectorFeatures.kt b/vector/src/main/java/im/vector/app/features/VectorFeatures.kt index 255ac6d188..59bccc25fc 100644 --- a/vector/src/main/java/im/vector/app/features/VectorFeatures.kt +++ b/vector/src/main/java/im/vector/app/features/VectorFeatures.kt @@ -43,7 +43,6 @@ interface VectorFeatures { fun isQrCodeLoginEnabled(): Boolean fun isQrCodeLoginForAllServers(): Boolean fun isReciprocateQrCodeLogin(): Boolean - fun isVoiceBroadcastEnabled(): Boolean } class DefaultVectorFeatures : VectorFeatures { @@ -62,5 +61,4 @@ class DefaultVectorFeatures : VectorFeatures { override fun isQrCodeLoginEnabled(): Boolean = true override fun isQrCodeLoginForAllServers(): Boolean = false override fun isReciprocateQrCodeLogin(): Boolean = false - override fun isVoiceBroadcastEnabled(): Boolean = false } diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/composer/MessageComposerFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/composer/MessageComposerFragment.kt index 59f9737542..55ec922a57 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/composer/MessageComposerFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/composer/MessageComposerFragment.kt @@ -310,7 +310,7 @@ class MessageComposerFragment : VectorBaseFragment(), A ) attachmentTypeSelector.setAttachmentVisibility( AttachmentTypeSelectorView.Type.VOICE_BROADCAST, - vectorFeatures.isVoiceBroadcastEnabled(), // TODO check user permission + vectorPreferences.isVoiceBroadcastEnabled(), // TODO check user permission ) } attachmentTypeSelector.show(composer.attachmentButton) diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt b/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt index 89fcda142a..5d0f981314 100755 --- a/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt +++ b/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt @@ -74,6 +74,7 @@ class VectorPreferences @Inject constructor( const val SETTINGS_LABS_RICH_TEXT_EDITOR_KEY = "SETTINGS_LABS_RICH_TEXT_EDITOR_KEY" const val SETTINGS_LABS_NEW_SESSION_MANAGER_KEY = "SETTINGS_LABS_NEW_SESSION_MANAGER_KEY" const val SETTINGS_LABS_CLIENT_INFO_RECORDING_KEY = "SETTINGS_LABS_CLIENT_INFO_RECORDING_KEY" + const val SETTINGS_LABS_VOICE_BROADCAST_KEY = "SETTINGS_LABS_VOICE_BROADCAST_KEY" const val SETTINGS_CRYPTOGRAPHY_PREFERENCE_KEY = "SETTINGS_CRYPTOGRAPHY_PREFERENCE_KEY" const val SETTINGS_CRYPTOGRAPHY_DIVIDER_PREFERENCE_KEY = "SETTINGS_CRYPTOGRAPHY_DIVIDER_PREFERENCE_KEY" const val SETTINGS_CRYPTOGRAPHY_MANAGE_PREFERENCE_KEY = "SETTINGS_CRYPTOGRAPHY_MANAGE_PREFERENCE_KEY" @@ -1203,4 +1204,8 @@ class VectorPreferences @Inject constructor( fun isRichTextEditorEnabled(): Boolean { return defaultPrefs.getBoolean(SETTINGS_LABS_RICH_TEXT_EDITOR_KEY, getDefault(R.bool.settings_labs_rich_text_editor_default)) } + + fun isVoiceBroadcastEnabled(): Boolean { + return defaultPrefs.getBoolean(SETTINGS_LABS_VOICE_BROADCAST_KEY, getDefault(R.bool.settings_labs_enable_voice_broadcast_default)) + } } diff --git a/vector/src/main/res/xml/vector_settings_labs.xml b/vector/src/main/res/xml/vector_settings_labs.xml index 5b519bdd91..15a255753a 100644 --- a/vector/src/main/res/xml/vector_settings_labs.xml +++ b/vector/src/main/res/xml/vector_settings_labs.xml @@ -117,4 +117,11 @@ android:title="@string/labs_enable_client_info_recording_title" app:isPreferenceVisible="@bool/settings_labs_client_info_recording_visible" /> + + From 050dff6548abfb4c9c3d38c6daa6074ed1d4f985 Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Tue, 18 Oct 2022 11:05:24 +0200 Subject: [PATCH 02/11] Voice Broadcast - Rename voice message files with sequence number --- .../features/voicebroadcast/VoiceBroadcastRecorder.kt | 3 ++- .../features/voicebroadcast/VoiceBroadcastRecorderQ.kt | 6 +++++- .../voicebroadcast/usecase/StartVoiceBroadcastUseCase.kt | 9 +++++---- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/voicebroadcast/VoiceBroadcastRecorder.kt b/vector/src/main/java/im/vector/app/features/voicebroadcast/VoiceBroadcastRecorder.kt index 2668501a8d..37ff920c57 100644 --- a/vector/src/main/java/im/vector/app/features/voicebroadcast/VoiceBroadcastRecorder.kt +++ b/vector/src/main/java/im/vector/app/features/voicebroadcast/VoiceBroadcastRecorder.kt @@ -16,6 +16,7 @@ package im.vector.app.features.voicebroadcast +import androidx.annotation.IntRange import im.vector.app.features.voice.VoiceRecorder import java.io.File @@ -26,6 +27,6 @@ interface VoiceBroadcastRecorder : VoiceRecorder { fun startRecord(roomId: String, chunkLength: Int) fun interface Listener { - fun onVoiceMessageCreated(file: File) + fun onVoiceMessageCreated(file: File, @IntRange(from = 1) sequence: Int) } } diff --git a/vector/src/main/java/im/vector/app/features/voicebroadcast/VoiceBroadcastRecorderQ.kt b/vector/src/main/java/im/vector/app/features/voicebroadcast/VoiceBroadcastRecorderQ.kt index 620db721c9..404b112574 100644 --- a/vector/src/main/java/im/vector/app/features/voicebroadcast/VoiceBroadcastRecorderQ.kt +++ b/vector/src/main/java/im/vector/app/features/voicebroadcast/VoiceBroadcastRecorderQ.kt @@ -29,6 +29,7 @@ class VoiceBroadcastRecorderQ( ) : AbstractVoiceRecorderQ(context), VoiceBroadcastRecorder { private var maxFileSize = 0L // zero or negative for no limit + private var currentSequence = 0 override var listener: VoiceBroadcastRecorder.Listener? = null @@ -51,6 +52,7 @@ class VoiceBroadcastRecorderQ( override fun startRecord(roomId: String, chunkLength: Int) { maxFileSize = (chunkLength * audioEncodingBitRate / 8).toLong() + currentSequence = 1 startRecord(roomId) } @@ -58,6 +60,7 @@ class VoiceBroadcastRecorderQ( super.stopRecord() notifyOutputFileCreated() listener = null + currentSequence = 0 } override fun release() { @@ -71,11 +74,12 @@ class VoiceBroadcastRecorderQ( private fun onNextOutputFileStarted() { notifyOutputFileCreated() + currentSequence++ } private fun notifyOutputFileCreated() { outputFile?.let { - listener?.onVoiceMessageCreated(it) + listener?.onVoiceMessageCreated(it, currentSequence) outputFile = nextOutputFile nextOutputFile = null } diff --git a/vector/src/main/java/im/vector/app/features/voicebroadcast/usecase/StartVoiceBroadcastUseCase.kt b/vector/src/main/java/im/vector/app/features/voicebroadcast/usecase/StartVoiceBroadcastUseCase.kt index 2a306bcd28..780150d5e7 100644 --- a/vector/src/main/java/im/vector/app/features/voicebroadcast/usecase/StartVoiceBroadcastUseCase.kt +++ b/vector/src/main/java/im/vector/app/features/voicebroadcast/usecase/StartVoiceBroadcastUseCase.kt @@ -79,20 +79,21 @@ class StartVoiceBroadcastUseCase @Inject constructor( } private fun startRecording(room: Room, eventId: String, chunkLength: Int) { - voiceBroadcastRecorder?.listener = VoiceBroadcastRecorder.Listener { file -> - sendVoiceFile(room, file, eventId) + voiceBroadcastRecorder?.listener = VoiceBroadcastRecorder.Listener { file, sequence -> + sendVoiceFile(room, file, eventId, sequence) } voiceBroadcastRecorder?.startRecord(room.roomId, chunkLength) } - private fun sendVoiceFile(room: Room, voiceMessageFile: File, referenceEventId: String) { + private fun sendVoiceFile(room: Room, voiceMessageFile: File, referenceEventId: String, sequence: Int) { val outputFileUri = FileProvider.getUriForFile( context, buildMeta.applicationId + ".fileProvider", voiceMessageFile, - "Voice message.${voiceMessageFile.extension}" + "Voice Broadcast Part ($sequence).${voiceMessageFile.extension}" ) val audioType = outputFileUri.toMultiPickerAudioType(context) ?: return + // TODO put sequence in event content room.sendService().sendMedia( attachment = audioType.toContentAttachmentData(isVoiceMessage = true), compressBeforeSending = false, From 036511400e93af8b217c889609588b9350b3879e Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Tue, 18 Oct 2022 11:12:26 +0200 Subject: [PATCH 03/11] Voice Broadcast - Hide labs setting in Android < 10 --- .../src/main/res/values-v29/config-settings.xml | 13 +++++++++++++ .../src/main/res/values/config-settings.xml | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100755 vector-config/src/main/res/values-v29/config-settings.xml diff --git a/vector-config/src/main/res/values-v29/config-settings.xml b/vector-config/src/main/res/values-v29/config-settings.xml new file mode 100755 index 0000000000..051e6e9e81 --- /dev/null +++ b/vector-config/src/main/res/values-v29/config-settings.xml @@ -0,0 +1,13 @@ + + + + + + + true + + diff --git a/vector-config/src/main/res/values/config-settings.xml b/vector-config/src/main/res/values/config-settings.xml index 504c587b8d..f2169e7e62 100755 --- a/vector-config/src/main/res/values/config-settings.xml +++ b/vector-config/src/main/res/values/config-settings.xml @@ -49,7 +49,7 @@ false true false - true + false false From ecc22a1401051f063b8c5ff54a7d4cb2d1d0f654 Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Tue, 18 Oct 2022 11:23:01 +0200 Subject: [PATCH 04/11] Voice Broadcast - Change default chunk duration --- .../app/features/voicebroadcast/VoiceBroadcastConstants.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vector/src/main/java/im/vector/app/features/voicebroadcast/VoiceBroadcastConstants.kt b/vector/src/main/java/im/vector/app/features/voicebroadcast/VoiceBroadcastConstants.kt index 3a9aac12d5..d445dfdfbe 100644 --- a/vector/src/main/java/im/vector/app/features/voicebroadcast/VoiceBroadcastConstants.kt +++ b/vector/src/main/java/im/vector/app/features/voicebroadcast/VoiceBroadcastConstants.kt @@ -22,5 +22,5 @@ object VoiceBroadcastConstants { const val STATE_ROOM_VOICE_BROADCAST_INFO = "io.element.voice_broadcast_info" /** Default voice broadcast chunk duration, in seconds. */ - const val DEFAULT_CHUNK_LENGTH_IN_SECONDS = 30 + const val DEFAULT_CHUNK_LENGTH_IN_SECONDS = 120 } From a03be5d02fface951a4da4cc51bed25e19c26ec2 Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Tue, 18 Oct 2022 11:29:00 +0200 Subject: [PATCH 05/11] Add changelog --- changelog.d/7393.wip | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/7393.wip diff --git a/changelog.d/7393.wip b/changelog.d/7393.wip new file mode 100644 index 0000000000..b2112be5e9 --- /dev/null +++ b/changelog.d/7393.wip @@ -0,0 +1 @@ +[Voice Broadcast] Move the feature flag to the labs From 5a749bdccf262aac15485977b8973636af408e2d Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Tue, 18 Oct 2022 20:49:26 +0200 Subject: [PATCH 06/11] Voice Broadcast - Update labs description --- library/ui-strings/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/ui-strings/src/main/res/values/strings.xml b/library/ui-strings/src/main/res/values/strings.xml index 1fda57180d..ba83a4553c 100644 --- a/library/ui-strings/src/main/res/values/strings.xml +++ b/library/ui-strings/src/main/res/values/strings.xml @@ -3347,7 +3347,7 @@ Enable client info recording Record the client name, version, and url to recognise sessions more easily in session manager. Enable Voice broadcast (under active development) - Be able to record and send voice broadcast in room timeline. Only ended voice broadcast can be listened (listen live broadcast is not correctly supported for the moment) + Be able to record and send voice broadcast in room timeline.‡ %s\nis looking a little empty. From 63c02c6fef0faa5277273ad5280e8ecd75b43f43 Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Tue, 18 Oct 2022 21:02:58 +0200 Subject: [PATCH 07/11] Voice Broadcast - Restore feature flag and enable it by default --- .../app/features/debug/features/DebugFeaturesStateFactory.kt | 5 +++++ .../app/features/debug/features/DebugVectorFeatures.kt | 4 ++++ .../src/main/java/im/vector/app/features/VectorFeatures.kt | 2 ++ .../im/vector/app/features/settings/VectorPreferences.kt | 3 ++- .../app/features/settings/labs/VectorSettingsLabsFragment.kt | 4 ++++ 5 files changed, 17 insertions(+), 1 deletion(-) diff --git a/vector-app/src/debug/java/im/vector/app/features/debug/features/DebugFeaturesStateFactory.kt b/vector-app/src/debug/java/im/vector/app/features/debug/features/DebugFeaturesStateFactory.kt index 0ce4416add..16e26ff3b5 100644 --- a/vector-app/src/debug/java/im/vector/app/features/debug/features/DebugFeaturesStateFactory.kt +++ b/vector-app/src/debug/java/im/vector/app/features/debug/features/DebugFeaturesStateFactory.kt @@ -100,6 +100,11 @@ class DebugFeaturesStateFactory @Inject constructor( key = DebugFeatureKeys.reciprocateQrCodeLogin, factory = VectorFeatures::isReciprocateQrCodeLogin ), + createBooleanFeature( + label = "Enable Voice Broadcast", + key = DebugFeatureKeys.voiceBroadcastEnabled, + factory = VectorFeatures::isVoiceBroadcastEnabled + ), ) ) } diff --git a/vector-app/src/debug/java/im/vector/app/features/debug/features/DebugVectorFeatures.kt b/vector-app/src/debug/java/im/vector/app/features/debug/features/DebugVectorFeatures.kt index 487094b238..5c497c24ec 100644 --- a/vector-app/src/debug/java/im/vector/app/features/debug/features/DebugVectorFeatures.kt +++ b/vector-app/src/debug/java/im/vector/app/features/debug/features/DebugVectorFeatures.kt @@ -85,6 +85,9 @@ class DebugVectorFeatures( override fun isReciprocateQrCodeLogin() = read(DebugFeatureKeys.reciprocateQrCodeLogin) ?: vectorFeatures.isReciprocateQrCodeLogin() + override fun isVoiceBroadcastEnabled(): Boolean = read(DebugFeatureKeys.voiceBroadcastEnabled) + ?: vectorFeatures.isVoiceBroadcastEnabled() + fun override(value: T?, key: Preferences.Key) = updatePreferences { if (value == null) { it.remove(key) @@ -147,4 +150,5 @@ object DebugFeatureKeys { val qrCodeLoginEnabled = booleanPreferencesKey("qr-code-login-enabled") val qrCodeLoginForAllServers = booleanPreferencesKey("qr-code-login-for-all-servers") val reciprocateQrCodeLogin = booleanPreferencesKey("reciprocate-qr-code-login") + val voiceBroadcastEnabled = booleanPreferencesKey("voice-broadcast-enabled") } diff --git a/vector/src/main/java/im/vector/app/features/VectorFeatures.kt b/vector/src/main/java/im/vector/app/features/VectorFeatures.kt index 59bccc25fc..95cf272abd 100644 --- a/vector/src/main/java/im/vector/app/features/VectorFeatures.kt +++ b/vector/src/main/java/im/vector/app/features/VectorFeatures.kt @@ -43,6 +43,7 @@ interface VectorFeatures { fun isQrCodeLoginEnabled(): Boolean fun isQrCodeLoginForAllServers(): Boolean fun isReciprocateQrCodeLogin(): Boolean + fun isVoiceBroadcastEnabled(): Boolean } class DefaultVectorFeatures : VectorFeatures { @@ -61,4 +62,5 @@ class DefaultVectorFeatures : VectorFeatures { override fun isQrCodeLoginEnabled(): Boolean = true override fun isQrCodeLoginForAllServers(): Boolean = false override fun isReciprocateQrCodeLogin(): Boolean = false + override fun isVoiceBroadcastEnabled(): Boolean = true } diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt b/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt index 5d0f981314..2dc8b12160 100755 --- a/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt +++ b/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt @@ -1206,6 +1206,7 @@ class VectorPreferences @Inject constructor( } fun isVoiceBroadcastEnabled(): Boolean { - return defaultPrefs.getBoolean(SETTINGS_LABS_VOICE_BROADCAST_KEY, getDefault(R.bool.settings_labs_enable_voice_broadcast_default)) + return vectorFeatures.isVoiceBroadcastEnabled() && + defaultPrefs.getBoolean(SETTINGS_LABS_VOICE_BROADCAST_KEY, getDefault(R.bool.settings_labs_enable_voice_broadcast_default)) } } diff --git a/vector/src/main/java/im/vector/app/features/settings/labs/VectorSettingsLabsFragment.kt b/vector/src/main/java/im/vector/app/features/settings/labs/VectorSettingsLabsFragment.kt index 6c31e32567..f9a5a5f9cc 100644 --- a/vector/src/main/java/im/vector/app/features/settings/labs/VectorSettingsLabsFragment.kt +++ b/vector/src/main/java/im/vector/app/features/settings/labs/VectorSettingsLabsFragment.kt @@ -90,6 +90,10 @@ class VectorSettingsLabsFragment : } } + findPreference(VectorPreferences.SETTINGS_LABS_VOICE_BROADCAST_KEY)?.let { pref -> + pref.isVisible = vectorFeatures.isVoiceBroadcastEnabled() + } + configureUnreadNotificationsAsTabPreference() configureEnableClientInfoRecordingPreference() } From 90803be3eec728c896b097b8194a649920d54284 Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Tue, 18 Oct 2022 21:06:59 +0200 Subject: [PATCH 08/11] Voice Broadcast - Move Android API check on fragment --- .../src/main/res/values-v29/config-settings.xml | 13 ------------- .../src/main/res/values/config-settings.xml | 2 +- .../settings/labs/VectorSettingsLabsFragment.kt | 4 +++- 3 files changed, 4 insertions(+), 15 deletions(-) delete mode 100755 vector-config/src/main/res/values-v29/config-settings.xml diff --git a/vector-config/src/main/res/values-v29/config-settings.xml b/vector-config/src/main/res/values-v29/config-settings.xml deleted file mode 100755 index 051e6e9e81..0000000000 --- a/vector-config/src/main/res/values-v29/config-settings.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - true - - diff --git a/vector-config/src/main/res/values/config-settings.xml b/vector-config/src/main/res/values/config-settings.xml index f2169e7e62..504c587b8d 100755 --- a/vector-config/src/main/res/values/config-settings.xml +++ b/vector-config/src/main/res/values/config-settings.xml @@ -49,7 +49,7 @@ false true false - false + true false diff --git a/vector/src/main/java/im/vector/app/features/settings/labs/VectorSettingsLabsFragment.kt b/vector/src/main/java/im/vector/app/features/settings/labs/VectorSettingsLabsFragment.kt index f9a5a5f9cc..c10411301f 100644 --- a/vector/src/main/java/im/vector/app/features/settings/labs/VectorSettingsLabsFragment.kt +++ b/vector/src/main/java/im/vector/app/features/settings/labs/VectorSettingsLabsFragment.kt @@ -16,6 +16,7 @@ package im.vector.app.features.settings.labs +import android.os.Build import android.os.Bundle import android.text.method.LinkMovementMethod import android.widget.TextView @@ -91,7 +92,8 @@ class VectorSettingsLabsFragment : } findPreference(VectorPreferences.SETTINGS_LABS_VOICE_BROADCAST_KEY)?.let { pref -> - pref.isVisible = vectorFeatures.isVoiceBroadcastEnabled() + // Voice Broadcast recording is not available on Android < 10 + pref.isVisible = Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && vectorFeatures.isVoiceBroadcastEnabled() } configureUnreadNotificationsAsTabPreference() From 2e4034ffc105d000f1efc5976c08fdb76d9ed116 Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Tue, 18 Oct 2022 22:05:45 +0200 Subject: [PATCH 09/11] Remove extra character --- library/ui-strings/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/ui-strings/src/main/res/values/strings.xml b/library/ui-strings/src/main/res/values/strings.xml index ba83a4553c..61779036be 100644 --- a/library/ui-strings/src/main/res/values/strings.xml +++ b/library/ui-strings/src/main/res/values/strings.xml @@ -3347,7 +3347,7 @@ Enable client info recording Record the client name, version, and url to recognise sessions more easily in session manager. Enable Voice broadcast (under active development) - Be able to record and send voice broadcast in room timeline.‡ + Be able to record and send voice broadcast in room timeline. %s\nis looking a little empty. From 096b423cc1ebd3774c40ae8cc9604aa50da57d24 Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Tue, 18 Oct 2022 22:10:18 +0200 Subject: [PATCH 10/11] Update changelog wording --- changelog.d/7393.wip | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog.d/7393.wip b/changelog.d/7393.wip index b2112be5e9..7d82dc5769 100644 --- a/changelog.d/7393.wip +++ b/changelog.d/7393.wip @@ -1 +1 @@ -[Voice Broadcast] Move the feature flag to the labs +[Voice Broadcast] Enable the feature (behind a lab flag and only for Android 10 and up) From cafbb17caaa9b5b1799b88bd679829e1fca05a03 Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Tue, 18 Oct 2022 22:37:37 +0200 Subject: [PATCH 11/11] Change wording to lowercase --- library/ui-strings/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/ui-strings/src/main/res/values/strings.xml b/library/ui-strings/src/main/res/values/strings.xml index 61779036be..fac36ffa52 100644 --- a/library/ui-strings/src/main/res/values/strings.xml +++ b/library/ui-strings/src/main/res/values/strings.xml @@ -3346,7 +3346,7 @@ Have greater visibility and control over all your sessions. Enable client info recording Record the client name, version, and url to recognise sessions more easily in session manager. - Enable Voice broadcast (under active development) + Enable voice broadcast (under active development) Be able to record and send voice broadcast in room timeline.