Updated on 2026-08-14
This commit is contained in:
parent
283e760a4b
commit
3520a45882
3 changed files with 35 additions and 16 deletions
|
|
@ -157,13 +157,19 @@ internal class DefaultWalletAccountsFetcher @Inject constructor(
|
|||
userWalletId: UserWalletId,
|
||||
accountsResponse: GetWalletAccountsResponse,
|
||||
): GetWalletAccountsResponse {
|
||||
val hasSavedTokens = accountsResponse.unassignedTokens.isNotEmpty()
|
||||
|
||||
val response = defaultWalletAccountsResponseFactory.create(
|
||||
userWalletId = userWalletId,
|
||||
userTokensResponse = UserTokensResponse(
|
||||
group = accountsResponse.wallet.group.orDefault(),
|
||||
sort = accountsResponse.wallet.sort.orDefault(),
|
||||
tokens = accountsResponse.unassignedTokens,
|
||||
),
|
||||
userTokensResponse = if (hasSavedTokens) {
|
||||
UserTokensResponse(
|
||||
group = accountsResponse.wallet.group.orDefault(),
|
||||
sort = accountsResponse.wallet.sort.orDefault(),
|
||||
tokens = accountsResponse.unassignedTokens,
|
||||
)
|
||||
} else {
|
||||
null
|
||||
},
|
||||
)
|
||||
|
||||
store(userWalletId = userWalletId, response = response)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
package com.tangem.domain.account.status.utils
|
||||
|
||||
import arrow.core.some
|
||||
import arrow.core.toOption
|
||||
import com.tangem.domain.models.currency.CryptoCurrency
|
||||
import com.tangem.domain.models.currency.CryptoCurrencyStatus
|
||||
|
|
@ -52,7 +51,7 @@ internal class CryptoCurrencyStatusesFlowFactory @Inject constructor(
|
|||
.map { statusSources ->
|
||||
CryptoCurrencyStatusFactory.create(
|
||||
currency = currency,
|
||||
maybeNetworkStatus = statusSources.networkStatus.some(),
|
||||
maybeNetworkStatus = statusSources.networkStatus.toOption(),
|
||||
maybeQuoteStatus = statusSources.quoteStatus.toOption(),
|
||||
maybeYieldBalance = statusSources.yieldBalance.toOption(),
|
||||
)
|
||||
|
|
@ -74,11 +73,15 @@ internal class CryptoCurrencyStatusesFlowFactory @Inject constructor(
|
|||
|
||||
val yieldBalanceFlow = if (userWallet.isMultiCurrency) {
|
||||
networkStatusFlow.flatMapLatest { networkStatus ->
|
||||
getYieldBalanceFlow(
|
||||
userWalletId = userWallet.walletId,
|
||||
currencyId = currency.id,
|
||||
networkStatus = networkStatus,
|
||||
)
|
||||
if (networkStatus != null) {
|
||||
getYieldBalanceFlow(
|
||||
userWalletId = userWallet.walletId,
|
||||
currencyId = currency.id,
|
||||
networkStatus = networkStatus,
|
||||
)
|
||||
} else {
|
||||
flowOf(null)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
null
|
||||
|
|
@ -91,7 +94,7 @@ internal class CryptoCurrencyStatusesFlowFactory @Inject constructor(
|
|||
}
|
||||
|
||||
private fun combine(
|
||||
networkStatusFlow: Flow<NetworkStatus>,
|
||||
networkStatusFlow: Flow<NetworkStatus?>,
|
||||
yieldBalanceFlow: Flow<YieldBalance?>?,
|
||||
quoteStatusFlow: Flow<QuoteStatus>?,
|
||||
): Flow<CryptoCurrencyStatusSources> {
|
||||
|
|
@ -116,11 +119,14 @@ internal class CryptoCurrencyStatusesFlowFactory @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
private fun getNetworkStatusFlow(userWalletId: UserWalletId, network: Network): Flow<NetworkStatus> {
|
||||
private fun getNetworkStatusFlow(userWalletId: UserWalletId, network: Network): Flow<NetworkStatus?> {
|
||||
return singleNetworkStatusSupplier(
|
||||
params = SingleNetworkStatusProducer.Params(userWalletId = userWalletId, network = network),
|
||||
)
|
||||
.distinctUntilChanged()
|
||||
.onEmpty<NetworkStatus?> {
|
||||
emit(value = null)
|
||||
}
|
||||
}
|
||||
|
||||
private fun getQuoteStatusFlow(rawCurrencyId: CryptoCurrency.RawID): Flow<QuoteStatus> {
|
||||
|
|
@ -152,7 +158,7 @@ internal class CryptoCurrencyStatusesFlowFactory @Inject constructor(
|
|||
}
|
||||
|
||||
private data class CryptoCurrencyStatusSources(
|
||||
val networkStatus: NetworkStatus,
|
||||
val networkStatus: NetworkStatus? = null,
|
||||
val yieldBalance: YieldBalance? = null,
|
||||
val quoteStatus: QuoteStatus? = null,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ import com.tangem.core.ui.event.triggeredEvent
|
|||
import com.tangem.core.ui.extensions.resourceReference
|
||||
import com.tangem.core.ui.extensions.stringReference
|
||||
import com.tangem.core.ui.message.SnackbarMessage
|
||||
import com.tangem.domain.account.featuretoggle.AccountsFeatureToggles
|
||||
import com.tangem.domain.models.account.AccountId
|
||||
import com.tangem.domain.redux.OnboardingManageTokensAction
|
||||
import com.tangem.domain.redux.ReduxStateHolder
|
||||
import com.tangem.features.managetokens.analytics.ManageTokensAnalyticEvent
|
||||
|
|
@ -43,13 +45,18 @@ internal class OnboardingManageTokensModel @Inject constructor(
|
|||
private val messageSender: UiMessageSender,
|
||||
private val reduxStateHolder: ReduxStateHolder,
|
||||
private val analyticsEventHandler: AnalyticsEventHandler,
|
||||
accountsFeatureToggles: AccountsFeatureToggles,
|
||||
manageTokensListManagerFactory: ManageTokensListManager.Factory,
|
||||
manageTokensUseCasesFacadeFactory: ManageTokensUseCasesFacade.Factory,
|
||||
paramsContainer: ParamsContainer,
|
||||
) : Model() {
|
||||
|
||||
private val params: OnboardingManageTokensComponent.Params = paramsContainer.require()
|
||||
private val portfolio = ManageTokensMode.Wallet(params.userWalletId)
|
||||
private val portfolio = if (accountsFeatureToggles.isFeatureEnabled) {
|
||||
ManageTokensMode.Account(accountId = AccountId.forMainCryptoPortfolio(params.userWalletId))
|
||||
} else {
|
||||
ManageTokensMode.Wallet(params.userWalletId)
|
||||
}
|
||||
private val useCasesFacade: ManageTokensUseCasesFacade = manageTokensUseCasesFacadeFactory
|
||||
.create(mode = portfolio)
|
||||
private val manageTokensListManager = manageTokensListManagerFactory.create(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue