Updated on 2026-08-14

This commit is contained in:
Tangem 2024-12-03 15:44:56 +04:00
parent 7190b70fd0
commit a69015bfae
5 changed files with 29 additions and 9 deletions

View file

@ -22,6 +22,7 @@ internal class SwapSelectTokensController @Inject constructor() {
onBackClick = {},
exchangeFrom = createEmptyExchangeFrom(),
exchangeTo = createEmptyExchangeTo(),
isBalanceHidden = false,
),
)

View file

@ -13,4 +13,5 @@ internal data class SwapSelectTokensUM(
val onBackClick: () -> Unit,
val exchangeFrom: ExchangeCardUM,
val exchangeTo: ExchangeCardUM,
val isBalanceHidden: Boolean,
)

View file

@ -8,6 +8,7 @@ import com.tangem.core.decompose.model.Model
import com.tangem.core.decompose.model.ParamsContainer
import com.tangem.core.decompose.navigation.Router
import com.tangem.core.ui.components.token.state.TokenItemState
import com.tangem.domain.balancehiding.GetBalanceHidingSettingsUseCase
import com.tangem.domain.tokens.model.CryptoCurrencyStatus
import com.tangem.features.onramp.component.SwapSelectTokensComponent
import com.tangem.features.onramp.swap.entity.SwapSelectTokensController
@ -18,8 +19,7 @@ import com.tangem.features.onramp.swap.entity.transformer.SelectFromTokenTransfo
import com.tangem.features.onramp.swap.entity.transformer.SelectToTokenTransformer
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.*
import kotlinx.coroutines.launch
import kotlinx.coroutines.withTimeout
import javax.inject.Inject
@ -31,6 +31,7 @@ internal class SwapSelectTokensModel @Inject constructor(
private val controller: SwapSelectTokensController,
private val router: Router,
private val analyticsEventHandler: AnalyticsEventHandler,
private val getBalanceHidingSettingsUseCase: GetBalanceHidingSettingsUseCase,
) : Model() {
val state: StateFlow<SwapSelectTokensUM> = controller.state
@ -43,9 +44,9 @@ internal class SwapSelectTokensModel @Inject constructor(
private val params = paramsContainer.require<SwapSelectTokensComponent.Params>()
init {
controller.update {
it.copy(onBackClick = ::onBackClick)
}
controller.update { it.copy(onBackClick = ::onBackClick) }
subscribeOnBalanceHidingSettings()
}
/**
@ -106,6 +107,17 @@ internal class SwapSelectTokensModel @Inject constructor(
}
}
private fun subscribeOnBalanceHidingSettings() {
getBalanceHidingSettingsUseCase()
.map { it.isBalanceHidden }
.distinctUntilChanged()
.onEach {
controller.update { state -> state.copy(isBalanceHidden = it) }
}
.flowOn(dispatchers.mainImmediate)
.launchIn(modelScope)
}
private fun onBackClick() {
analyticsEventHandler.send(
event = MainScreenAnalyticsEvent.ButtonClose(source = AnalyticsParam.ScreensSources.Swap),

View file

@ -38,13 +38,14 @@ import com.tangem.features.onramp.swap.entity.ExchangeCardUM
/**
* Exchange card
*
* @param state state
* @param modifier modifier
* @param state state
* @param isBalanceHidden is balance hidden
* @param modifier modifier
*
[REDACTED_AUTHOR]
*/
@Composable
internal fun ExchangeCard(state: ExchangeCardUM, modifier: Modifier = Modifier) {
internal fun ExchangeCard(state: ExchangeCardUM, isBalanceHidden: Boolean, modifier: Modifier = Modifier) {
Column(
modifier = modifier
.fillMaxWidth()
@ -67,7 +68,9 @@ internal fun ExchangeCard(state: ExchangeCardUM, modifier: Modifier = Modifier)
) { animatedState ->
when (animatedState) {
is ExchangeCardUM.Empty -> EmptyTokenBlock(text = animatedState.subtitleReference)
is ExchangeCardUM.Filled -> TokenItem(state = animatedState.tokenItemState, isBalanceHidden = false)
is ExchangeCardUM.Filled -> {
TokenItem(state = animatedState.tokenItemState, isBalanceHidden = isBalanceHidden)
}
}
}
}
@ -142,6 +145,7 @@ private fun Preview_ExchangeCard(@PreviewParameter(ExchangeCardUMProvider::class
TangemThemePreview {
ExchangeCard(
state = state,
isBalanceHidden = false,
modifier = Modifier
.background(TangemTheme.colors.background.secondary)
.padding(16.dp),

View file

@ -68,6 +68,7 @@ internal fun SwapSelectTokens(
item(key = "exchange_from", contentType = "exchange_from") {
ExchangeCard(
state = state.exchangeFrom,
isBalanceHidden = state.isBalanceHidden,
modifier = Modifier
.padding(horizontal = 16.dp)
.padding(top = 8.dp, bottom = 12.dp)
@ -89,6 +90,7 @@ internal fun SwapSelectTokens(
item(key = "exchange_to", contentType = "exchange_to") {
ExchangeCard(
state = state.exchangeTo,
isBalanceHidden = state.isBalanceHidden,
modifier = Modifier
.padding(horizontal = 16.dp)
.padding(bottom = 12.dp)