Skip to content

Commit fb837fe

Browse files
authored
Keep screen on while recording voicebroadcast (#8313)
1 parent 99aa949 commit fb837fe

File tree

7 files changed

+17
-9
lines changed

7 files changed

+17
-9
lines changed

changelog.d/8313.bugfix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Keep screen on while recording voicebroadcast

vector/src/main/java/im/vector/app/features/home/room/detail/composer/AudioMessageHelper.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ class AudioMessageHelper @Inject constructor(
239239
val percentage = currentPosition.toFloat() / totalDuration
240240
playbackTracker.updatePlayingAtPlaybackTime(id, currentPosition, percentage)
241241
} else {
242-
playbackTracker.stopPlayback(id)
242+
playbackTracker.stopPlaybackOrRecorder(id)
243243
stopPlaybackTicker()
244244
}
245245
}

vector/src/main/java/im/vector/app/features/home/room/detail/timeline/helper/AudioMessagePlaybackTracker.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ class AudioMessagePlaybackTracker @Inject constructor() {
100100
}
101101
}
102102

103-
fun stopPlayback(id: String) {
103+
fun stopPlaybackOrRecorder(id: String) {
104104
val state = getPlaybackState(id)
105105
if (state !is Listener.State.Error) {
106106
setState(id, Listener.State.Idle)

vector/src/main/java/im/vector/app/features/voicebroadcast/listening/VoiceBroadcastPlayerImpl.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -527,7 +527,7 @@ class VoiceBroadcastPlayerImpl @Inject constructor(
527527
State.Idle -> {
528528
// restart the playback time if player completed with less than 1s remaining time
529529
if (percentage == null || (playlist.duration - position) < 1000) {
530-
playbackTracker.stopPlayback(id)
530+
playbackTracker.stopPlaybackOrRecorder(id)
531531
} else {
532532
playbackTracker.updatePausedAtPlaybackTime(id, position, percentage)
533533
}

vector/src/main/java/im/vector/app/features/voicebroadcast/recording/usecase/StartVoiceBroadcastUseCase.kt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import android.content.Context
2020
import androidx.core.content.FileProvider
2121
import im.vector.app.core.resources.BuildMeta
2222
import im.vector.app.features.attachments.toContentAttachmentData
23+
import im.vector.app.features.home.room.detail.timeline.helper.AudioMessagePlaybackTracker
2324
import im.vector.app.features.session.coroutineScope
2425
import im.vector.app.features.voicebroadcast.VoiceBroadcastConstants
2526
import im.vector.app.features.voicebroadcast.VoiceBroadcastFailure
@@ -54,6 +55,7 @@ import javax.inject.Inject
5455
class StartVoiceBroadcastUseCase @Inject constructor(
5556
private val session: Session,
5657
private val voiceBroadcastRecorder: VoiceBroadcastRecorder?,
58+
private val playbackTracker: AudioMessagePlaybackTracker,
5759
private val context: Context,
5860
private val buildMeta: BuildMeta,
5961
private val getRoomLiveVoiceBroadcastsUseCase: GetRoomLiveVoiceBroadcastsUseCase,
@@ -106,10 +108,14 @@ class StartVoiceBroadcastUseCase @Inject constructor(
106108
}
107109

108110
override fun onStateUpdated(state: VoiceBroadcastRecorder.State) {
109-
if (state == VoiceBroadcastRecorder.State.Error) {
110-
session.coroutineScope.launch {
111-
pauseVoiceBroadcastUseCase.execute(room.roomId)
111+
when (state) {
112+
VoiceBroadcastRecorder.State.Recording -> playbackTracker.updateCurrentRecording(AudioMessagePlaybackTracker.RECORDING_ID, emptyList())
113+
VoiceBroadcastRecorder.State.Idle -> playbackTracker.stopPlaybackOrRecorder(AudioMessagePlaybackTracker.RECORDING_ID)
114+
VoiceBroadcastRecorder.State.Error -> {
115+
playbackTracker.stopPlaybackOrRecorder(AudioMessagePlaybackTracker.RECORDING_ID)
116+
session.coroutineScope.launch { pauseVoiceBroadcastUseCase.execute(room.roomId) }
112117
}
118+
else -> Unit
113119
}
114120
}
115121
})

vector/src/main/java/im/vector/app/features/voicebroadcast/usecase/GetVoiceBroadcastStateEventLiveUseCase.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,7 @@ class GetVoiceBroadcastStateEventLiveUseCase @Inject constructor(
4747
) {
4848

4949
fun execute(voiceBroadcast: VoiceBroadcast): Flow<Optional<VoiceBroadcastEvent>> {
50-
val room = session.getRoom(voiceBroadcast.roomId) ?: error("Unknown roomId: ${voiceBroadcast.roomId}")
51-
return getMostRecentVoiceBroadcastEventFlow(room, voiceBroadcast)
50+
return getMostRecentVoiceBroadcastEventFlow(voiceBroadcast)
5251
.onEach { event ->
5352
Timber.d(
5453
"## VoiceBroadcast | " +
@@ -61,7 +60,8 @@ class GetVoiceBroadcastStateEventLiveUseCase @Inject constructor(
6160
/**
6261
* Get a flow of the most recent event for the given voice broadcast.
6362
*/
64-
private fun getMostRecentVoiceBroadcastEventFlow(room: Room, voiceBroadcast: VoiceBroadcast): Flow<Optional<VoiceBroadcastEvent>> {
63+
private fun getMostRecentVoiceBroadcastEventFlow(voiceBroadcast: VoiceBroadcast): Flow<Optional<VoiceBroadcastEvent>> {
64+
val room = session.getRoom(voiceBroadcast.roomId) ?: error("Unknown roomId: ${voiceBroadcast.roomId}")
6565
val startedEventFlow = room.flow().liveTimelineEvent(voiceBroadcast.voiceBroadcastId)
6666
// observe started event changes
6767
return startedEventFlow

vector/src/test/java/im/vector/app/features/voicebroadcast/usecase/StartVoiceBroadcastUseCaseTest.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ class StartVoiceBroadcastUseCaseTest {
5757
StartVoiceBroadcastUseCase(
5858
session = fakeSession,
5959
voiceBroadcastRecorder = fakeVoiceBroadcastRecorder,
60+
playbackTracker = mockk(),
6061
context = FakeContext().instance,
6162
buildMeta = mockk(),
6263
getRoomLiveVoiceBroadcastsUseCase = fakeGetRoomLiveVoiceBroadcastsUseCase,

0 commit comments

Comments
 (0)