Skip to content

Commit 3c6492a

Browse files
committed
Add stop recorder tracker
1 parent e6b1921 commit 3c6492a

File tree

7 files changed

+15
-13
lines changed

7 files changed

+15
-13
lines changed

vector/src/main/java/im/vector/app/core/di/VoiceModule.kt

+2-4
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,13 @@ abstract class VoiceModule {
4141
fun providesVoiceBroadcastRecorder(
4242
context: Context,
4343
sessionHolder: ActiveSessionHolder,
44-
getVoiceBroadcastStateEventLiveUseCase: GetVoiceBroadcastStateEventLiveUseCase,
45-
playbackTracker: AudioMessagePlaybackTracker
44+
getVoiceBroadcastStateEventLiveUseCase: GetVoiceBroadcastStateEventLiveUseCase
4645
): VoiceBroadcastRecorder? {
4746
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
4847
VoiceBroadcastRecorderQ(
4948
context = context,
5049
sessionHolder = sessionHolder,
51-
getVoiceBroadcastEventUseCase = getVoiceBroadcastStateEventLiveUseCase,
52-
playbackTracker = playbackTracker
50+
getVoiceBroadcastEventUseCase = getVoiceBroadcastStateEventLiveUseCase
5351
)
5452
} else {
5553
null

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

+1-1
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

+1-1
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

+1-1
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/VoiceBroadcastRecorderQ.kt

-3
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import android.media.MediaRecorder
2121
import android.os.Build
2222
import androidx.annotation.RequiresApi
2323
import im.vector.app.core.di.ActiveSessionHolder
24-
import im.vector.app.features.home.room.detail.timeline.helper.AudioMessagePlaybackTracker
2524
import im.vector.app.features.session.coroutineScope
2625
import im.vector.app.features.voice.AbstractVoiceRecorderQ
2726
import im.vector.app.features.voicebroadcast.model.VoiceBroadcast
@@ -46,7 +45,6 @@ class VoiceBroadcastRecorderQ(
4645
context: Context,
4746
private val sessionHolder: ActiveSessionHolder,
4847
private val getVoiceBroadcastEventUseCase: GetVoiceBroadcastStateEventLiveUseCase,
49-
private val playbackTracker: AudioMessagePlaybackTracker
5048
) : AbstractVoiceRecorderQ(context), VoiceBroadcastRecorder {
5149

5250
private val session get() = sessionHolder.getActiveSession()
@@ -105,7 +103,6 @@ class VoiceBroadcastRecorderQ(
105103

106104
override fun startRecord(roomId: String) {
107105
super.startRecord(roomId)
108-
playbackTracker.updateCurrentRecording(AudioMessagePlaybackTracker.RECORDING_ID, emptyList())
109106
observeConnectionState()
110107
}
111108

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

+9-3
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/test/java/im/vector/app/features/voicebroadcast/usecase/StartVoiceBroadcastUseCaseTest.kt

+1
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)