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