code review: extract startRecording code
This commit is contained in:
+11
-7
@@ -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 = {
|
||||||
|
|||||||
Reference in New Issue
Block a user