fix: Save audio and video using appropriate file saver

This commit is contained in:
Myzel394 2023-12-14 17:29:15 +01:00
parent df78952cfb
commit d1e4b68e33
No known key found for this signature in database
GPG Key ID: 79CC92F37B3E1A2B
2 changed files with 36 additions and 13 deletions

View File

@ -401,6 +401,8 @@ data class VideoRecorderSettings(
) )
} }
fun getMimeType() = "video/mp4"
companion object { companion object {
fun getDefaultInstance() = VideoRecorderSettings() fun getDefaultInstance() = VideoRecorderSettings()

View File

@ -21,6 +21,7 @@ import app.myzel394.alibi.db.AppSettings
import app.myzel394.alibi.db.RecordingInformation import app.myzel394.alibi.db.RecordingInformation
import app.myzel394.alibi.helpers.AudioBatchesFolder import app.myzel394.alibi.helpers.AudioBatchesFolder
import app.myzel394.alibi.helpers.BatchesFolder import app.myzel394.alibi.helpers.BatchesFolder
import app.myzel394.alibi.helpers.VideoBatchesFolder
import app.myzel394.alibi.services.IntervalRecorderService import app.myzel394.alibi.services.IntervalRecorderService
import app.myzel394.alibi.ui.models.AudioRecorderModel import app.myzel394.alibi.ui.models.AudioRecorderModel
import app.myzel394.alibi.ui.models.BaseRecorderModel import app.myzel394.alibi.ui.models.BaseRecorderModel
@ -50,21 +51,29 @@ fun RecorderEventsHandler(
var isProcessing by remember { mutableStateOf(false) } var isProcessing by remember { mutableStateOf(false) }
var showRecorderError by remember { mutableStateOf(false) } var showRecorderError by remember { mutableStateOf(false) }
val saveFile = rememberFileSaverDialog( val saveAudioFile = rememberFileSaverDialog(settings.audioRecorderSettings.getMimeType()) {
settings.audioRecorderSettings.getMimeType()
) {
if (settings.deleteRecordingsImmediately) { if (settings.deleteRecordingsImmediately) {
runCatching { runCatching {
audioRecorder.batchesFolder?.deleteRecordings() audioRecorder.batchesFolder?.deleteRecordings()
} }
}
if (audioRecorder.batchesFolder?.hasRecordingsAvailable() == false) {
scope.launch {
dataStore.updateData {
it.setLastRecording(null)
}
}
}
}
val saveVideoFile = rememberFileSaverDialog(settings.videoRecorderSettings.getMimeType()) {
if (settings.deleteRecordingsImmediately) {
runCatching { runCatching {
videoRecorder.batchesFolder?.deleteRecordings() videoRecorder.batchesFolder?.deleteRecordings()
} }
} }
if (audioRecorder.batchesFolder?.hasRecordingsAvailable() == false if (videoRecorder.batchesFolder?.hasRecordingsAvailable() == false) {
&& videoRecorder.batchesFolder?.hasRecordingsAvailable() == false
) {
scope.launch { scope.launch {
dataStore.updateData { dataStore.updateData {
it.setLastRecording(null) it.setLastRecording(null)
@ -126,7 +135,10 @@ fun RecorderEventsHandler(
?: settings.lastRecording ?: settings.lastRecording
?: throw Exception("No recording information available") ?: throw Exception("No recording information available")
val batchesFolder = val batchesFolder =
AudioBatchesFolder.importFromFolder(recording.folderPath, context) if (recorder.javaClass == AudioRecorderModel::class.java)
AudioBatchesFolder.importFromFolder(recording.folderPath, context)
else
VideoBatchesFolder.importFromFolder(recording.folderPath, context)
batchesFolder.concatenate( batchesFolder.concatenate(
recording.recordingStart, recording.recordingStart,
@ -141,12 +153,21 @@ fun RecorderEventsHandler(
when (batchesFolder.type) { when (batchesFolder.type) {
BatchesFolder.BatchType.INTERNAL -> { BatchesFolder.BatchType.INTERNAL -> {
saveFile( if (batchesFolder is AudioBatchesFolder) {
batchesFolder.asInternalGetOutputFile( saveAudioFile(
recording.recordingStart, batchesFolder.asInternalGetOutputFile(
recording.fileExtension, recording.recordingStart,
), name recording.fileExtension,
) ), name
)
} else if (batchesFolder is VideoBatchesFolder) {
saveVideoFile(
batchesFolder.asInternalGetOutputFile(
recording.recordingStart,
recording.fileExtension,
), name
)
}
} }
BatchesFolder.BatchType.CUSTOM -> { BatchesFolder.BatchType.CUSTOM -> {