Updated on 2026-08-14
This commit is contained in:
parent
f89ab30e5a
commit
64fda96648
9 changed files with 56 additions and 23 deletions
|
|
@ -31,6 +31,8 @@ import com.tangem.hot.sdk.TangemHotSdk
|
|||
import com.tangem.hot.sdk.model.HotAuth
|
||||
import com.tangem.hot.sdk.model.HotWalletId
|
||||
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
|
||||
import com.tangem.utils.coroutines.JobHolder
|
||||
import com.tangem.utils.coroutines.saveIn
|
||||
import kotlinx.coroutines.*
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
|
|
@ -63,6 +65,8 @@ internal class AccessCodeModel @Inject constructor(
|
|||
|
||||
private val params = paramsContainer.require<AccessCodeComponent.Params>()
|
||||
|
||||
private val settingCodeJobHolder = JobHolder()
|
||||
|
||||
internal val uiState: StateFlow<AccessCodeUM>
|
||||
field = MutableStateFlow(getInitialState())
|
||||
|
||||
|
|
@ -197,23 +201,25 @@ internal class AccessCodeModel @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
private fun setCode(userWalletId: UserWalletId, accessCode: String) {
|
||||
private suspend fun setCode(userWalletId: UserWalletId, accessCode: String) = coroutineScope {
|
||||
if (settingCodeJobHolder.isActive) {
|
||||
return@coroutineScope
|
||||
}
|
||||
|
||||
params.callbacks.onAccessCodeUpdateStarted(params.userWalletId)
|
||||
|
||||
modelScope.launch {
|
||||
val userWallet = getUserWalletUseCase(userWalletId)
|
||||
.getOrElse { error("User wallet with id $userWalletId not found") }
|
||||
.requireHotWallet()
|
||||
val userWallet = getUserWalletUseCase(userWalletId)
|
||||
.getOrElse { error("User wallet with id $userWalletId not found") }
|
||||
.requireHotWallet()
|
||||
|
||||
tryToAskForBiometry()
|
||||
tryToAskForBiometry()
|
||||
|
||||
val settingCodeJob = launch(dispatchers.main) {
|
||||
setCodeOperation(userWallet, accessCode)
|
||||
params.callbacks.onAccessCodeUpdated(params.userWalletId)
|
||||
}
|
||||
val settingCodeJob = launch(dispatchers.main) {
|
||||
setCodeOperation(userWallet, accessCode)
|
||||
params.callbacks.onAccessCodeUpdated(params.userWalletId)
|
||||
}.saveIn(settingCodeJobHolder)
|
||||
|
||||
setLoadingIfLongJob(settingCodeJob)
|
||||
}
|
||||
setLoadingIfLongJob(settingCodeJob)
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -246,7 +252,7 @@ internal class AccessCodeModel @Inject constructor(
|
|||
lockMethod = UserWalletsListRepository.LockMethod.AccessCode(accessCode.toCharArray()),
|
||||
)
|
||||
|
||||
if (walletsRepository.requireAccessCode().not() && canUseBiometryUseCase()) {
|
||||
if (walletsRepository.requireAccessCode().not() && canUseBiometryUseCase.strict()) {
|
||||
val newHotWalletIdWithBiometry = tangemHotSdk.changeAuth(
|
||||
unlockHotWallet = unlockHotWallet,
|
||||
auth = HotAuth.Biometry,
|
||||
|
|
|
|||
|
|
@ -219,7 +219,7 @@ internal class HotAccessCodeRequestModel @Inject constructor(
|
|||
}
|
||||
|
||||
private suspend fun HotWalletPasswordRequester.AttemptRequest.isBiometryButtonVisible(): Boolean =
|
||||
hasBiometry && canUseBiometryUseCase()
|
||||
hasBiometry && canUseBiometryUseCase.strict()
|
||||
|
||||
private fun dismissState() {
|
||||
uiState.update {
|
||||
|
|
|
|||
|
|
@ -254,7 +254,7 @@ internal class WelcomeModel @Inject constructor(
|
|||
}
|
||||
|
||||
private suspend fun canUnlockWithBiometrics(): Boolean {
|
||||
return canUseBiometryUseCase() && walletsRepository.useBiometricAuthentication()
|
||||
return canUseBiometryUseCase.strict() && walletsRepository.useBiometricAuthentication()
|
||||
}
|
||||
|
||||
suspend fun nonBiometricUnlockWallet(userWalletId: UserWalletId) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue