Updated on 2026-08-14
This commit is contained in:
parent
7190b70fd0
commit
a69015bfae
5 changed files with 29 additions and 9 deletions
|
|
@ -22,6 +22,7 @@ internal class SwapSelectTokensController @Inject constructor() {
|
|||
onBackClick = {},
|
||||
exchangeFrom = createEmptyExchangeFrom(),
|
||||
exchangeTo = createEmptyExchangeTo(),
|
||||
isBalanceHidden = false,
|
||||
),
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -13,4 +13,5 @@ internal data class SwapSelectTokensUM(
|
|||
val onBackClick: () -> Unit,
|
||||
val exchangeFrom: ExchangeCardUM,
|
||||
val exchangeTo: ExchangeCardUM,
|
||||
val isBalanceHidden: Boolean,
|
||||
)
|
||||
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue