diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/HasSingleWalletSignedHashesUseCase.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/HasSingleWalletSignedHashesUseCase.kt index 088110a3cb..cb7eb1f324 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/HasSingleWalletSignedHashesUseCase.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/HasSingleWalletSignedHashesUseCase.kt @@ -1,14 +1,15 @@ package com.tangem.feature.wallet.presentation.wallet.domain import com.tangem.core.decompose.di.ModelScoped -import com.tangem.domain.card.repository.CardRepository import com.tangem.domain.card.common.util.cardTypesResolver +import com.tangem.domain.card.repository.CardRepository import com.tangem.domain.demo.models.DemoConfig import com.tangem.domain.models.network.Network -import com.tangem.domain.walletmanager.WalletManagersFacade import com.tangem.domain.models.wallet.UserWallet +import com.tangem.domain.walletmanager.WalletManagersFacade import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map +import timber.log.Timber import javax.inject.Inject @ModelScoped @@ -27,18 +28,23 @@ class HasSingleWalletSignedHashesUseCase @Inject constructor( return@map false } - return@map walletManagersFacade.validateSignatureCount( - userWalletId = userWallet.walletId, - network = network, - signedHashes = userWallet.scanResponse.card.wallets.firstOrNull()?.totalSignedHashes ?: 0, - ) - .fold( - ifLeft = { true }, - ifRight = { - cardRepository.setCardWasScanned(cardId = userWallet.cardId) - false - }, + return@map try { + walletManagersFacade.validateSignatureCount( + userWalletId = userWallet.walletId, + network = network, + signedHashes = userWallet.scanResponse.card.wallets.firstOrNull()?.totalSignedHashes ?: 0, ) + .fold( + ifLeft = { true }, + ifRight = { + cardRepository.setCardWasScanned(cardId = userWallet.cardId) + false + }, + ) + } catch (e: IllegalArgumentException) { + Timber.w(e, "Unable to validate signature count: user wallet not found") + false + } } } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/DeleteWalletTransformer.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/DeleteWalletTransformer.kt index bf2960f3d7..f30c88927b 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/DeleteWalletTransformer.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/DeleteWalletTransformer.kt @@ -17,6 +17,11 @@ internal class DeleteWalletTransformer( val deletedWalletUM = prevState.getDeletedWalletState2() return when { + deletedWalletUM != null && deletedWalletState != null -> prevState.copy( + selectedWalletIndex = selectedWalletIndex, + wallets = (prevState.wallets - deletedWalletState).toImmutableList(), + wallets2 = (prevState.wallets2 - deletedWalletUM).toImmutableList(), + ) deletedWalletUM != null -> prevState.copy( selectedWalletIndex = selectedWalletIndex, wallets2 = (prevState.wallets2 - deletedWalletUM).toImmutableList(),