diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/WalletStateController.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/WalletStateController.kt index 4f4e7c869f..a54ca605c0 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/WalletStateController.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/WalletStateController.kt @@ -30,6 +30,9 @@ internal class WalletStateController @Inject constructor() { val value: WalletScreenState get() = uiState.value + val isInitialized: Boolean + get() = value.selectedWalletIndex != NOT_INITIALIZED_WALLET_INDEX + private val mutableUiState: MutableStateFlow = MutableStateFlow(value = getInitialState()) fun update(function: (WalletScreenState) -> WalletScreenState) { diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletViewModel.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletViewModel.kt index b38bc57b61..e4fc8b0bff 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletViewModel.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletViewModel.kt @@ -7,7 +7,10 @@ import androidx.lifecycle.viewModelScope import arrow.core.getOrElse import com.tangem.core.analytics.api.AnalyticsEventHandler import com.tangem.domain.balancehiding.GetBalanceHidingSettingsUseCase -import com.tangem.domain.settings.* +import com.tangem.domain.settings.CanUseBiometryUseCase +import com.tangem.domain.settings.IsWalletsScrollPreviewEnabled +import com.tangem.domain.settings.ShouldAskPermissionUseCase +import com.tangem.domain.settings.ShouldShowSaveWalletScreenUseCase import com.tangem.domain.tokens.RefreshMultiCurrencyWalletQuotesUseCase import com.tangem.domain.wallets.models.UserWalletId import com.tangem.domain.wallets.usecase.GetSelectedWalletUseCase @@ -190,6 +193,8 @@ internal class WalletViewModel @Inject constructor( /** Change selected wallet state if selected wallet [selectedWalletId] was changed in the background */ private suspend fun changeSelectedWalletState(selectedWalletId: UserWalletId) { + if (!stateHolder.isInitialized) return + if (screenLifecycleProvider.isBackgroundState.value && selectedWalletId != stateHolder.getSelectedWalletId()) { stateHolder.value.wallets .indexOfFirstOrNull { prevState -> prevState.walletCardState.id == selectedWalletId }