Skip to content

Commit 0b1d41e

Browse files
jonnyandrewElementBot
andauthored
Update voice message recording button behaviour (#1784)
Changes recording button behaviour so that - tapping the record button starts a recording and displays the stop button - tapping the stop button stops the recording - tapping the delete button cancels the recording - 'hold to record' tooltip is removed --------- Co-authored-by: ElementBot <[email protected]>
1 parent 1df3f61 commit 0b1d41e

File tree

37 files changed

+221
-576
lines changed

37 files changed

+221
-576
lines changed

changelog.d/1784.feature

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Update voice message recording behaviour. Instead of holding the record button, users can now tap the record button to start recording and tap again to stop recording.

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerView.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ import io.element.android.libraries.designsystem.preview.ElementPreview
3232
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
3333
import io.element.android.libraries.textcomposer.TextComposer
3434
import io.element.android.libraries.textcomposer.model.Message
35-
import io.element.android.libraries.textcomposer.model.PressEvent
35+
import io.element.android.libraries.textcomposer.model.VoiceMessageRecorderEvent
3636
import io.element.android.libraries.textcomposer.model.Suggestion
3737
import io.element.android.libraries.textcomposer.model.VoiceMessagePlayerEvent
3838
import kotlinx.coroutines.launch
@@ -77,8 +77,8 @@ internal fun MessageComposerView(
7777
}
7878
}
7979

80-
val onVoiceRecordButtonEvent = { press: PressEvent ->
81-
voiceMessageState.eventSink(VoiceMessageComposerEvents.RecordButtonEvent(press))
80+
val onVoiceRecorderEvent = { press: VoiceMessageRecorderEvent ->
81+
voiceMessageState.eventSink(VoiceMessageComposerEvents.RecorderEvent(press))
8282
}
8383

8484
val onSendVoiceMessage = {
@@ -107,7 +107,7 @@ internal fun MessageComposerView(
107107
onDismissTextFormatting = ::onDismissTextFormatting,
108108
enableTextFormatting = enableTextFormatting,
109109
enableVoiceMessages = enableVoiceMessages,
110-
onVoiceRecordButtonEvent = onVoiceRecordButtonEvent,
110+
onVoiceRecorderEvent = onVoiceRecorderEvent,
111111
onVoicePlayerEvent = onVoicePlayerEvent,
112112
onSendVoiceMessage = onSendVoiceMessage,
113113
onDeleteVoiceMessage = onDeleteVoiceMessage,

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerEvents.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@
1717
package io.element.android.features.messages.impl.voicemessages.composer
1818

1919
import androidx.lifecycle.Lifecycle
20-
import io.element.android.libraries.textcomposer.model.PressEvent
20+
import io.element.android.libraries.textcomposer.model.VoiceMessageRecorderEvent
2121
import io.element.android.libraries.textcomposer.model.VoiceMessagePlayerEvent
2222

2323
sealed interface VoiceMessageComposerEvents {
24-
data class RecordButtonEvent(
25-
val pressEvent: PressEvent
24+
data class RecorderEvent(
25+
val recorderEvent: VoiceMessageRecorderEvent
2626
): VoiceMessageComposerEvents
2727
data class PlayerEvent(
2828
val playerEvent: VoiceMessagePlayerEvent,

features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/voicemessages/composer/VoiceMessageComposerPresenter.kt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ import io.element.android.libraries.di.SingleIn
3737
import io.element.android.libraries.mediaupload.api.MediaSender
3838
import io.element.android.libraries.permissions.api.PermissionsEvents
3939
import io.element.android.libraries.permissions.api.PermissionsPresenter
40-
import io.element.android.libraries.textcomposer.model.PressEvent
40+
import io.element.android.libraries.textcomposer.model.VoiceMessageRecorderEvent
4141
import io.element.android.libraries.textcomposer.model.VoiceMessagePlayerEvent
4242
import io.element.android.libraries.textcomposer.model.VoiceMessageState
4343
import io.element.android.libraries.voicerecorder.api.VoiceRecorder
@@ -95,10 +95,10 @@ class VoiceMessageComposerPresenter @Inject constructor(
9595
}
9696
}
9797

98-
val onRecordButtonPress = { event: VoiceMessageComposerEvents.RecordButtonEvent ->
98+
val onVoiceMessageRecorderEvent = { event: VoiceMessageComposerEvents.RecorderEvent ->
9999
val permissionGranted = permissionState.permissionGranted
100-
when (event.pressEvent) {
101-
PressEvent.PressStart -> {
100+
when (event.recorderEvent) {
101+
VoiceMessageRecorderEvent.Start -> {
102102
Timber.v("Voice message record button pressed")
103103
when {
104104
permissionGranted -> {
@@ -110,12 +110,12 @@ class VoiceMessageComposerPresenter @Inject constructor(
110110
}
111111
}
112112
}
113-
PressEvent.LongPressEnd -> {
114-
Timber.v("Voice message record button released")
113+
VoiceMessageRecorderEvent.Stop -> {
114+
Timber.v("Voice message stop button pressed")
115115
localCoroutineScope.finishRecording()
116116
}
117-
PressEvent.Tapped -> {
118-
Timber.v("Voice message record button tapped")
117+
VoiceMessageRecorderEvent.Cancel -> {
118+
Timber.v("Voice message cancel button tapped")
119119
localCoroutineScope.cancelRecording()
120120
}
121121
}
@@ -163,7 +163,7 @@ class VoiceMessageComposerPresenter @Inject constructor(
163163

164164
val handleEvents: (VoiceMessageComposerEvents) -> Unit = { event ->
165165
when (event) {
166-
is VoiceMessageComposerEvents.RecordButtonEvent -> onRecordButtonPress(event)
166+
is VoiceMessageComposerEvents.RecorderEvent -> onVoiceMessageRecorderEvent(event)
167167
is VoiceMessageComposerEvents.PlayerEvent -> onPlayerEvent(event.playerEvent)
168168
is VoiceMessageComposerEvents.SendVoiceMessage -> localCoroutineScope.launch {
169169
onSendButtonPress()

0 commit comments

Comments
 (0)