diff --git a/app/src/main/java/app/myzel394/alibi/ui/components/RecorderScreen/organisms/RecorderEventsHandler.kt b/app/src/main/java/app/myzel394/alibi/ui/components/RecorderScreen/organisms/RecorderEventsHandler.kt index 8f54847..99a43d7 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/components/RecorderScreen/organisms/RecorderEventsHandler.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/components/RecorderScreen/organisms/RecorderEventsHandler.kt @@ -252,12 +252,12 @@ fun RecorderEventsHandler( // is registered twice, and THEN disposed once (AFTER being called twice), // which then causes the `onRecordingSave` to be in a weird state. // This variable is a workaround to prevent this from happening. - var audioAlreadyRegistered = false - DisposableEffect(Unit) { - if (audioAlreadyRegistered) { + var previousAudioSettings: AppSettings? = null + DisposableEffect(settings) { + if (previousAudioSettings == settings) { onDispose { } } else { - audioAlreadyRegistered = true + previousAudioSettings = settings audioRecorder.onRecordingSave = { cleanupOldFiles -> saveRecording(audioRecorder as RecorderModel, cleanupOldFiles) } @@ -301,12 +301,12 @@ fun RecorderEventsHandler( } // Register video recorder events - var videoAlreadyRegistered = false - DisposableEffect(Unit) { - if (videoAlreadyRegistered) { + var previousVideoSettings: AppSettings? = null + DisposableEffect(settings) { + if (previousVideoSettings == settings) { onDispose { } } else { - videoAlreadyRegistered = true + previousVideoSettings = settings Log.i("Alibi", "===== Registering videoRecorder events $videoRecorder") videoRecorder.onRecordingSave = { cleanupOldFiles -> saveRecording(videoRecorder as RecorderModel, cleanupOldFiles) diff --git a/app/src/main/java/app/myzel394/alibi/ui/screens/RecorderScreen.kt b/app/src/main/java/app/myzel394/alibi/ui/screens/RecorderScreen.kt index a086840..f3936cc 100644 --- a/app/src/main/java/app/myzel394/alibi/ui/screens/RecorderScreen.kt +++ b/app/src/main/java/app/myzel394/alibi/ui/screens/RecorderScreen.kt @@ -16,17 +16,14 @@ import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable -import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import app.myzel394.alibi.R -import app.myzel394.alibi.dataStore import app.myzel394.alibi.db.AppSettings import app.myzel394.alibi.db.RecordingInformation import app.myzel394.alibi.ui.components.RecorderScreen.organisms.AudioRecordingStatus @@ -46,7 +43,6 @@ fun RecorderScreen( settings: AppSettings, ) { val snackbarHostState = remember { SnackbarHostState() } - val context = LocalContext.current val scope = rememberCoroutineScope() RecorderEventsHandler( @@ -104,9 +100,6 @@ fun RecorderScreen( .fillMaxSize() .padding(padding), ) { - val appSettings = - context.dataStore.data.collectAsState(AppSettings.getDefaultInstance()).value - if (audioRecorder.isInRecording) AudioRecordingStatus(audioRecorder = audioRecorder) else if (videoRecorder.isInRecording) @@ -115,7 +108,7 @@ fun RecorderScreen( StartRecording( audioRecorder = audioRecorder, videoRecorder = videoRecorder, - appSettings = appSettings, + appSettings = settings, onSaveLastRecording = { scope.launch { when (settings.lastRecording!!.type) {