diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/SwapSelectTokensController.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/SwapSelectTokensController.kt index 4e76010bdb..f2fe285085 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/SwapSelectTokensController.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/SwapSelectTokensController.kt @@ -22,6 +22,7 @@ internal class SwapSelectTokensController @Inject constructor() { onBackClick = {}, exchangeFrom = createEmptyExchangeFrom(), exchangeTo = createEmptyExchangeTo(), + isBalanceHidden = false, ), ) diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/SwapSelectTokensUM.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/SwapSelectTokensUM.kt index 7defa5ca8f..1bdf9b047a 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/SwapSelectTokensUM.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/SwapSelectTokensUM.kt @@ -13,4 +13,5 @@ internal data class SwapSelectTokensUM( val onBackClick: () -> Unit, val exchangeFrom: ExchangeCardUM, val exchangeTo: ExchangeCardUM, + val isBalanceHidden: Boolean, ) \ No newline at end of file diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/model/SwapSelectTokensModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/model/SwapSelectTokensModel.kt index 6944ed517f..9a7eda16ad 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/model/SwapSelectTokensModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/model/SwapSelectTokensModel.kt @@ -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 = controller.state @@ -43,9 +44,9 @@ internal class SwapSelectTokensModel @Inject constructor( private val params = paramsContainer.require() 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), diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/ui/ExchangeCard.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/ui/ExchangeCard.kt index 7f750e10a2..bd45bcea37 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/ui/ExchangeCard.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/ui/ExchangeCard.kt @@ -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), diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/ui/SwapSelectTokens.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/ui/SwapSelectTokens.kt index 0b5d331ad5..7208284962 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/ui/SwapSelectTokens.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/ui/SwapSelectTokens.kt @@ -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)