From 561d1a185f518175d60e5fead1e98aa2c0cf2cea Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 1 Jul 2026 16:00:26 +0500 Subject: [PATCH] Updated on 2026-08-14 --- .../feed/model/feed/FeedComponentModel.kt | 16 +--------- .../tangem/features/feed/ui/feed/FeedList.kt | 31 +++++++++++++------ .../preview/FeedListPreviewDataProvider.kt | 15 +-------- .../features/feed/ui/feed/state/FeedListUM.kt | 3 +- .../feed/model/feed/FeedComponentModelTest.kt | 2 +- 5 files changed, 26 insertions(+), 41 deletions(-) diff --git a/features/feed/impl/src/main/kotlin/com/tangem/features/feed/model/feed/FeedComponentModel.kt b/features/feed/impl/src/main/kotlin/com/tangem/features/feed/model/feed/FeedComponentModel.kt index 515c813659..ba06896031 100644 --- a/features/feed/impl/src/main/kotlin/com/tangem/features/feed/model/feed/FeedComponentModel.kt +++ b/features/feed/impl/src/main/kotlin/com/tangem/features/feed/model/feed/FeedComponentModel.kt @@ -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 }, diff --git a/features/feed/impl/src/main/kotlin/com/tangem/features/feed/ui/feed/FeedList.kt b/features/feed/impl/src/main/kotlin/com/tangem/features/feed/ui/feed/FeedList.kt index 64176e2ffa..b9d4649205 100644 --- a/features/feed/impl/src/main/kotlin/com/tangem/features/feed/ui/feed/FeedList.kt +++ b/features/feed/impl/src/main/kotlin/com/tangem/features/feed/ui/feed/FeedList.kt @@ -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), ) } diff --git a/features/feed/impl/src/main/kotlin/com/tangem/features/feed/ui/feed/preview/FeedListPreviewDataProvider.kt b/features/feed/impl/src/main/kotlin/com/tangem/features/feed/ui/feed/preview/FeedListPreviewDataProvider.kt index 4648ee5d8b..c820cfdc4c 100644 --- a/features/feed/impl/src/main/kotlin/com/tangem/features/feed/ui/feed/preview/FeedListPreviewDataProvider.kt +++ b/features/feed/impl/src/main/kotlin/com/tangem/features/feed/ui/feed/preview/FeedListPreviewDataProvider.kt @@ -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 = {}, - ), + onClick = {}, ) } } \ No newline at end of file diff --git a/features/feed/impl/src/main/kotlin/com/tangem/features/feed/ui/feed/state/FeedListUM.kt b/features/feed/impl/src/main/kotlin/com/tangem/features/feed/ui/feed/state/FeedListUM.kt index bd522d2562..f62a4f70d9 100644 --- a/features/feed/impl/src/main/kotlin/com/tangem/features/feed/ui/feed/state/FeedListUM.kt +++ b/features/feed/impl/src/main/kotlin/com/tangem/features/feed/ui/feed/state/FeedListUM.kt @@ -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 diff --git a/features/feed/impl/src/test/kotlin/com/tangem/features/feed/model/feed/FeedComponentModelTest.kt b/features/feed/impl/src/test/kotlin/com/tangem/features/feed/model/feed/FeedComponentModelTest.kt index d00fdc6b7d..4b8c0e9f6c 100644 --- a/features/feed/impl/src/test/kotlin/com/tangem/features/feed/model/feed/FeedComponentModelTest.kt +++ b/features/feed/impl/src/test/kotlin/com/tangem/features/feed/model/feed/FeedComponentModelTest.kt @@ -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)