Ensure sending pauses audio

This commit is contained in:
jonnyandrew 2023-10-27 15:16:58 +01:00
parent 1683049b0c
commit e3bb3c55b6
2 changed files with 24 additions and 0 deletions

View file

@ -149,6 +149,7 @@ class VoiceMessageComposerPresenter @Inject constructor(
return@lambda return@lambda
} }
isSending = true isSending = true
player.pause()
appCoroutineScope.sendMessage( appCoroutineScope.sendMessage(
file = finishedState.file, file = finishedState.file,
mimeType = finishedState.mimeType, mimeType = finishedState.mimeType,

View file

@ -251,6 +251,29 @@ class VoiceMessageComposerPresenterTest {
} }
} }
@Test
fun `present - send while playing`() = runTest {
val presenter = createVoiceMessageComposerPresenter()
moleculeFlow(RecompositionMode.Immediate) {
presenter.present()
}.test {
awaitItem().eventSink(VoiceMessageComposerEvents.RecordButtonEvent(PressEvent.PressStart))
awaitItem().eventSink(VoiceMessageComposerEvents.RecordButtonEvent(PressEvent.LongPressEnd))
awaitItem().eventSink(VoiceMessageComposerEvents.PlayerEvent(VoiceMessagePlayerEvent.Play))
awaitItem().eventSink(VoiceMessageComposerEvents.SendVoiceMessage)
assertThat(awaitItem().voiceMessageState).isEqualTo(aPreviewState(
isSending = true, isPlaying = false,
))
val finalState = awaitItem()
assertThat(finalState.voiceMessageState).isEqualTo(VoiceMessageState.Idle)
assertThat(matrixRoom.sendMediaCount).isEqualTo(1)
voiceRecorder.assertCalls(started = 1, stopped = 1, deleted = 1)
testPauseAndDestroy(finalState)
}
}
@Test @Test
fun `present - send recording before previous completed, waits`() = runTest { fun `present - send recording before previous completed, waits`() = runTest {
val presenter = createVoiceMessageComposerPresenter() val presenter = createVoiceMessageComposerPresenter()