From 60f6e404a8ea5def1e3775262f92def8781c9a26 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Nicolas <6371790+pynicolas@users.noreply.github.com> Date: Tue, 3 Feb 2026 15:50:40 +0100 Subject: [PATCH] CameraScreen: fix torch state persistence (broken by previous commit) --- .../app/ui/screens/camera/CameraScreen.kt | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/fairscan/app/ui/screens/camera/CameraScreen.kt b/app/src/main/java/org/fairscan/app/ui/screens/camera/CameraScreen.kt index 8d90d82..d0ee811 100644 --- a/app/src/main/java/org/fairscan/app/ui/screens/camera/CameraScreen.kt +++ b/app/src/main/java/org/fairscan/app/ui/screens/camera/CameraScreen.kt @@ -123,12 +123,16 @@ fun CameraScreen( val thumbnailCoords = remember { mutableStateOf(Offset.Zero) } var isDebugMode by remember { mutableStateOf(false) } val isTorchEnabled by cameraViewModel.isTorchEnabled.collectAsStateWithLifecycle() + var torchReapplied by remember { mutableStateOf(false) } BackHandler { navigation.back() } val captureController = remember { CameraCaptureController() } DisposableEffect(Unit) { - onDispose { captureController.shutdown() } + onDispose { + captureController.shutdown() + torchReapplied = false + } } LaunchedEffect(captureController.cameraControl, isTorchEnabled) { captureController.cameraControl?.enableTorch(isTorchEnabled) @@ -166,7 +170,14 @@ fun CameraScreen( CameraScreenScaffold( cameraPreview = { CameraPreview( - onImageAnalyzed = onImageAnalyzed, + onImageAnalyzed = { + onImageAnalyzed(it) + // Re-apply torch once the camera session is actually active (first analysis) + if (!torchReapplied) { + captureController.cameraControl?.enableTorch(isTorchEnabled) + torchReapplied = true + } + }, captureController = captureController, onPreviewViewReady = { view -> previewView = view