From 407ba58074aa6fe38d524e2972c63a9744d1abdf Mon Sep 17 00:00:00 2001 From: Sergejs Luhmirins Date: Tue, 19 Nov 2024 14:19:46 +0200 Subject: [PATCH] MS-825 Ignore image transfer cancellation exception to avoid breaking user flow --- .../capture/screen/FingerprintCaptureViewModel.kt | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/fingerprint/capture/src/main/java/com/simprints/fingerprint/capture/screen/FingerprintCaptureViewModel.kt b/fingerprint/capture/src/main/java/com/simprints/fingerprint/capture/screen/FingerprintCaptureViewModel.kt index 2a3e665fe9..ac1f7aef34 100644 --- a/fingerprint/capture/src/main/java/com/simprints/fingerprint/capture/screen/FingerprintCaptureViewModel.kt +++ b/fingerprint/capture/src/main/java/com/simprints/fingerprint/capture/screen/FingerprintCaptureViewModel.kt @@ -56,6 +56,7 @@ import kotlinx.coroutines.CancellationException import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job import kotlinx.coroutines.delay +import kotlinx.coroutines.isActive import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking import javax.inject.Inject @@ -164,7 +165,7 @@ internal class FingerprintCaptureViewModel @Inject constructor( private fun start( fingerprintsToCapture: List, - fingerprintSdk: FingerprintConfiguration.BioSdk + fingerprintSdk: FingerprintConfiguration.BioSdk, ) { if (!hasStarted) { hasStarted = true @@ -403,7 +404,11 @@ internal class FingerprintCaptureViewModel @Inject constructor( imageTransferTask = viewModelScope.launch { try { val acquiredImage = bioSdkWrapper.acquireFingerprintImage() - handleImageTransferSuccess(acquiredImage) + if (isActive) { + handleImageTransferSuccess(acquiredImage) + } + } catch (_: CancellationException) { + // No-op - This is expected when job is cancelled manually, i.e. by back press } catch (ex: Throwable) { handleScannerCommunicationsError(ex) } @@ -665,7 +670,7 @@ internal class FingerprintCaptureViewModel @Inject constructor( fun handleOnViewCreated( fingerprintsToCapture: List, - fingerprintSdk: FingerprintConfiguration.BioSdk + fingerprintSdk: FingerprintConfiguration.BioSdk, ) { updateState { it.copy(