diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/cardsettings/CardSettingsViewModel.kt b/app/src/main/java/com/tangem/tap/features/details/ui/cardsettings/CardSettingsViewModel.kt index 6ed6a3155f..68d354a90c 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/cardsettings/CardSettingsViewModel.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/cardsettings/CardSettingsViewModel.kt @@ -63,15 +63,7 @@ internal class CardSettingsViewModel @Inject constructor( val screenState: MutableStateFlow = MutableStateFlow(getInitialState()) init { - runBlocking { - previousBiometricsRequestPolicy = cardSdkConfigRepository.isBiometricsRequestPolicy - - val userWallet = getUserWalletUseCase(userWalletId) - .getOrElse { error("User wallet not found") } - - cardSdkConfigRepository.isBiometricsRequestPolicy = userWallet.scanResponse.card.isAccessCodeSet && - settingsRepository.shouldSaveAccessCodes() - } + updateAccessCodeRequestPolicy() cardSettingsInteractor.scannedScanResponse .filterNotNull() @@ -80,9 +72,23 @@ internal class CardSettingsViewModel @Inject constructor( } override fun onCleared() { + // Restore the previous value of access code request policy cardSdkConfigRepository.isBiometricsRequestPolicy = previousBiometricsRequestPolicy } + private fun updateAccessCodeRequestPolicy() { + runBlocking { + // !!!IMPORTANT!!!: Do not forget to restore the previous value in onCleared() method + previousBiometricsRequestPolicy = cardSdkConfigRepository.isBiometricsRequestPolicy + + val userWallet = getUserWalletUseCase(userWalletId) + .getOrElse { error("User wallet $userWalletId not found") } + + cardSdkConfigRepository.isBiometricsRequestPolicy = userWallet.scanResponse.card.isAccessCodeSet && + settingsRepository.shouldSaveAccessCodes() + } + } + private fun getInitialState() = CardSettingsScreenState( cardDetails = null, onElementClick = ::handleClickingItem,