mirror of
https://github.com/Myzel394/Alibi.git
synced 2025-06-18 23:05:26 +02:00
feat: Add completer to recording save functions
Signed-off-by: Myzel394 <50424412+Myzel394@users.noreply.github.com>
This commit is contained in:
parent
bc6a4a4660
commit
0a626e5f66
@ -1,6 +1,5 @@
|
||||
package app.myzel394.alibi.ui.components.RecorderScreen.organisms
|
||||
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.util.Log
|
||||
import androidx.compose.material3.SnackbarDuration
|
||||
@ -9,8 +8,6 @@ import androidx.compose.material3.SnackbarResult
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.DisposableEffect
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableDoubleStateOf
|
||||
import androidx.compose.runtime.mutableFloatStateOf
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
@ -33,6 +30,7 @@ import app.myzel394.alibi.ui.models.AudioRecorderModel
|
||||
import app.myzel394.alibi.ui.models.BaseRecorderModel
|
||||
import app.myzel394.alibi.ui.models.VideoRecorderModel
|
||||
import app.myzel394.alibi.ui.utils.rememberFileSaverDialog
|
||||
import kotlinx.coroutines.CompletableDeferred
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.runBlocking
|
||||
@ -227,6 +225,8 @@ fun RecorderEventsHandler(
|
||||
// Register audio recorder events
|
||||
DisposableEffect(key1 = audioRecorder, key2 = settings) {
|
||||
audioRecorder.onRecordingSave = { justSave ->
|
||||
val completer = CompletableDeferred<Unit>()
|
||||
|
||||
scope.launch {
|
||||
if (justSave) {
|
||||
saveRecording(audioRecorder as RecorderModel)
|
||||
@ -239,7 +239,11 @@ fun RecorderEventsHandler(
|
||||
|
||||
audioRecorder.destroyService(context)
|
||||
}
|
||||
|
||||
completer.complete(Unit)
|
||||
}
|
||||
|
||||
completer
|
||||
}
|
||||
audioRecorder.onRecordingStart = {
|
||||
snackbarHostState.currentSnackbarData?.dismiss()
|
||||
@ -265,7 +269,9 @@ fun RecorderEventsHandler(
|
||||
}
|
||||
|
||||
onDispose {
|
||||
audioRecorder.onRecordingSave = {}
|
||||
audioRecorder.onRecordingSave = {
|
||||
throw NotImplementedError("onRecordingSave should not be called now")
|
||||
}
|
||||
audioRecorder.onError = {}
|
||||
}
|
||||
}
|
||||
@ -273,6 +279,8 @@ fun RecorderEventsHandler(
|
||||
// Register video recorder events
|
||||
DisposableEffect(key1 = videoRecorder, key2 = settings) {
|
||||
videoRecorder.onRecordingSave = { justSave ->
|
||||
val completer = CompletableDeferred<Unit>()
|
||||
|
||||
scope.launch {
|
||||
if (justSave) {
|
||||
saveRecording(videoRecorder as RecorderModel)
|
||||
@ -285,7 +293,11 @@ fun RecorderEventsHandler(
|
||||
|
||||
videoRecorder.destroyService(context)
|
||||
}
|
||||
|
||||
completer.complete(Unit)
|
||||
}
|
||||
|
||||
completer
|
||||
}
|
||||
videoRecorder.onRecordingStart = {
|
||||
snackbarHostState.currentSnackbarData?.dismiss()
|
||||
@ -311,7 +323,9 @@ fun RecorderEventsHandler(
|
||||
}
|
||||
|
||||
onDispose {
|
||||
videoRecorder.onRecordingSave = {}
|
||||
videoRecorder.onRecordingSave = {
|
||||
throw NotImplementedError("onRecordingSave should not be called now")
|
||||
}
|
||||
videoRecorder.onError = {}
|
||||
}
|
||||
}
|
||||
|
@ -17,6 +17,7 @@ import app.myzel394.alibi.helpers.BatchesFolder
|
||||
import app.myzel394.alibi.services.IntervalRecorderService
|
||||
import app.myzel394.alibi.services.RecorderNotificationHelper
|
||||
import app.myzel394.alibi.services.RecorderService
|
||||
import kotlinx.coroutines.CompletableDeferred
|
||||
import kotlinx.serialization.json.Json
|
||||
|
||||
abstract class BaseRecorderModel<I, B : BatchesFolder, T : IntervalRecorderService<I, B>> :
|
||||
@ -45,7 +46,9 @@ abstract class BaseRecorderModel<I, B : BatchesFolder, T : IntervalRecorderServi
|
||||
|
||||
// If `isSavingAsOldRecording` is true, the user is saving an old recording,
|
||||
// thus the service is not running and thus doesn't need to be stopped or destroyed
|
||||
var onRecordingSave: (isSavingAsOldRecording: Boolean) -> Unit = {}
|
||||
var onRecordingSave: (isSavingAsOldRecording: Boolean) -> CompletableDeferred<Unit> = {
|
||||
throw NotImplementedError("onRecordingSave not implemented")
|
||||
}
|
||||
var onRecordingStart: () -> Unit = {}
|
||||
var onError: () -> Unit = {}
|
||||
var onBatchesFolderNotAccessible: () -> Unit = {}
|
||||
|
Loading…
x
Reference in New Issue
Block a user