mirror of
https://github.com/Myzel394/Alibi.git
synced 2025-06-18 23:05:26 +02:00
fix: Add workaround for doubly registered events
Signed-off-by: Myzel394 <50424412+Myzel394@users.noreply.github.com>
This commit is contained in:
parent
798b6f2119
commit
d1fe46804e
@ -248,59 +248,65 @@ fun RecorderEventsHandler(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Register audio recorder events
|
// Register audio recorder events
|
||||||
DisposableEffect(Unit) {
|
|
||||||
audioRecorder.onRecordingSave = { cleanupOldFiles ->
|
|
||||||
saveRecording(audioRecorder as RecorderModel, cleanupOldFiles)
|
|
||||||
}
|
|
||||||
audioRecorder.onRecordingStart = {
|
|
||||||
snackbarHostState.currentSnackbarData?.dismiss()
|
|
||||||
}
|
|
||||||
audioRecorder.onError = {
|
|
||||||
scope.launch {
|
|
||||||
saveAsLastRecording(audioRecorder as RecorderModel)
|
|
||||||
|
|
||||||
runCatching {
|
|
||||||
audioRecorder.stopRecording(context)
|
|
||||||
}
|
|
||||||
runCatching {
|
|
||||||
audioRecorder.destroyService(context)
|
|
||||||
}
|
|
||||||
|
|
||||||
showRecorderError = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
audioRecorder.onBatchesFolderNotAccessible = {
|
|
||||||
scope.launch {
|
|
||||||
showBatchesInaccessibleError = true
|
|
||||||
|
|
||||||
runCatching {
|
|
||||||
audioRecorder.stopRecording(context)
|
|
||||||
}
|
|
||||||
runCatching {
|
|
||||||
audioRecorder.destroyService(context)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
onDispose {
|
|
||||||
audioRecorder.onRecordingSave = {
|
|
||||||
throw NotImplementedError("onRecordingSave should not be called now")
|
|
||||||
}
|
|
||||||
audioRecorder.onError = {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Register video recorder events
|
|
||||||
// Absolutely no idea, but somehow on some devices the `DisposableEffect`
|
// Absolutely no idea, but somehow on some devices the `DisposableEffect`
|
||||||
// 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 alreadyRegistered = false
|
var audioAlreadyRegistered = false
|
||||||
DisposableEffect(Unit) {
|
DisposableEffect(Unit) {
|
||||||
if (alreadyRegistered) {
|
if (audioAlreadyRegistered) {
|
||||||
onDispose { }
|
onDispose { }
|
||||||
} else {
|
} else {
|
||||||
alreadyRegistered = true
|
audioAlreadyRegistered = true
|
||||||
|
audioRecorder.onRecordingSave = { cleanupOldFiles ->
|
||||||
|
saveRecording(audioRecorder as RecorderModel, cleanupOldFiles)
|
||||||
|
}
|
||||||
|
audioRecorder.onRecordingStart = {
|
||||||
|
snackbarHostState.currentSnackbarData?.dismiss()
|
||||||
|
}
|
||||||
|
audioRecorder.onError = {
|
||||||
|
scope.launch {
|
||||||
|
saveAsLastRecording(audioRecorder as RecorderModel)
|
||||||
|
|
||||||
|
runCatching {
|
||||||
|
audioRecorder.stopRecording(context)
|
||||||
|
}
|
||||||
|
runCatching {
|
||||||
|
audioRecorder.destroyService(context)
|
||||||
|
}
|
||||||
|
|
||||||
|
showRecorderError = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
audioRecorder.onBatchesFolderNotAccessible = {
|
||||||
|
scope.launch {
|
||||||
|
showBatchesInaccessibleError = true
|
||||||
|
|
||||||
|
runCatching {
|
||||||
|
audioRecorder.stopRecording(context)
|
||||||
|
}
|
||||||
|
runCatching {
|
||||||
|
audioRecorder.destroyService(context)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onDispose {
|
||||||
|
audioRecorder.onRecordingSave = {
|
||||||
|
throw NotImplementedError("onRecordingSave should not be called now")
|
||||||
|
}
|
||||||
|
audioRecorder.onError = {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Register video recorder events
|
||||||
|
var videoAlreadyRegistered = false
|
||||||
|
DisposableEffect(Unit) {
|
||||||
|
if (videoAlreadyRegistered) {
|
||||||
|
onDispose { }
|
||||||
|
} else {
|
||||||
|
videoAlreadyRegistered = true
|
||||||
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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user