From 13dd59f226be494fc7a9b5f486e4273102fe1469 Mon Sep 17 00:00:00 2001 From: Michelle Tang Date: Thu, 6 Jun 2024 12:09:00 -0700 Subject: [PATCH] Skip biometrics check if unavailable when linking a device. --- .../thoughtcrime/securesms/BiometricDeviceAuthentication.kt | 4 ++++ .../securesms/linkdevice/AddLinkDeviceFragment.kt | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/BiometricDeviceAuthentication.kt b/app/src/main/java/org/thoughtcrime/securesms/BiometricDeviceAuthentication.kt index ffc4363ba7..ea29d878c9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/BiometricDeviceAuthentication.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/BiometricDeviceAuthentication.kt @@ -35,6 +35,10 @@ class BiometricDeviceAuthentication( private val DISALLOWED_BIOMETRIC_VERSIONS = setOf(28, 29) } + fun canAuthenticate(): Boolean { + return biometricManager.canAuthenticate(ALLOWED_AUTHENTICATORS) == BiometricManager.BIOMETRIC_SUCCESS + } + fun authenticate(context: Context, force: Boolean, showConfirmDeviceCredentialIntent: () -> Unit): Boolean { val isKeyGuardSecure = ServiceUtil.getKeyguardManager(context).isKeyguardSecure diff --git a/app/src/main/java/org/thoughtcrime/securesms/linkdevice/AddLinkDeviceFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/linkdevice/AddLinkDeviceFragment.kt index 70a20d21ba..01676a5c12 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/linkdevice/AddLinkDeviceFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/linkdevice/AddLinkDeviceFragment.kt @@ -113,7 +113,11 @@ class AddLinkDeviceFragment : ComposeFragment() { onQrCodeScanned = { data -> viewModel.onQrCodeScanned(data) }, onQrCodeApproved = { viewModel.onQrCodeApproved() - biometricAuth.authenticate(requireContext(), true) { biometricDeviceLockLauncher.launch(getString(R.string.BiometricDeviceAuthentication__signal)) } + if (biometricAuth.canAuthenticate()) { + biometricAuth.authenticate(requireContext(), true) { biometricDeviceLockLauncher.launch(getString(R.string.BiometricDeviceAuthentication__signal)) } + } else { + viewModel.addDevice() + } }, onQrCodeDismissed = { viewModel.onQrCodeDismissed() }, onQrCodeRetry = { viewModel.onQrCodeScanned(state.url) },