diff --git a/app/src/main/java/com/tangem/tap/di/domain/WalletsDomainModule.kt b/app/src/main/java/com/tangem/tap/di/domain/WalletsDomainModule.kt index e491a32ba9..3634bdc1b8 100644 --- a/app/src/main/java/com/tangem/tap/di/domain/WalletsDomainModule.kt +++ b/app/src/main/java/com/tangem/tap/di/domain/WalletsDomainModule.kt @@ -26,6 +26,12 @@ internal object WalletsDomainModule { return GetUserWalletUseCase(walletsStateHolder = walletsStateHolder) } + @Provides + @ViewModelScoped + fun providesGetSelectedWalletSyncUseCase(walletsStateHolder: WalletsStateHolder): GetSelectedWalletSyncUseCase { + return GetSelectedWalletSyncUseCase(walletsStateHolder = walletsStateHolder) + } + @Provides @ViewModelScoped fun providesGetSelectedWalletUseCase(walletsStateHolder: WalletsStateHolder): GetSelectedWalletUseCase { diff --git a/app/src/main/java/com/tangem/tap/features/customtoken/impl/di/CustomTokenInteractorModule.kt b/app/src/main/java/com/tangem/tap/features/customtoken/impl/di/CustomTokenInteractorModule.kt index 4d8d3d66dc..4f7a00a65a 100644 --- a/app/src/main/java/com/tangem/tap/features/customtoken/impl/di/CustomTokenInteractorModule.kt +++ b/app/src/main/java/com/tangem/tap/features/customtoken/impl/di/CustomTokenInteractorModule.kt @@ -1,7 +1,7 @@ package com.tangem.tap.features.customtoken.impl.di import com.tangem.datasource.api.tangemTech.TangemTechApi -import com.tangem.domain.wallets.usecase.GetSelectedWalletUseCase +import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase import com.tangem.tap.features.customtoken.impl.data.DefaultCustomTokenRepository import com.tangem.tap.features.customtoken.impl.domain.CustomTokenInteractor import com.tangem.tap.features.customtoken.impl.domain.DefaultCustomTokenInteractor @@ -25,7 +25,7 @@ internal object CustomTokenInteractorModule { fun provideCustomTokenInteractor( tangemTechApi: TangemTechApi, appCoroutineDispatcherProvider: AppCoroutineDispatcherProvider, - getSelectedWalletUseCase: GetSelectedWalletUseCase, + getSelectedWalletSyncUseCase: GetSelectedWalletSyncUseCase, reduxStateHolder: AppStateHolder, ): CustomTokenInteractor { return DefaultCustomTokenInteractor( @@ -34,7 +34,7 @@ internal object CustomTokenInteractorModule { dispatchers = appCoroutineDispatcherProvider, reduxStateHolder = reduxStateHolder, ), - getSelectedWalletUseCase = getSelectedWalletUseCase, + getSelectedWalletSyncUseCase = getSelectedWalletSyncUseCase, reduxStateHolder = reduxStateHolder, ) } diff --git a/app/src/main/java/com/tangem/tap/features/customtoken/impl/domain/DefaultCustomTokenInteractor.kt b/app/src/main/java/com/tangem/tap/features/customtoken/impl/domain/DefaultCustomTokenInteractor.kt index a74e4b8a66..aa2b37e0c6 100644 --- a/app/src/main/java/com/tangem/tap/features/customtoken/impl/domain/DefaultCustomTokenInteractor.kt +++ b/app/src/main/java/com/tangem/tap/features/customtoken/impl/domain/DefaultCustomTokenInteractor.kt @@ -19,7 +19,7 @@ import com.tangem.domain.models.scan.ScanResponse import com.tangem.domain.tokens.model.CryptoCurrency import com.tangem.domain.wallets.models.UserWallet import com.tangem.domain.wallets.models.UserWalletId -import com.tangem.domain.wallets.usecase.GetSelectedWalletUseCase +import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase import com.tangem.operations.derivation.ExtendedPublicKeysMap import com.tangem.tap.* import com.tangem.tap.common.extensions.dispatchDebugErrorNotification @@ -45,7 +45,7 @@ import timber.log.Timber */ class DefaultCustomTokenInteractor( private val featureRepository: CustomTokenRepository, - private val getSelectedWalletUseCase: GetSelectedWalletUseCase, + private val getSelectedWalletSyncUseCase: GetSelectedWalletSyncUseCase, private val reduxStateHolder: AppStateHolder, ) : CustomTokenInteractor { @@ -168,7 +168,7 @@ class DefaultCustomTokenInteractor( val cryptoCurrencyFactory = CryptoCurrencyFactory() submitNewAdd( - userWalletId = getSelectedWalletUseCase().fold(ifLeft = { return }, ifRight = UserWallet::walletId), + userWalletId = getSelectedWalletSyncUseCase().fold(ifLeft = { return }, ifRight = UserWallet::walletId), updatedScanResponse = scanResponse, currencyList = listOfNotNull( when (currency) { diff --git a/app/src/main/java/com/tangem/tap/features/customtoken/impl/presentation/viewmodels/AddCustomTokenViewModel.kt b/app/src/main/java/com/tangem/tap/features/customtoken/impl/presentation/viewmodels/AddCustomTokenViewModel.kt index 16d07a40ae..cc84a579e0 100644 --- a/app/src/main/java/com/tangem/tap/features/customtoken/impl/presentation/viewmodels/AddCustomTokenViewModel.kt +++ b/app/src/main/java/com/tangem/tap/features/customtoken/impl/presentation/viewmodels/AddCustomTokenViewModel.kt @@ -24,7 +24,7 @@ import com.tangem.domain.common.util.derivationStyleProvider import com.tangem.domain.features.addCustomToken.CustomCurrency import com.tangem.domain.tokens.GetCryptoCurrenciesUseCase import com.tangem.domain.tokens.model.CryptoCurrency -import com.tangem.domain.wallets.usecase.GetSelectedWalletUseCase +import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase import com.tangem.features.wallet.featuretoggles.WalletFeatureToggles import com.tangem.tap.domain.model.WalletDataModel import com.tangem.tap.features.customtoken.impl.domain.CustomTokenInteractor @@ -54,11 +54,11 @@ import javax.inject.Inject /** * ViewModel for add custom token screen * - * @param analyticsEventHandler analytics event handler - * @param featureRouter feature router - * @property featureInteractor feature interactor - * @property getSelectedWalletUseCase use case that returns selected wallet - * @property dispatchers coroutine dispatchers provider + * @param analyticsEventHandler analytics event handler + * @param featureRouter feature router + * @property featureInteractor feature interactor + * @property getSelectedWalletSyncUseCase use case that returns selected wallet + * @property dispatchers coroutine dispatchers provider * [REDACTED_AUTHOR] */ @@ -70,7 +70,7 @@ internal class AddCustomTokenViewModel @Inject constructor( getCurrenciesUseCase: GetCryptoCurrenciesUseCase, private val featureInteractor: CustomTokenInteractor, private val dispatchers: AppCoroutineDispatcherProvider, - private val getSelectedWalletUseCase: GetSelectedWalletUseCase, + private val getSelectedWalletSyncUseCase: GetSelectedWalletSyncUseCase, private val walletFeatureToggles: WalletFeatureToggles, ) : ViewModel(), DefaultLifecycleObserver { @@ -90,7 +90,7 @@ internal class AddCustomTokenViewModel @Inject constructor( init { if (walletFeatureToggles.isRedesignedScreenEnabled) { viewModelScope.launch(dispatchers.main) { - currentCryptoCurrencies = getSelectedWalletUseCase().fold( + currentCryptoCurrencies = getSelectedWalletSyncUseCase().fold( ifLeft = { emptyList() }, ifRight = { selectedWallet -> getCurrenciesUseCase(selectedWallet.walletId).fold( @@ -231,7 +231,7 @@ internal class AddCustomTokenViewModel @Inject constructor( private fun getNetworkSelectorItems(): List { val defaultNetwork = createNetworkSelectorItem(blockchain = Blockchain.Unknown) - val scanResponse = getSelectedWalletUseCase().fold( + val scanResponse = getSelectedWalletSyncUseCase().fold( ifLeft = { null }, ifRight = { it.scanResponse }, ) @@ -288,7 +288,7 @@ internal class AddCustomTokenViewModel @Inject constructor( } private fun createDerivationPathsSelectorField(): AddCustomTokenSelectorField.DerivationPath? { - return getSelectedWalletUseCase().fold( + return getSelectedWalletSyncUseCase().fold( ifLeft = { null }, ifRight = { if (!it.scanResponse.card.settings.isHDWalletAllowed) return null @@ -344,7 +344,7 @@ internal class AddCustomTokenViewModel @Inject constructor( } private fun createDerivationPathInputField(): AddCustomTokenInputField.DerivationPath? { - return getSelectedWalletUseCase().fold( + return getSelectedWalletSyncUseCase().fold( ifLeft = { null }, ifRight = { if (!it.scanResponse.card.settings.isHDWalletAllowed) return null @@ -474,7 +474,7 @@ internal class AddCustomTokenViewModel @Inject constructor( val isSupportedToken = if (!isNetworkSelected()) { true } else { - getSelectedWalletUseCase().fold( + getSelectedWalletSyncUseCase().fold( ifLeft = { false }, ifRight = { it.scanResponse.card.canHandleToken( @@ -517,7 +517,7 @@ internal class AddCustomTokenViewModel @Inject constructor( blockchain = networkSelectorValue, ) - val isSupportedToken = getSelectedWalletUseCase().fold( + val isSupportedToken = getSelectedWalletSyncUseCase().fold( ifLeft = { false }, ifRight = { it.scanResponse.card.canHandleToken( @@ -726,7 +726,7 @@ internal class AddCustomTokenViewModel @Inject constructor( private fun getDerivationPathForBlockchain(blockchain: Blockchain?): DerivationPath? { if (blockchain == null) return null - val derivationStyle = getSelectedWalletUseCase().fold( + val derivationStyle = getSelectedWalletSyncUseCase().fold( ifLeft = { null }, ifRight = { it.scanResponse.derivationStyleProvider.getDerivationStyle() @@ -742,7 +742,7 @@ internal class AddCustomTokenViewModel @Inject constructor( } private fun isUnsupportedBlockchain(blockchain: Blockchain): Boolean { - return getSelectedWalletUseCase().fold( + return getSelectedWalletSyncUseCase().fold( ifLeft = { false }, ifRight = { !it.scanResponse.card.canHandleBlockchain( 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 2fb7ba4d56..732f7aa06d 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 @@ -9,7 +9,7 @@ import arrow.core.Either import com.tangem.core.analytics.Analytics import com.tangem.domain.common.TapWorkarounds.isTangemTwins import com.tangem.domain.common.getTwinCardIdForUser -import com.tangem.domain.wallets.usecase.GetSelectedWalletUseCase +import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase import com.tangem.tap.common.analytics.events.AnalyticsParam import com.tangem.tap.common.analytics.events.Settings import com.tangem.tap.common.extensions.dispatchOnMain @@ -17,15 +17,15 @@ import com.tangem.tap.features.details.redux.CardSettingsState import com.tangem.tap.features.details.redux.DetailsAction import com.tangem.tap.features.details.redux.DetailsState import com.tangem.tap.features.wallet.redux.WalletAction +import com.tangem.tap.store import dagger.hilt.android.lifecycle.HiltViewModel import org.rekotlin.StoreSubscriber -import com.tangem.tap.store import timber.log.Timber import javax.inject.Inject @HiltViewModel internal class CardSettingsViewModel @Inject constructor( - private val getSelectedWalletUseCase: GetSelectedWalletUseCase, + private val getSelectedWalletSyncUseCase: GetSelectedWalletSyncUseCase, ) : ViewModel(), DefaultLifecycleObserver, StoreSubscriber { @@ -33,7 +33,7 @@ internal class CardSettingsViewModel @Inject constructor( mutableStateOf(updateState(store.state.detailsState.cardSettingsState)) override fun onStart(owner: LifecycleOwner) { - when (val selectedWalletEither = getSelectedWalletUseCase()) { + when (val selectedWalletEither = getSelectedWalletSyncUseCase()) { is Either.Left -> { Timber.e(selectedWalletEither.value.toString()) } diff --git a/app/src/main/java/com/tangem/tap/features/send/ui/SendViewModel.kt b/app/src/main/java/com/tangem/tap/features/send/ui/SendViewModel.kt index 999140cff9..806cb70f74 100644 --- a/app/src/main/java/com/tangem/tap/features/send/ui/SendViewModel.kt +++ b/app/src/main/java/com/tangem/tap/features/send/ui/SendViewModel.kt @@ -8,7 +8,7 @@ import com.tangem.domain.tokens.UpdateDelayedNetworkStatusUseCase import com.tangem.domain.tokens.model.CryptoCurrency import com.tangem.domain.tokens.model.Network import com.tangem.domain.wallets.models.UserWallet -import com.tangem.domain.wallets.usecase.GetSelectedWalletUseCase +import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase import com.tangem.features.send.navigation.SendRouter import com.tangem.tap.di.DelayedWork import com.tangem.tap.features.send.redux.AmountAction @@ -32,7 +32,7 @@ internal class SendViewModel @Inject constructor( private val isBalanceHiddenUseCase: IsBalanceHiddenUseCase, private val listenToFlipsUseCase: ListenToFlipsUseCase, private val updateDelayedCurrencyStatusUseCase: UpdateDelayedNetworkStatusUseCase, - private val getSelectedWalletUseCase: GetSelectedWalletUseCase, + private val getSelectedWalletSyncUseCase: GetSelectedWalletSyncUseCase, private val fetchPendingTransactionsUseCase: FetchPendingTransactionsUseCase, @DelayedWork private val coroutineScope: CoroutineScope, savedStateHandle: SavedStateHandle, @@ -60,7 +60,7 @@ internal class SendViewModel @Inject constructor( fun updateCurrencyDelayed() { if (cryptoCurrency != null) { coroutineScope.launch { - getSelectedWalletUseCase() + getSelectedWalletSyncUseCase() .fold( ifLeft = { Timber.e(it.toString()) }, ifRight = { wallet -> diff --git a/app/src/main/java/com/tangem/tap/features/tokens/impl/data/DefaultTokensListRepository.kt b/app/src/main/java/com/tangem/tap/features/tokens/impl/data/DefaultTokensListRepository.kt index 7f6ecf5aec..114990f05b 100644 --- a/app/src/main/java/com/tangem/tap/features/tokens/impl/data/DefaultTokensListRepository.kt +++ b/app/src/main/java/com/tangem/tap/features/tokens/impl/data/DefaultTokensListRepository.kt @@ -6,7 +6,7 @@ import androidx.paging.PagingData import com.tangem.datasource.api.tangemTech.TangemTechApi import com.tangem.datasource.local.testnet.TestnetTokensStorage import com.tangem.domain.common.TapWorkarounds.isTestCard -import com.tangem.domain.wallets.usecase.GetSelectedWalletUseCase +import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase import com.tangem.tap.features.tokens.impl.domain.TokensListRepository import com.tangem.tap.features.tokens.impl.domain.models.Token import com.tangem.utils.coroutines.CoroutineDispatcherProvider @@ -15,17 +15,17 @@ import kotlinx.coroutines.flow.Flow /** * Default repository implementation of tokens list feature * - * @property tangemTechApi Tangem Tech API - * @property dispatchers coroutine dispatchers provider - * @property getSelectedWalletUseCase use case that returns selected wallet - * @property testnetTokensStorage storage for getting testnet tokens data + * @property tangemTechApi Tangem Tech API + * @property dispatchers coroutine dispatchers provider + * @property getSelectedWalletSyncUseCase use case that returns selected wallet + * @property testnetTokensStorage storage for getting testnet tokens data * [REDACTED_AUTHOR] */ internal class DefaultTokensListRepository( private val tangemTechApi: TangemTechApi, private val dispatchers: CoroutineDispatcherProvider, - private val getSelectedWalletUseCase: GetSelectedWalletUseCase, + private val getSelectedWalletSyncUseCase: GetSelectedWalletSyncUseCase, private val testnetTokensStorage: TestnetTokensStorage, ) : TokensListRepository { @@ -40,11 +40,11 @@ internal class DefaultTokensListRepository( val defaultSource = TangemApiTokensPagingSource( api = tangemTechApi, dispatchers = dispatchers, - getSelectedWalletUseCase = getSelectedWalletUseCase, + getSelectedWalletSyncUseCase = getSelectedWalletSyncUseCase, searchText = searchText, ) - getSelectedWalletUseCase().fold( + getSelectedWalletSyncUseCase().fold( ifLeft = { defaultSource }, ifRight = { if (it.scanResponse.card.isTestCard) { diff --git a/app/src/main/java/com/tangem/tap/features/tokens/impl/data/TangemApiTokensPagingSource.kt b/app/src/main/java/com/tangem/tap/features/tokens/impl/data/TangemApiTokensPagingSource.kt index e36aaa66d5..5a65f98b6b 100644 --- a/app/src/main/java/com/tangem/tap/features/tokens/impl/data/TangemApiTokensPagingSource.kt +++ b/app/src/main/java/com/tangem/tap/features/tokens/impl/data/TangemApiTokensPagingSource.kt @@ -7,7 +7,7 @@ import com.tangem.datasource.api.tangemTech.TangemTechApi import com.tangem.domain.common.extensions.supportedBlockchains import com.tangem.domain.common.extensions.toNetworkId import com.tangem.domain.common.util.cardTypesResolver -import com.tangem.domain.wallets.usecase.GetSelectedWalletUseCase +import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase import com.tangem.tap.features.tokens.impl.data.converters.CoinsResponseConverter import com.tangem.tap.features.tokens.impl.domain.models.Token import com.tangem.utils.coroutines.CoroutineDispatcherProvider @@ -16,15 +16,15 @@ import com.tangem.utils.coroutines.runCatching /** * Paging source that get tokens by Tangem Tech API * - * @property api Tangem Tech API - * @property dispatchers coroutine dispatchers provider - * @property getSelectedWalletUseCase use case that returns selected wallet - * @property searchText search text + * @property api Tangem Tech API + * @property dispatchers coroutine dispatchers provider + * @property getSelectedWalletSyncUseCase use case that returns selected wallet + * @property searchText search text */ internal class TangemApiTokensPagingSource( private val api: TangemTechApi, private val dispatchers: CoroutineDispatcherProvider, - private val getSelectedWalletUseCase: GetSelectedWalletUseCase, + private val getSelectedWalletSyncUseCase: GetSelectedWalletSyncUseCase, private val searchText: String?, ) : PagingSource() { @@ -39,7 +39,7 @@ internal class TangemApiTokensPagingSource( val page = params.key ?: 0 return runCatching(dispatchers.io) { - val supportedBlockchains = getSelectedWalletUseCase().fold( + val supportedBlockchains = getSelectedWalletSyncUseCase().fold( ifLeft = { Blockchain.values().toList() }, ifRight = { it.scanResponse.card.supportedBlockchains(it.scanResponse.cardTypesResolver) }, ) diff --git a/app/src/main/java/com/tangem/tap/features/tokens/impl/di/TokensListInteractorModule.kt b/app/src/main/java/com/tangem/tap/features/tokens/impl/di/TokensListInteractorModule.kt index f588d3fc76..464420346b 100644 --- a/app/src/main/java/com/tangem/tap/features/tokens/impl/di/TokensListInteractorModule.kt +++ b/app/src/main/java/com/tangem/tap/features/tokens/impl/di/TokensListInteractorModule.kt @@ -2,7 +2,7 @@ package com.tangem.tap.features.tokens.impl.di import com.tangem.datasource.api.tangemTech.TangemTechApi import com.tangem.datasource.local.testnet.TestnetTokensStorage -import com.tangem.domain.wallets.usecase.GetSelectedWalletUseCase +import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase import com.tangem.tap.features.tokens.impl.data.DefaultTokensListRepository import com.tangem.tap.features.tokens.impl.domain.DefaultTokensListInteractor import com.tangem.tap.features.tokens.impl.domain.TokensListInteractor @@ -25,14 +25,14 @@ internal object TokensListInteractorModule { fun provideTokensListInteractor( tangemTechApi: TangemTechApi, dispatchers: CoroutineDispatcherProvider, - getSelectedWalletUseCase: GetSelectedWalletUseCase, + getSelectedWalletSyncUseCase: GetSelectedWalletSyncUseCase, testnetTokensStorage: TestnetTokensStorage, ): TokensListInteractor { return DefaultTokensListInteractor( repository = DefaultTokensListRepository( tangemTechApi = tangemTechApi, dispatchers = dispatchers, - getSelectedWalletUseCase = getSelectedWalletUseCase, + getSelectedWalletSyncUseCase = getSelectedWalletSyncUseCase, testnetTokensStorage = testnetTokensStorage, ), ) diff --git a/app/src/main/java/com/tangem/tap/features/tokens/impl/di/TokensListRepositoryModule.kt b/app/src/main/java/com/tangem/tap/features/tokens/impl/di/TokensListRepositoryModule.kt index 88443e8601..186545138b 100644 --- a/app/src/main/java/com/tangem/tap/features/tokens/impl/di/TokensListRepositoryModule.kt +++ b/app/src/main/java/com/tangem/tap/features/tokens/impl/di/TokensListRepositoryModule.kt @@ -2,7 +2,7 @@ package com.tangem.tap.features.tokens.impl.di import com.tangem.datasource.api.tangemTech.TangemTechApi import com.tangem.datasource.local.testnet.TestnetTokensStorage -import com.tangem.domain.wallets.usecase.GetSelectedWalletUseCase +import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase import com.tangem.tap.features.tokens.impl.data.DefaultTokensListRepository import com.tangem.tap.features.tokens.impl.domain.TokensListRepository import com.tangem.utils.coroutines.CoroutineDispatcherProvider @@ -24,13 +24,13 @@ internal object TokensListRepositoryModule { fun providesTokensListRepository( tangemTechApi: TangemTechApi, dispatchers: CoroutineDispatcherProvider, - getSelectedWalletUseCase: GetSelectedWalletUseCase, + getSelectedWalletSyncUseCase: GetSelectedWalletSyncUseCase, testnetTokensStorage: TestnetTokensStorage, ): TokensListRepository { return DefaultTokensListRepository( tangemTechApi = tangemTechApi, dispatchers = dispatchers, - getSelectedWalletUseCase = getSelectedWalletUseCase, + getSelectedWalletSyncUseCase = getSelectedWalletSyncUseCase, testnetTokensStorage = testnetTokensStorage, ) } diff --git a/app/src/main/java/com/tangem/tap/features/tokens/impl/presentation/viewmodels/TokensListMigration.kt b/app/src/main/java/com/tangem/tap/features/tokens/impl/presentation/viewmodels/TokensListMigration.kt index 6614f66d20..d4af20b4ea 100644 --- a/app/src/main/java/com/tangem/tap/features/tokens/impl/presentation/viewmodels/TokensListMigration.kt +++ b/app/src/main/java/com/tangem/tap/features/tokens/impl/presentation/viewmodels/TokensListMigration.kt @@ -11,7 +11,7 @@ import com.tangem.domain.tokens.TokenWithBlockchain import com.tangem.domain.tokens.TokensAction import com.tangem.domain.tokens.model.CryptoCurrency import com.tangem.domain.wallets.models.UserWallet -import com.tangem.domain.wallets.usecase.GetSelectedWalletUseCase +import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase import com.tangem.features.wallet.featuretoggles.WalletFeatureToggles import com.tangem.tap.domain.model.WalletDataModel import com.tangem.tap.features.wallet.models.Currency @@ -22,13 +22,13 @@ import kotlin.properties.Delegates /** * Class that divide a new and legacy logic when user uses tokens list screen * - * @property walletFeatureToggles wallet feature toggles - * @property getSelectedWalletUseCase use case that returns selected wallet - * @property getCurrenciesUseCase use case that returns crypto currencies of a specified wallet + * @property walletFeatureToggles wallet feature toggles + * @property getSelectedWalletSyncUseCase use case that returns selected wallet + * @property getCurrenciesUseCase use case that returns crypto currencies of a specified wallet */ internal class TokensListMigration( private val walletFeatureToggles: WalletFeatureToggles, - private val getSelectedWalletUseCase: GetSelectedWalletUseCase, + private val getSelectedWalletSyncUseCase: GetSelectedWalletSyncUseCase, private val getCurrenciesUseCase: GetCryptoCurrenciesUseCase, ) { @@ -47,7 +47,7 @@ internal class TokensListMigration( } private suspend fun getNewCryptoCurrencies(): TokensListCryptoCurrencies { - return when (val selectedWalletEither = getSelectedWalletUseCase()) { + return when (val selectedWalletEither = getSelectedWalletSyncUseCase()) { is Either.Left -> { Timber.e(selectedWalletEither.value.toString()) TokensListCryptoCurrencies(coins = emptyList(), tokens = emptyList()) diff --git a/app/src/main/java/com/tangem/tap/features/tokens/impl/presentation/viewmodels/TokensListViewModel.kt b/app/src/main/java/com/tangem/tap/features/tokens/impl/presentation/viewmodels/TokensListViewModel.kt index 41b7f45861..3989b0cd72 100644 --- a/app/src/main/java/com/tangem/tap/features/tokens/impl/presentation/viewmodels/TokensListViewModel.kt +++ b/app/src/main/java/com/tangem/tap/features/tokens/impl/presentation/viewmodels/TokensListViewModel.kt @@ -21,7 +21,7 @@ import com.tangem.domain.common.extensions.supportedTokens import com.tangem.domain.common.util.cardTypesResolver import com.tangem.domain.tokens.GetCryptoCurrenciesUseCase import com.tangem.domain.tokens.TokenWithBlockchain -import com.tangem.domain.wallets.usecase.GetSelectedWalletUseCase +import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase import com.tangem.features.wallet.featuretoggles.WalletFeatureToggles import com.tangem.tap.common.extensions.fullNameWithoutTestnet import com.tangem.tap.common.extensions.getGreyedOutIconRes @@ -53,11 +53,11 @@ import com.tangem.blockchain.common.Token as BlockchainToken /** * ViewModel for tokens list screen * - * @property interactor feature interactor - * @property router feature router - * @property dispatchers coroutine dispatchers provider - * @property getSelectedWalletUseCase use case that returns selected wallet - * @param analyticsEventHandler analytics event handler + * @property interactor feature interactor + * @property router feature router + * @property dispatchers coroutine dispatchers provider + * @property getSelectedWalletSyncUseCase use case that returns selected wallet + * @param analyticsEventHandler analytics event handler * [REDACTED_AUTHOR] */ @@ -67,7 +67,7 @@ internal class TokensListViewModel @Inject constructor( private val interactor: TokensListInteractor, private val router: TokensListRouter, private val dispatchers: AppCoroutineDispatcherProvider, - private val getSelectedWalletUseCase: GetSelectedWalletUseCase, + private val getSelectedWalletSyncUseCase: GetSelectedWalletSyncUseCase, analyticsEventHandler: AnalyticsEventHandler, getCurrenciesUseCase: GetCryptoCurrenciesUseCase, walletFeatureToggles: WalletFeatureToggles, @@ -89,7 +89,7 @@ internal class TokensListViewModel @Inject constructor( private val tokensListMigration = TokensListMigration( walletFeatureToggles = walletFeatureToggles, - getSelectedWalletUseCase = getSelectedWalletUseCase, + getSelectedWalletSyncUseCase = getSelectedWalletSyncUseCase, getCurrenciesUseCase = getCurrenciesUseCase, ) @@ -148,7 +148,7 @@ internal class TokensListViewModel @Inject constructor( } private fun isDifferentAddressesBlockVisible(): Boolean { - return getSelectedWalletUseCase().fold( + return getSelectedWalletSyncUseCase().fold( ifLeft = { false }, ifRight = { it.scanResponse.card.useOldStyleDerivation }, ) @@ -407,7 +407,7 @@ internal class TokensListViewModel @Inject constructor( } private fun isUnsupportedToken(blockchain: Blockchain): SupportTokensState? { - return getSelectedWalletUseCase().fold( + return getSelectedWalletSyncUseCase().fold( ifLeft = { null }, ifRight = { val cardTypesResolver = it.scanResponse.cardTypesResolver @@ -431,7 +431,7 @@ internal class TokensListViewModel @Inject constructor( } private fun isUnsupportedBlockchain(blockchain: Blockchain): Boolean { - return getSelectedWalletUseCase().fold( + return getSelectedWalletSyncUseCase().fold( ifLeft = { false }, ifRight = { !it.scanResponse.card.canHandleBlockchain( diff --git a/domain/wallets/src/main/java/com/tangem/domain/wallets/legacy/UseCaseUtils.kt b/domain/wallets/src/main/java/com/tangem/domain/wallets/legacy/UseCaseUtils.kt new file mode 100644 index 0000000000..ee7de756db --- /dev/null +++ b/domain/wallets/src/main/java/com/tangem/domain/wallets/legacy/UseCaseUtils.kt @@ -0,0 +1,16 @@ +package com.tangem.domain.wallets.legacy + +import arrow.core.raise.Raise +import arrow.core.raise.ensureNotNull + +internal inline fun Raise.ensureUserWalletListManagerNotNull( + walletsStateHolder: WalletsStateHolder, + raise: (Throwable) -> Error, +): UserWalletsListManager { + return ensureNotNull( + value = walletsStateHolder.userWalletsListManager, + raise = { + raise(IllegalStateException("User wallets list manager not initialized")) + }, + ) +} \ No newline at end of file diff --git a/domain/wallets/src/main/java/com/tangem/domain/wallets/models/DeleteWalletError.kt b/domain/wallets/src/main/java/com/tangem/domain/wallets/models/DeleteWalletError.kt index 6ed1ab11b9..29669fa19e 100644 --- a/domain/wallets/src/main/java/com/tangem/domain/wallets/models/DeleteWalletError.kt +++ b/domain/wallets/src/main/java/com/tangem/domain/wallets/models/DeleteWalletError.kt @@ -3,4 +3,6 @@ package com.tangem.domain.wallets.models sealed interface DeleteWalletError { object DataError : DeleteWalletError + + object UnableToDelete : DeleteWalletError } \ No newline at end of file diff --git a/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/DeleteWalletUseCase.kt b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/DeleteWalletUseCase.kt index e4102d98c2..2b43096bf4 100644 --- a/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/DeleteWalletUseCase.kt +++ b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/DeleteWalletUseCase.kt @@ -2,10 +2,12 @@ package com.tangem.domain.wallets.usecase import arrow.core.Either import arrow.core.left +import arrow.core.raise.either import arrow.core.right import com.tangem.common.doOnFailure import com.tangem.common.doOnSuccess import com.tangem.domain.wallets.legacy.WalletsStateHolder +import com.tangem.domain.wallets.legacy.ensureUserWalletListManagerNotNull import com.tangem.domain.wallets.models.DeleteWalletError import com.tangem.domain.wallets.models.UserWalletId @@ -19,13 +21,17 @@ import com.tangem.domain.wallets.models.UserWalletId class DeleteWalletUseCase(private val walletsStateHolder: WalletsStateHolder) { suspend operator fun invoke(userWalletId: UserWalletId): Either { - val userWalletsListManager = walletsStateHolder.userWalletsListManager - ?: return DeleteWalletError.DataError.left() + return either { + val userWalletsListManager = ensureUserWalletListManagerNotNull( + walletsStateHolder = walletsStateHolder, + raise = { DeleteWalletError.DataError }, + ) - userWalletsListManager.delete(userWalletIds = listOf(userWalletId)) - .doOnSuccess { return Unit.right() } - .doOnFailure { return DeleteWalletError.DataError.left() } + userWalletsListManager.delete(userWalletIds = listOf(userWalletId)) + .doOnSuccess { return Unit.right() } + .doOnFailure { return DeleteWalletError.UnableToDelete.left() } - return Unit.right() + return Unit.right() + } } } \ No newline at end of file diff --git a/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/GetSelectedWalletSyncUseCase.kt b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/GetSelectedWalletSyncUseCase.kt new file mode 100644 index 0000000000..7cd6ffa8a2 --- /dev/null +++ b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/GetSelectedWalletSyncUseCase.kt @@ -0,0 +1,34 @@ +package com.tangem.domain.wallets.usecase + +import arrow.core.Either +import arrow.core.raise.either +import arrow.core.raise.ensureNotNull +import com.tangem.domain.wallets.legacy.WalletsStateHolder +import com.tangem.domain.wallets.legacy.ensureUserWalletListManagerNotNull +import com.tangem.domain.wallets.models.GetUserWalletError +import com.tangem.domain.wallets.models.UserWallet + +/** + * Use case for getting selected wallet. + * Important! If all wallets is locked, use case returns a error. + * + * @property walletsStateHolder state holder for getting static initialized 'userWalletsListManager' + * +[REDACTED_AUTHOR] + */ +class GetSelectedWalletSyncUseCase(private val walletsStateHolder: WalletsStateHolder) { + + operator fun invoke(): Either { + return either { + val userWalletsListManager = ensureUserWalletListManagerNotNull( + walletsStateHolder = walletsStateHolder, + raise = GetUserWalletError::DataError, + ) + + ensureNotNull( + value = userWalletsListManager.selectedUserWalletSync, + raise = { GetUserWalletError.UserWalletNotFound }, + ) + } + } +} \ No newline at end of file diff --git a/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/GetSelectedWalletUseCase.kt b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/GetSelectedWalletUseCase.kt index a29aad4ea4..ee23723206 100644 --- a/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/GetSelectedWalletUseCase.kt +++ b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/GetSelectedWalletUseCase.kt @@ -2,14 +2,14 @@ package com.tangem.domain.wallets.usecase import arrow.core.Either import arrow.core.raise.either -import arrow.core.raise.ensureNotNull import com.tangem.domain.wallets.legacy.WalletsStateHolder +import com.tangem.domain.wallets.legacy.ensureUserWalletListManagerNotNull import com.tangem.domain.wallets.models.GetUserWalletError import com.tangem.domain.wallets.models.UserWallet +import kotlinx.coroutines.flow.Flow /** - * Use case for getting selected wallet. - * Important! If all wallets is locked, use case returns a error. + * Use case for getting flow of selected wallet. * * @property walletsStateHolder state holder for getting static initialized 'userWalletsListManager' * @@ -17,21 +17,14 @@ import com.tangem.domain.wallets.models.UserWallet */ class GetSelectedWalletUseCase(private val walletsStateHolder: WalletsStateHolder) { - operator fun invoke(): Either { + operator fun invoke(): Either> { return either { - val userWalletsListManager = ensureNotNull( - value = walletsStateHolder.userWalletsListManager, - raise = { - val error = IllegalStateException("User wallets list manager not initialized") - - GetUserWalletError.DataError(error) - }, + val userWalletsListManager = ensureUserWalletListManagerNotNull( + walletsStateHolder = walletsStateHolder, + raise = GetUserWalletError::DataError, ) - ensureNotNull( - value = userWalletsListManager.selectedUserWalletSync, - raise = { GetUserWalletError.UserWalletNotFound }, - ) + userWalletsListManager.selectedUserWallet } } } \ No newline at end of file diff --git a/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/GetUserWalletUseCase.kt b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/GetUserWalletUseCase.kt index 9d1fe85f5e..ae2ace600a 100644 --- a/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/GetUserWalletUseCase.kt +++ b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/GetUserWalletUseCase.kt @@ -4,6 +4,7 @@ import arrow.core.Either import arrow.core.raise.either import arrow.core.raise.ensureNotNull import com.tangem.domain.wallets.legacy.WalletsStateHolder +import com.tangem.domain.wallets.legacy.ensureUserWalletListManagerNotNull import com.tangem.domain.wallets.models.GetUserWalletError import com.tangem.domain.wallets.models.UserWallet import com.tangem.domain.wallets.models.UserWalletId @@ -12,13 +13,9 @@ import kotlinx.coroutines.flow.firstOrNull class GetUserWalletUseCase(private val walletsStateHolder: WalletsStateHolder) { suspend operator fun invoke(userWalletId: UserWalletId): Either = either { - val userWalletsListManager = ensureNotNull( - value = walletsStateHolder.userWalletsListManager, - raise = { - val error = IllegalStateException("User wallets list manager not initialized") - - GetUserWalletError.DataError(error) - }, + val userWalletsListManager = ensureUserWalletListManagerNotNull( + walletsStateHolder = walletsStateHolder, + raise = GetUserWalletError::DataError, ) val userWallets = userWalletsListManager.userWallets.firstOrNull().orEmpty() diff --git a/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/SaveWalletUseCase.kt b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/SaveWalletUseCase.kt index 9998fa02aa..8e25c40c1e 100644 --- a/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/SaveWalletUseCase.kt +++ b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/SaveWalletUseCase.kt @@ -2,11 +2,13 @@ package com.tangem.domain.wallets.usecase import arrow.core.Either import arrow.core.left +import arrow.core.raise.either import arrow.core.right import com.tangem.common.doOnFailure import com.tangem.common.doOnSuccess import com.tangem.domain.wallets.legacy.UserWalletsListError import com.tangem.domain.wallets.legacy.WalletsStateHolder +import com.tangem.domain.wallets.legacy.ensureUserWalletListManagerNotNull import com.tangem.domain.wallets.models.SaveWalletError import com.tangem.domain.wallets.models.UserWallet @@ -20,18 +22,24 @@ import com.tangem.domain.wallets.models.UserWallet class SaveWalletUseCase(private val walletsStateHolder: WalletsStateHolder) { suspend operator fun invoke(userWallet: UserWallet, canOverride: Boolean = false): Either { - val userWalletListManager = walletsStateHolder.userWalletsListManager - ?: return SaveWalletError.DataError.left() + return either { + val userWalletsListManager = ensureUserWalletListManagerNotNull( + walletsStateHolder = walletsStateHolder, + raise = { SaveWalletError.DataError }, + ) - userWalletListManager.save(userWallet, canOverride) - .doOnSuccess { return Unit.right() } - .doOnFailure { - return when (it) { - is UserWalletsListError.WalletAlreadySaved -> SaveWalletError.WalletAlreadySaved(it.messageResId) - else -> SaveWalletError.DataError - }.left() - } + userWalletsListManager.save(userWallet, canOverride) + .doOnSuccess { return Unit.right() } + .doOnFailure { + return when (it) { + is UserWalletsListError.WalletAlreadySaved -> SaveWalletError.WalletAlreadySaved( + it.messageResId, + ) + else -> SaveWalletError.DataError + }.left() + } - return Unit.right() + return Unit.right() + } } } \ No newline at end of file diff --git a/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/SelectWalletUseCase.kt b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/SelectWalletUseCase.kt index aa16ad812b..5dad261008 100644 --- a/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/SelectWalletUseCase.kt +++ b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/SelectWalletUseCase.kt @@ -3,11 +3,11 @@ package com.tangem.domain.wallets.usecase import arrow.core.Either import arrow.core.left import arrow.core.raise.either -import arrow.core.raise.ensureNotNull import arrow.core.right import com.tangem.common.doOnFailure import com.tangem.common.doOnSuccess import com.tangem.domain.wallets.legacy.WalletsStateHolder +import com.tangem.domain.wallets.legacy.ensureUserWalletListManagerNotNull import com.tangem.domain.wallets.models.SelectWalletError import com.tangem.domain.wallets.models.UserWalletId @@ -22,8 +22,8 @@ class SelectWalletUseCase(private val walletsStateHolder: WalletsStateHolder) { suspend operator fun invoke(userWalletId: UserWalletId): Either { return either { - val userWalletsListManager = ensureNotNull( - value = walletsStateHolder.userWalletsListManager, + val userWalletsListManager = ensureUserWalletListManagerNotNull( + walletsStateHolder = walletsStateHolder, raise = { SelectWalletError.DataError }, ) diff --git a/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/UpdateWalletUseCase.kt b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/UpdateWalletUseCase.kt index 4fbd06b10b..3a97779a39 100644 --- a/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/UpdateWalletUseCase.kt +++ b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/UpdateWalletUseCase.kt @@ -2,10 +2,12 @@ package com.tangem.domain.wallets.usecase import arrow.core.Either import arrow.core.left +import arrow.core.raise.either import arrow.core.right import com.tangem.common.doOnFailure import com.tangem.common.doOnSuccess import com.tangem.domain.wallets.legacy.WalletsStateHolder +import com.tangem.domain.wallets.legacy.ensureUserWalletListManagerNotNull import com.tangem.domain.wallets.models.UpdateWalletError import com.tangem.domain.wallets.models.UserWallet import com.tangem.domain.wallets.models.UserWalletId @@ -23,13 +25,17 @@ class UpdateWalletUseCase(private val walletsStateHolder: WalletsStateHolder) { userWalletId: UserWalletId, update: suspend (UserWallet) -> UserWallet, ): Either { - val userWalletsListManager = walletsStateHolder.userWalletsListManager - ?: return UpdateWalletError.DataError.left() + return either { + val userWalletsListManager = ensureUserWalletListManagerNotNull( + walletsStateHolder = walletsStateHolder, + raise = { UpdateWalletError.DataError }, + ) - userWalletsListManager.update(userWalletId, update) - .doOnSuccess { return it.right() } - .doOnFailure { return UpdateWalletError.DataError.left() } + userWalletsListManager.update(userWalletId, update) + .doOnSuccess { return it.right() } + .doOnFailure { return UpdateWalletError.DataError.left() } - return UpdateWalletError.DataError.left() + return UpdateWalletError.DataError.left() + } } } \ No newline at end of file diff --git a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt index 10e542bd74..ec55ebf9ae 100644 --- a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt +++ b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt @@ -3,7 +3,7 @@ package com.tangem.feature.swap.domain import com.tangem.domain.tokens.model.Network import com.tangem.domain.tokens.repository.CurrenciesRepository import com.tangem.domain.wallets.models.UserWallet -import com.tangem.domain.wallets.usecase.GetSelectedWalletUseCase +import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase import com.tangem.feature.swap.domain.cache.SwapDataCache import com.tangem.feature.swap.domain.converters.SwapCurrencyConverter import com.tangem.feature.swap.domain.models.SwapAmount @@ -31,7 +31,7 @@ internal class SwapInteractorImpl @Inject constructor( private val allowPermissionsHandler: AllowPermissionsHandler, private val currenciesRepository: CurrenciesRepository, private val walletFeatureToggles: WalletFeatureToggles, - private val getSelectedWalletUseCase: GetSelectedWalletUseCase, + private val getSelectedWalletSyncUseCase: GetSelectedWalletSyncUseCase, ) : SwapInteractor { private val swapCurrencyConverter = SwapCurrencyConverter() @@ -268,7 +268,7 @@ internal class SwapInteractorImpl @Inject constructor( private suspend fun onSuccessNewFlow(currency: Currency) { val network = network ?: return - getSelectedWalletUseCase().fold( + getSelectedWalletSyncUseCase().fold( ifRight = { userWallet -> getAndAddCryptoCurrency(userWallet, currency, network) }, @@ -344,7 +344,7 @@ internal class SwapInteractorImpl @Inject constructor( } private suspend fun isAllowedToSpend(networkId: String, fromToken: Currency, amount: SwapAmount): Boolean { - return getSelectedWalletUseCase().fold( + return getSelectedWalletSyncUseCase().fold( ifRight = { userWallet -> val allowance = repository.getAllowance( userWallet.walletId, @@ -737,7 +737,7 @@ internal class SwapInteractorImpl @Inject constructor( fromToken: Currency, swapAmount: SwapAmount? = null, ): String { - return getSelectedWalletUseCase().fold( + return getSelectedWalletSyncUseCase().fold( ifRight = { userWallet -> repository.getApproveData( userWalletId = userWallet.walletId, diff --git a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/di/SwapDomainModule.kt b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/di/SwapDomainModule.kt index 054d9f3765..17d421a793 100644 --- a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/di/SwapDomainModule.kt +++ b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/di/SwapDomainModule.kt @@ -2,7 +2,7 @@ package com.tangem.feature.swap.domain.di import com.tangem.domain.tokens.repository.CurrenciesRepository import com.tangem.domain.wallets.legacy.WalletsStateHolder -import com.tangem.domain.wallets.usecase.GetSelectedWalletUseCase +import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase import com.tangem.feature.swap.domain.* import com.tangem.feature.swap.domain.cache.SwapDataCacheImpl import com.tangem.features.wallet.featuretoggles.WalletFeatureToggles @@ -27,7 +27,7 @@ class SwapDomainModule { transactionManager: TransactionManager, currenciesRepository: CurrenciesRepository, walletFeatureToggles: WalletFeatureToggles, - @SwapScope getSelectedWalletUseCase: GetSelectedWalletUseCase, + @SwapScope getSelectedWalletSyncUseCase: GetSelectedWalletSyncUseCase, ): SwapInteractor { return SwapInteractorImpl( transactionManager = transactionManager, @@ -37,7 +37,7 @@ class SwapDomainModule { allowPermissionsHandler = AllowPermissionsHandlerImpl(), currenciesRepository = currenciesRepository, walletFeatureToggles = walletFeatureToggles, - getSelectedWalletUseCase = getSelectedWalletUseCase, + getSelectedWalletSyncUseCase = getSelectedWalletSyncUseCase, ) } @@ -52,8 +52,8 @@ class SwapDomainModule { @SwapScope @Provides @Singleton - fun providesGetSelectedWalletUseCase(walletsStateHolder: WalletsStateHolder): GetSelectedWalletUseCase { - return GetSelectedWalletUseCase(walletsStateHolder = walletsStateHolder) + fun providesGetSelectedWalletUseCase(walletsStateHolder: WalletsStateHolder): GetSelectedWalletSyncUseCase { + return GetSelectedWalletSyncUseCase(walletsStateHolder = walletsStateHolder) } } 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 25caf39344..fa4de5b71a 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 @@ -91,7 +91,7 @@ internal class WalletViewModel @Inject constructor( // region Parameters private val getWalletsUseCase: GetWalletsUseCase, private val saveWalletUseCase: SaveWalletUseCase, - getSelectedWalletUseCase: GetSelectedWalletUseCase, + getSelectedWalletSyncUseCase: GetSelectedWalletSyncUseCase, private val selectWalletUseCase: SelectWalletUseCase, private val updateWalletUseCase: UpdateWalletUseCase, private val deleteWalletUseCase: DeleteWalletUseCase, @@ -181,7 +181,7 @@ internal class WalletViewModel @Inject constructor( private val walletsUpdateActionResolver = WalletsUpdateActionResolver( currentStateProvider = Provider { uiState }, - getSelectedWalletUseCase = getSelectedWalletUseCase, + getSelectedWalletSyncUseCase = getSelectedWalletSyncUseCase, ) override fun onCreate(owner: LifecycleOwner) { diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletsUpdateActionResolver.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletsUpdateActionResolver.kt index d540d4e4d0..f3cdc837f5 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletsUpdateActionResolver.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletsUpdateActionResolver.kt @@ -3,7 +3,7 @@ package com.tangem.feature.wallet.presentation.wallet.viewmodels import com.tangem.common.Provider import com.tangem.domain.wallets.models.UserWallet import com.tangem.domain.wallets.models.UserWalletId -import com.tangem.domain.wallets.usecase.GetSelectedWalletUseCase +import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase import com.tangem.feature.wallet.presentation.wallet.domain.getCardsCount import com.tangem.feature.wallet.presentation.wallet.state.WalletLockedState import com.tangem.feature.wallet.presentation.wallet.state.WalletState @@ -12,12 +12,12 @@ import com.tangem.feature.wallet.presentation.wallet.state.components.WalletCard /** * Resolver that determines which update action will be performed * - * @property currentStateProvider current state provider - * @property getSelectedWalletUseCase use case that returns selected wallet + * @property currentStateProvider current state provider + * @property getSelectedWalletSyncUseCase use case that returns selected wallet */ internal class WalletsUpdateActionResolver( private val currentStateProvider: Provider, - private val getSelectedWalletUseCase: GetSelectedWalletUseCase, + private val getSelectedWalletSyncUseCase: GetSelectedWalletSyncUseCase, ) { fun resolve(wallets: List): Action { @@ -38,7 +38,7 @@ internal class WalletsUpdateActionResolver( private fun List.getSelectedWallet(): UserWallet { val hasUnlockedWallet = any { !it.isLocked } return if (hasUnlockedWallet) { - val selectedWalletId = getSelectedWalletUseCase().fold(ifLeft = ::error, ifRight = UserWallet::walletId) + val selectedWalletId = getSelectedWalletSyncUseCase().fold(ifLeft = ::error, ifRight = UserWallet::walletId) firstOrNull { it.walletId == selectedWalletId } ?: error("Wallets don't contain a wallet with id: $selectedWalletId")