diff --git a/app/src/main/java/com/tangem/tap/proxy/AppStateHolder.kt b/app/src/main/java/com/tangem/tap/proxy/AppStateHolder.kt index c1262e0e1f..953ee95b85 100644 --- a/app/src/main/java/com/tangem/tap/proxy/AppStateHolder.kt +++ b/app/src/main/java/com/tangem/tap/proxy/AppStateHolder.kt @@ -11,6 +11,7 @@ import com.tangem.domain.wallets.legacy.WalletsStateHolder import com.tangem.domain.wallets.models.UserWallet import com.tangem.tap.common.entities.FiatCurrency import com.tangem.tap.common.extensions.dispatchOnMain +import com.tangem.tap.common.extensions.dispatchWithMain import com.tangem.tap.common.extensions.onUserWalletSelected import com.tangem.tap.common.redux.AppState import com.tangem.tap.domain.TangemSdkManager @@ -69,6 +70,10 @@ class AppStateHolder @Inject constructor() : WalletsStateHolder, ReduxNavControl mainStore?.dispatch(action) } + override suspend fun dispatchWithMain(action: Action) { + mainStore?.dispatchWithMain(action) + } + override suspend fun onUserWalletSelected(userWallet: UserWallet) { mainStore?.onUserWalletSelected(userWallet) } diff --git a/domain/legacy/src/main/java/com/tangem/domain/redux/ReduxStateHolder.kt b/domain/legacy/src/main/java/com/tangem/domain/redux/ReduxStateHolder.kt index 61170a1927..58c0bb0dde 100644 --- a/domain/legacy/src/main/java/com/tangem/domain/redux/ReduxStateHolder.kt +++ b/domain/legacy/src/main/java/com/tangem/domain/redux/ReduxStateHolder.kt @@ -7,5 +7,7 @@ interface ReduxStateHolder { fun dispatch(action: Action) + suspend fun dispatchWithMain(action: Action) + suspend fun onUserWalletSelected(userWallet: UserWallet) } \ No newline at end of file diff --git a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/viewmodels/TokenDetailsViewModel.kt b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/viewmodels/TokenDetailsViewModel.kt index bafa950c0c..06039c3878 100644 --- a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/viewmodels/TokenDetailsViewModel.kt +++ b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/viewmodels/TokenDetailsViewModel.kt @@ -333,7 +333,7 @@ internal class TokenDetailsViewModel @Inject constructor( val cryptoCurrencyStatus = cryptoCurrencyStatus ?: return - viewModelScope.launch(dispatchers.io) { + viewModelScope.launch(dispatchers.main) { when (val currency = cryptoCurrencyStatus.currency) { is CryptoCurrency.Coin -> { reduxStateHolder.dispatch( @@ -363,7 +363,7 @@ internal class TokenDetailsViewModel @Inject constructor( .distinctUntilChanged() .firstOrNull() - reduxStateHolder.dispatch( + reduxStateHolder.dispatchWithMain( action = TradeCryptoAction.New.SendToken( userWallet = wallet, tokenCurrency = tokenCurrency, 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 7d3c8f1dab..0b3284437c 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 @@ -675,7 +675,7 @@ internal class WalletViewModel @Inject constructor( .collectLatest { it.onRight { coinStatus -> uiState = stateFactory.getStateWithClosedBottomSheet() - reduxStateHolder.dispatch( + reduxStateHolder.dispatchWithMain( action = TradeCryptoAction.New.SendToken( userWallet = userWallet, tokenCurrency = requireNotNull(cryptoCurrencyStatus.currency as? CryptoCurrency.Token), @@ -1163,8 +1163,8 @@ internal class WalletViewModel @Inject constructor( ) } - private fun setupWalletConnectOnWallet(userWallet: UserWallet) { - reduxStateHolder.dispatch( + private suspend fun setupWalletConnectOnWallet(userWallet: UserWallet) { + reduxStateHolder.dispatchWithMain( action = WalletConnectActions.New.SetupUserChains(userWallet = userWallet), ) }