code review: extract startRecording code

This commit is contained in:
davotoula
2025-12-15 19:33:08 +01:00
parent 09f66359ad
commit a370112bc5
@@ -66,15 +66,20 @@ fun RecordAudioBox(
} }
} }
// Start recording once permission is granted AND user wants to record fun startRecording() {
LaunchedEffect(recordPermissionState.status.isGranted, wantsToRecord) { if (mediaRecorder.value == null) {
if (recordPermissionState.status.isGranted && wantsToRecord && mediaRecorder.value == null) {
elapsedSeconds = 0 elapsedSeconds = 0
mediaRecorder.value = VoiceMessageRecorder() mediaRecorder.value = VoiceMessageRecorder()
mediaRecorder.value?.start(context, scope) mediaRecorder.value?.start(context, scope)
} }
} }
LaunchedEffect(recordPermissionState.status.isGranted, wantsToRecord) {
if (recordPermissionState.status.isGranted && wantsToRecord) {
startRecording()
}
}
// Track elapsed time while recording // Track elapsed time while recording
LaunchedEffect(mediaRecorder.value) { LaunchedEffect(mediaRecorder.value) {
// Capture the current recorder state to avoid repeated reads of volatile state // Capture the current recorder state to avoid repeated reads of volatile state
@@ -97,10 +102,9 @@ fun RecordAudioBox(
wantsToRecord = true wantsToRecord = true
if (!recordPermissionState.status.isGranted) { if (!recordPermissionState.status.isGranted) {
recordPermissionState.launchPermissionRequest() recordPermissionState.launchPermissionRequest()
} else if (mediaRecorder.value == null) { } else {
elapsedSeconds = 0 // Start immediately for responsive UX when permission already granted
mediaRecorder.value = VoiceMessageRecorder() startRecording()
mediaRecorder.value?.start(context, scope)
} }
}, },
onRelease = { onRelease = {