mirror of
https://github.com/bitwarden/android.git
synced 2025-03-15 18:58:59 +03:00
Add initial biometrics manager (#802)
This commit is contained in:
parent
f0b0859ae3
commit
d938a7da70
3 changed files with 51 additions and 0 deletions
|
@ -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.
|
||||
*/
|
||||
|
|
Loading…
Add table
Reference in a new issue