From d1e4b68e33c90f655c9b377ce675b19994355e03 Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Thu, 14 Dec 2023 17:29:15 +0100 Subject: [PATCH] fix: Save audio and video using appropriate file saver --- .../java/app/myzel394/alibi/db/AppSettings.kt | 2 + .../atoms/RecorderEventsHandler.kt | 47 ++++++++++++++----- 2 files changed, 36 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/app/myzel394/alibi/db/AppSettings.kt b/app/src/main/java/app/myzel394/alibi/db/AppSettings.kt index 44fe949..2e0ff56 100644 --- a/app/src/main/java/app/myzel394/alibi/db/AppSettings.kt +++ b/app/src/main/java/app/myzel394/alibi/db/AppSettings.kt @@ -401,6 +401,8 @@ data class VideoRecorderSettings( ) } + fun getMimeType() = "video/mp4" + companion object { fun getDefaultInstance() = VideoRecorderSettings() diff --git a/app/src/main/java/app/myzel394/alibi/ui/components/RecorderScreen/atoms/RecorderEventsHandler.kt b/app/src/main/java/app/myzel394/alibi/ui/components/RecorderScreen/atoms/RecorderEventsHandler.kt index bae9c78..434cd99 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/components/RecorderScreen/atoms/RecorderEventsHandler.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/components/RecorderScreen/atoms/RecorderEventsHandler.kt @@ -21,6 +21,7 @@ import app.myzel394.alibi.db.AppSettings import app.myzel394.alibi.db.RecordingInformation import app.myzel394.alibi.helpers.AudioBatchesFolder import app.myzel394.alibi.helpers.BatchesFolder +import app.myzel394.alibi.helpers.VideoBatchesFolder import app.myzel394.alibi.services.IntervalRecorderService import app.myzel394.alibi.ui.models.AudioRecorderModel import app.myzel394.alibi.ui.models.BaseRecorderModel @@ -50,21 +51,29 @@ fun RecorderEventsHandler( var isProcessing by remember { mutableStateOf(false) } var showRecorderError by remember { mutableStateOf(false) } - val saveFile = rememberFileSaverDialog( - settings.audioRecorderSettings.getMimeType() - ) { + val saveAudioFile = rememberFileSaverDialog(settings.audioRecorderSettings.getMimeType()) { if (settings.deleteRecordingsImmediately) { runCatching { 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 { videoRecorder.batchesFolder?.deleteRecordings() } } - if (audioRecorder.batchesFolder?.hasRecordingsAvailable() == false - && videoRecorder.batchesFolder?.hasRecordingsAvailable() == false - ) { + if (videoRecorder.batchesFolder?.hasRecordingsAvailable() == false) { scope.launch { dataStore.updateData { it.setLastRecording(null) @@ -126,7 +135,10 @@ fun RecorderEventsHandler( ?: settings.lastRecording ?: throw Exception("No recording information available") 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( recording.recordingStart, @@ -141,12 +153,21 @@ fun RecorderEventsHandler( when (batchesFolder.type) { BatchesFolder.BatchType.INTERNAL -> { - saveFile( - batchesFolder.asInternalGetOutputFile( - recording.recordingStart, - recording.fileExtension, - ), name - ) + if (batchesFolder is AudioBatchesFolder) { + saveAudioFile( + batchesFolder.asInternalGetOutputFile( + recording.recordingStart, + recording.fileExtension, + ), name + ) + } else if (batchesFolder is VideoBatchesFolder) { + saveVideoFile( + batchesFolder.asInternalGetOutputFile( + recording.recordingStart, + recording.fileExtension, + ), name + ) + } } BatchesFolder.BatchType.CUSTOM -> {