mirror of
https://github.com/bitwarden/android.git
synced 2026-05-22 04:22:11 -05:00
Add initial biometrics manager (#802)
This commit is contained in:
committed by
Álison Fernandes
parent
f0b0859ae3
commit
d938a7da70
@@ -0,0 +1,11 @@
|
||||
package com.x8bit.bitwarden.ui.platform.manager.biometrics
|
||||
|
||||
/**
|
||||
* Interface to manage biometrics within the app.
|
||||
*/
|
||||
interface BiometricsManager {
|
||||
/**
|
||||
* Returns `true` if the device supports string biometric authentication, `false` otherwise.
|
||||
*/
|
||||
val isBiometricsSupported: Boolean
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.x8bit.bitwarden.ui.platform.manager.biometrics
|
||||
|
||||
import android.app.Activity
|
||||
import androidx.biometric.BiometricManager
|
||||
import androidx.biometric.BiometricManager.Authenticators
|
||||
import com.x8bit.bitwarden.data.platform.annotation.OmitFromCoverage
|
||||
|
||||
/**
|
||||
* Default implementation of the [BiometricsManager] to manage biometrics within the app.
|
||||
*/
|
||||
@OmitFromCoverage
|
||||
class BiometricsManagerImpl(
|
||||
private val activity: Activity,
|
||||
) : BiometricsManager {
|
||||
private val biometricManager: BiometricManager = BiometricManager.from(activity)
|
||||
|
||||
override val isBiometricsSupported: Boolean
|
||||
get() = when (biometricManager.canAuthenticate(Authenticators.BIOMETRIC_STRONG)) {
|
||||
BiometricManager.BIOMETRIC_SUCCESS -> true
|
||||
BiometricManager.BIOMETRIC_STATUS_UNKNOWN,
|
||||
BiometricManager.BIOMETRIC_ERROR_UNSUPPORTED,
|
||||
BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE,
|
||||
BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED,
|
||||
BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE,
|
||||
BiometricManager.BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED,
|
||||
-> false
|
||||
|
||||
else -> false
|
||||
}
|
||||
}
|
||||
@@ -23,6 +23,8 @@ import androidx.compose.ui.platform.LocalView
|
||||
import androidx.core.view.WindowCompat
|
||||
import com.x8bit.bitwarden.R
|
||||
import com.x8bit.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme
|
||||
import com.x8bit.bitwarden.ui.platform.manager.biometrics.BiometricsManager
|
||||
import com.x8bit.bitwarden.ui.platform.manager.biometrics.BiometricsManagerImpl
|
||||
import com.x8bit.bitwarden.ui.platform.manager.exit.ExitManager
|
||||
import com.x8bit.bitwarden.ui.platform.manager.exit.ExitManagerImpl
|
||||
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
|
||||
@@ -82,6 +84,7 @@ fun BitwardenTheme(
|
||||
LocalPermissionsManager provides PermissionsManagerImpl(activity),
|
||||
LocalIntentManager provides IntentManagerImpl(context),
|
||||
LocalExitManager provides ExitManagerImpl(activity),
|
||||
LocalBiometricsManager provides BiometricsManagerImpl(activity),
|
||||
) {
|
||||
// Set overall theme based on color scheme and typography settings
|
||||
MaterialTheme(
|
||||
@@ -170,6 +173,13 @@ private fun lightColorScheme(context: Context): ColorScheme =
|
||||
private fun Int.toColor(context: Context): Color =
|
||||
Color(context.getColor(this))
|
||||
|
||||
/**
|
||||
* Provides access to the biometrics manager throughout the app.
|
||||
*/
|
||||
val LocalBiometricsManager: ProvidableCompositionLocal<BiometricsManager> = compositionLocalOf {
|
||||
error("CompositionLocal BiometricsManager not present")
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides access to the exit manager throughout the app.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user