Updated on 2026-08-14
This commit is contained in:
parent
86fca5488d
commit
561d1a185f
5 changed files with 26 additions and 41 deletions
|
|
@ -14,12 +14,7 @@ import com.tangem.core.decompose.di.ModelScoped
|
|||
import com.tangem.core.decompose.model.Model
|
||||
import com.tangem.core.decompose.model.ParamsContainer
|
||||
import com.tangem.core.ui.DesignFeatureToggles
|
||||
import com.tangem.core.ui.ds.image.TangemIconUM
|
||||
import com.tangem.core.ui.ds.message.TangemMessageEffect
|
||||
import com.tangem.core.ui.ds.message.TangemMessageUM
|
||||
import com.tangem.core.ui.extensions.resourceReference
|
||||
import com.tangem.core.ui.res.generated.icons.Icons
|
||||
import com.tangem.core.ui.res.generated.icons.ic_heart_28
|
||||
import com.tangem.core.ui.utils.DateTimeFormatters
|
||||
import com.tangem.domain.appcurrency.GetSelectedAppCurrencyUseCase
|
||||
import com.tangem.domain.appcurrency.model.AppCurrency
|
||||
|
|
@ -281,16 +276,7 @@ internal class FeedComponentModel @Inject constructor(
|
|||
globalState = GlobalFeedState.Loading,
|
||||
earnListUM = EarnListUM.Loading,
|
||||
forYouBannerUM = if (forYouFeatureToggles.isForYouEnabled) {
|
||||
ForYouBannerUM.Content(
|
||||
TangemMessageUM(
|
||||
id = ForYouBannerUM.Content::class.java.simpleName,
|
||||
title = resourceReference(R.string.for_you_title),
|
||||
subtitle = resourceReference(R.string.for_you_description),
|
||||
iconUM = TangemIconUM.Icon(Icons.ic_heart_28), // TODO ForYou update icon,
|
||||
messageEffect = TangemMessageEffect.Magic,
|
||||
onClick = params.feedClickIntents::openForYou,
|
||||
),
|
||||
)
|
||||
ForYouBannerUM.Content(onClick = params.feedClickIntents::openForYou)
|
||||
} else {
|
||||
ForYouBannerUM.Empty
|
||||
},
|
||||
|
|
|
|||
|
|
@ -4,9 +4,11 @@ import androidx.compose.animation.AnimatedContent
|
|||
import androidx.compose.animation.fadeIn
|
||||
import androidx.compose.animation.fadeOut
|
||||
import androidx.compose.animation.togetherWith
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.foundation.rememberScrollState
|
||||
import androidx.compose.foundation.verticalScroll
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.CompositionLocalProvider
|
||||
import androidx.compose.ui.Modifier
|
||||
|
|
@ -16,12 +18,13 @@ import androidx.compose.ui.tooling.preview.Preview
|
|||
import androidx.compose.ui.unit.dp
|
||||
import com.tangem.core.ui.components.SpacerH
|
||||
import com.tangem.core.ui.decompose.ComposableContentComponent
|
||||
import com.tangem.core.ui.ds.message.TangemMessage
|
||||
import com.tangem.core.ui.res.LocalMainBottomSheetColor
|
||||
import com.tangem.core.ui.res.LocalRedesignEnabled
|
||||
import com.tangem.core.ui.res.TangemThemePreview
|
||||
import com.tangem.core.ui.res.TangemThemePreviewRedesign
|
||||
import com.tangem.core.ui.ds2.messagebanner.TangemMessageBanner
|
||||
import com.tangem.core.ui.extensions.resourceReference
|
||||
import com.tangem.core.ui.res.*
|
||||
import com.tangem.core.ui.res.generated.icons.Icons
|
||||
import com.tangem.core.ui.res.generated.icons.ic_pie_chart_20
|
||||
import com.tangem.core.ui.test.BaseSearchBarTestTags.SEARCH_BAR
|
||||
import com.tangem.features.feed.impl.R
|
||||
import com.tangem.features.feed.model.market.list.state.SortByTypeUM
|
||||
import com.tangem.features.feed.ui.components.FeedSearchBar
|
||||
import com.tangem.features.feed.ui.feed.components.*
|
||||
|
|
@ -111,10 +114,20 @@ private fun FeedListContent(
|
|||
SpacerH(16.dp)
|
||||
|
||||
if (state.forYouBannerUM is ForYouBannerUM.Content && LocalRedesignEnabled.current) {
|
||||
// TODO ForYou replace with message banner
|
||||
TangemMessage(
|
||||
messageUM = state.forYouBannerUM.banner,
|
||||
modifier = Modifier.padding(horizontal = 16.dp),
|
||||
TangemMessageBanner(
|
||||
title = resourceReference(R.string.for_you_title),
|
||||
description = resourceReference(R.string.for_you_description),
|
||||
variant = TangemMessageBanner.Variant.Default,
|
||||
slotStart = {
|
||||
Icon(
|
||||
imageVector = Icons.ic_pie_chart_20,
|
||||
tint = TangemTheme.colors3.icon.primary,
|
||||
contentDescription = null,
|
||||
)
|
||||
},
|
||||
modifier = Modifier
|
||||
.padding(horizontal = 16.dp)
|
||||
.clickable(onClick = state.forYouBannerUM.onClick),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,15 +7,9 @@ import com.tangem.core.ui.components.currency.icon.CurrencyIconState
|
|||
import com.tangem.core.ui.components.label.entity.LabelLeadingContentUM
|
||||
import com.tangem.core.ui.components.label.entity.LabelUM
|
||||
import com.tangem.core.ui.components.marketprice.PriceChangeType
|
||||
import com.tangem.core.ui.ds.image.TangemIconUM
|
||||
import com.tangem.core.ui.ds.message.TangemMessageEffect
|
||||
import com.tangem.core.ui.ds.message.TangemMessageUM
|
||||
import com.tangem.core.ui.extensions.TextReference
|
||||
import com.tangem.core.ui.extensions.resourceReference
|
||||
import com.tangem.core.ui.extensions.stringReference
|
||||
import com.tangem.core.ui.res.TangemColorPalette
|
||||
import com.tangem.core.ui.res.generated.icons.Icons
|
||||
import com.tangem.core.ui.res.generated.icons.ic_heart_28
|
||||
import com.tangem.domain.models.currency.CryptoCurrency
|
||||
import com.tangem.domain.models.earn.EarnType
|
||||
import com.tangem.features.feed.model.market.list.state.SortByTypeUM
|
||||
|
|
@ -295,14 +289,7 @@ internal object FeedListPreviewDataProvider {
|
|||
|
||||
private fun createForYouItem(): ForYouBannerUM {
|
||||
return ForYouBannerUM.Content(
|
||||
TangemMessageUM(
|
||||
id = ForYouBannerUM.Content::class.java.simpleName,
|
||||
title = resourceReference(R.string.for_you_title),
|
||||
subtitle = resourceReference(R.string.for_you_description),
|
||||
iconUM = TangemIconUM.Icon(Icons.ic_heart_28), // TODO ForYou update icon,
|
||||
messageEffect = TangemMessageEffect.Magic,
|
||||
onClick = {},
|
||||
),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -2,7 +2,6 @@ package com.tangem.features.feed.ui.feed.state
|
|||
|
||||
import androidx.compose.runtime.Immutable
|
||||
import com.tangem.common.ui.markets.models.MarketsListItemUM
|
||||
import com.tangem.core.ui.ds.message.TangemMessageUM
|
||||
import com.tangem.core.ui.extensions.TextReference
|
||||
import com.tangem.features.feed.model.market.list.state.SortByTypeUM
|
||||
import com.tangem.features.feed.ui.earn.state.EarnListUM
|
||||
|
|
@ -86,7 +85,7 @@ internal data class SortChartConfigUM(
|
|||
internal sealed interface ForYouBannerUM {
|
||||
|
||||
data class Content(
|
||||
val banner: TangemMessageUM,
|
||||
val onClick: () -> Unit,
|
||||
) : ForYouBannerUM
|
||||
|
||||
data object Empty : ForYouBannerUM
|
||||
|
|
|
|||
|
|
@ -154,7 +154,7 @@ internal class FeedComponentModelTest {
|
|||
val model = createModel(forYouFeatureToggles = toggles)
|
||||
advanceUntilIdle()
|
||||
val banner = model.state.value.forYouBannerUM
|
||||
(banner as? ForYouBannerUM.Content)?.banner?.onClick?.invoke()
|
||||
(banner as? ForYouBannerUM.Content)?.onClick?.invoke()
|
||||
|
||||
// Assert – onClick must be wired to feedClickIntents::openForYou, not just any lambda
|
||||
assertThat(banner).isInstanceOf(ForYouBannerUM.Content::class.java)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue