fix: Manually check settings changes

Signed-off-by: Myzel394 <50424412+Myzel394@users.noreply.github.com>
This commit is contained in:
Myzel394 2024-04-01 23:49:38 +02:00
parent f839416ce1
commit 8c9143f1ec
No known key found for this signature in database
GPG Key ID: DEC4AAB876F73185
2 changed files with 9 additions and 16 deletions

View File

@ -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)

View File

@ -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) {