User settings repo to get biometrics enabled info (#824)

This commit is contained in:
David Perez
2024-01-27 22:23:30 -06:00
committed by Álison Fernandes
parent 9fcc326df3
commit aacb955720
5 changed files with 31 additions and 69 deletions

View File

@@ -66,6 +66,11 @@ interface SettingsRepository {
*/
var defaultUriMatchType: UriMatchType
/**
* Whether or not biometric unlocking is enabled for the current user.
*/
val isUnlockWithBiometricsEnabled: Boolean
/**
* Whether or not PIN unlocking is enabled for the current user.
*/

View File

@@ -151,6 +151,11 @@ class SettingsRepositoryImpl(
)
}
override val isUnlockWithBiometricsEnabled: Boolean
get() = activeUserId
?.let { authDiskSource.getUserBiometricUnlockKey(userId = it) != null }
?: false
override val isUnlockWithPinEnabled: Boolean
get() = activeUserId
?.let { authDiskSource.getEncryptedPin(userId = it) != null }

View File

@@ -6,7 +6,6 @@ import androidx.lifecycle.viewModelScope
import com.x8bit.bitwarden.R
import com.x8bit.bitwarden.data.auth.repository.AuthRepository
import com.x8bit.bitwarden.data.auth.repository.model.UserFingerprintResult
import com.x8bit.bitwarden.data.auth.repository.model.UserState
import com.x8bit.bitwarden.data.platform.repository.EnvironmentRepository
import com.x8bit.bitwarden.data.platform.repository.SettingsRepository
import com.x8bit.bitwarden.data.platform.repository.model.VaultTimeout
@@ -18,7 +17,6 @@ import com.x8bit.bitwarden.ui.platform.base.util.Text
import com.x8bit.bitwarden.ui.platform.base.util.asText
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
@@ -44,11 +42,7 @@ class AccountSecurityViewModel @Inject constructor(
dialog = null,
fingerprintPhrase = "".asText(), // This will be filled in dynamically
isApproveLoginRequestsEnabled = settingsRepository.isApprovePasswordlessLoginsEnabled,
isUnlockWithBiometricsEnabled = authRepository
.userStateFlow
.value
?.activeAccount
?.isBiometricsEnabled == true,
isUnlockWithBiometricsEnabled = settingsRepository.isUnlockWithBiometricsEnabled,
isUnlockWithPinEnabled = settingsRepository.isUnlockWithPinEnabled,
vaultTimeout = settingsRepository.vaultTimeout,
vaultTimeoutAction = settingsRepository.vaultTimeoutAction,
@@ -75,12 +69,6 @@ class AccountSecurityViewModel @Inject constructor(
),
)
}
authRepository
.userStateFlow
.map { AccountSecurityAction.Internal.UserStateReceive(it) }
.onEach(::sendAction)
.launchIn(viewModelScope)
}
override fun handleAction(action: AccountSecurityAction): Unit = when (action) {
@@ -263,8 +251,6 @@ class AccountSecurityViewModel @Inject constructor(
is AccountSecurityAction.Internal.FingerprintResultReceive -> {
handleFingerprintResultReceived(action)
}
is AccountSecurityAction.Internal.UserStateReceive -> handleUserStateReceive(action)
}
}
@@ -281,17 +267,6 @@ class AccountSecurityViewModel @Inject constructor(
)
}
}
private fun handleUserStateReceive(action: AccountSecurityAction.Internal.UserStateReceive) {
mutableStateFlow.update {
it.copy(
isUnlockWithBiometricsEnabled = action
.userState
?.activeAccount
?.isBiometricsEnabled == true,
)
}
}
}
/**
@@ -546,12 +521,5 @@ sealed class AccountSecurityAction {
data class FingerprintResultReceive(
val fingerprintResult: UserFingerprintResult,
) : Internal()
/**
* The updated [userState] has been received.
*/
data class UserStateReceive(
val userState: UserState?,
) : Internal()
}
}