Updated on 2026-08-14

This commit is contained in:
Tangem 2026-07-17 13:56:42 +04:00
parent 75802c1551
commit 1ca2672884
42 changed files with 160 additions and 625 deletions

View file

@ -199,7 +199,6 @@ abstract class BaseTestCase : TestCase(
// build even when the app version resolves to 1.0.0-SNAPSHOT on CI (then 1.0.0 < x.xx would
// disable them). On the releases/6.0 branch every toggle with version <= 6.0 ships enabled.
// 6.0
"APP_REDESIGN_ENABLED" to true,
"TWI_1326_YIELD_MODE_SWAP_ENABLED" to true,
// 6.1
"TWI_1638_VA_MVP0_ENABLED" to true,

View file

@ -1,17 +0,0 @@
package com.tangem.tap.core.ui
import com.tangem.core.configtoggle.FeatureToggles
import com.tangem.core.configtoggle.feature.FeatureTogglesManager
import com.tangem.core.ui.DesignFeatureToggles
import javax.inject.Inject
class DefaultDesignFeatureToggles @Inject constructor(
private val featureTogglesManager: FeatureTogglesManager,
) : DesignFeatureToggles {
override val isRedesignEnabled: Boolean
get() = true
override val isWarningsRefactoringEnabled: Boolean
get() = featureTogglesManager.isFeatureEnabled(FeatureToggles.AND_14829_WARNINGS_REFACTORING_ENABLED)
}

View file

@ -4,7 +4,6 @@ import androidx.compose.material3.SnackbarHostState
import com.tangem.core.decompose.di.GlobalUiMessageSender
import com.tangem.core.decompose.ui.DefaultUiMessageSender
import com.tangem.core.decompose.ui.UiMessageSender
import com.tangem.core.ui.DesignFeatureToggles
import com.tangem.core.ui.UiDependencies
import com.tangem.core.ui.components.snackbar.TangemTopSnackbarHostState
import com.tangem.core.ui.haptic.VibratorHapticManager
@ -25,7 +24,6 @@ internal object UiDependenciesModule {
fun provideUiDependencies(
vibratorHapticManager: VibratorHapticManager,
appThemeModeHolder: AppThemeModeHolder,
designFeatureToggles: DesignFeatureToggles,
): UiDependencies {
return object : UiDependencies {
override val vibratorHapticManager = vibratorHapticManager
@ -33,7 +31,6 @@ internal object UiDependenciesModule {
override val globalSnackbarHostState: SnackbarHostState = SnackbarHostState()
override val globalTopSnackbarHostState: TangemTopSnackbarHostState = TangemTopSnackbarHostState()
override val eventMessageHandler: EventMessageHandler = EventMessageHandler()
override val designFeatureToggles: DesignFeatureToggles = designFeatureToggles
}
}

View file

@ -1,16 +0,0 @@
package com.tangem.tap.di.core.ui
import com.tangem.core.ui.DesignFeatureToggles
import com.tangem.tap.core.ui.DefaultDesignFeatureToggles
import dagger.Binds
import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
@Module
@InstallIn(SingletonComponent::class)
interface CoreUiBindsModule {
@Binds
fun bindDesignFeatureToggles(impl: DefaultDesignFeatureToggles): DesignFeatureToggles
}

View file

@ -4,7 +4,6 @@ import android.content.res.Configuration
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
@ -93,11 +92,9 @@ private fun PreviewV1() {
@Composable
private fun PreviewV2() {
TangemThemePreviewRedesign {
CompositionLocalProvider(LocalRedesignEnabled provides true) {
Column(Modifier.background(TangemTheme.colors2.surface.level3)) {
repeat(20) {
MarketsListItemPlaceholder()
}
Column(Modifier.background(TangemTheme.colors2.surface.level3)) {
repeat(20) {
MarketsListItemPlaceholder()
}
}
}

View file

@ -12,10 +12,9 @@ object QuickActionsConverter {
fun quickActions(
cryptoData: CryptoCurrencyData,
tokenActionsHandler: TokenActionsHandler,
isRedesignEnabled: Boolean,
context: TokenActionsContext = TokenActionsContext.Markets,
): QuickActions {
val states = toQuickActionStates(cryptoData.actions, isRedesignEnabled, context)
val states = toQuickActionStates(cryptoData.actions, context)
return QuickActions(
actions = states.map { it.action }.toImmutableList(),
onQuickActionClick = { quickActionUM ->
@ -70,21 +69,18 @@ object QuickActionsConverter {
*/
fun toQuickActions(
actions: List<TokenActionsState.ActionState>,
isRedesignEnabled: Boolean,
context: TokenActionsContext = TokenActionsContext.Markets,
): ImmutableList<QuickActionUM> =
toQuickActionStates(actions, isRedesignEnabled, context).map { it.action }.toImmutableList()
): ImmutableList<QuickActionUM> = toQuickActionStates(actions, context).map { it.action }.toImmutableList()
private fun toQuickActionStates(
actions: List<TokenActionsState.ActionState>,
isRedesignEnabled: Boolean,
context: TokenActionsContext,
): List<QuickActionState> {
val allowed = context.allowedActionsInOrder
?: return actions
.filter { it.unavailabilityReason == ScenarioUnavailabilityReason.None }
.mapNotNull { action ->
action.toQuickActionUM(isRedesignEnabled)?.let { QuickActionState(it, isEnabled = true) }
action.toQuickActionUM()?.let { QuickActionState(it, isEnabled = true) }
}
val byBsAction = actions.associateBy { it.toBsAction() }
@ -94,13 +90,13 @@ object QuickActionsConverter {
when (action) {
TokenActionsBSContentUM.Action.SendWithSwap ->
if (isExchangeAvailable) {
QuickActionState(swapAndSendUM(isRedesignEnabled), isEnabled = true)
QuickActionState(QuickActionUM.V2.SwapAndSend, isEnabled = true)
} else {
null
}
else -> {
val state = byBsAction[action] ?: return@mapNotNull null
val um = state.toQuickActionUM(isRedesignEnabled) ?: return@mapNotNull null
val um = state.toQuickActionUM() ?: return@mapNotNull null
QuickActionState(um, isEnabled = state.unavailabilityReason == ScenarioUnavailabilityReason.None)
}
}
@ -109,13 +105,7 @@ object QuickActionsConverter {
private data class QuickActionState(val action: QuickActionUM, val isEnabled: Boolean)
private fun swapAndSendUM(isRedesignEnabled: Boolean): QuickActionUM =
if (isRedesignEnabled) QuickActionUM.V2.SwapAndSend else QuickActionUM.V1.SwapAndSend
private fun TokenActionsState.ActionState.toQuickActionUM(isRedesignEnabled: Boolean): QuickActionUM? =
if (isRedesignEnabled) toV2() else toV1()
private fun TokenActionsState.ActionState.toV2(): QuickActionUM? = when (this) {
private fun TokenActionsState.ActionState.toQuickActionUM(): QuickActionUM? = when (this) {
is TokenActionsState.ActionState.Buy -> QuickActionUM.V2.Buy
is TokenActionsState.ActionState.Swap -> QuickActionUM.V2.Exchange(shouldShowBadge)
is TokenActionsState.ActionState.Receive -> QuickActionUM.V2.Receive
@ -126,17 +116,6 @@ object QuickActionsConverter {
else -> null
}
private fun TokenActionsState.ActionState.toV1(): QuickActionUM? = when (this) {
is TokenActionsState.ActionState.Buy -> QuickActionUM.V1.Buy
is TokenActionsState.ActionState.Swap -> QuickActionUM.V1.Exchange(shouldShowBadge)
is TokenActionsState.ActionState.Receive -> QuickActionUM.V1.Receive
is TokenActionsState.ActionState.Send -> QuickActionUM.V1.Send
is TokenActionsState.ActionState.Sell -> QuickActionUM.V1.Sell
is TokenActionsState.ActionState.Stake -> QuickActionUM.V1.Stake
is TokenActionsState.ActionState.YieldMode -> QuickActionUM.V1.YieldMode(apy)
else -> null
}
private fun TokenActionsState.ActionState.toBsAction(): TokenActionsBSContentUM.Action? = when (this) {
is TokenActionsState.ActionState.Buy -> TokenActionsBSContentUM.Action.Buy
is TokenActionsState.ActionState.Swap -> TokenActionsBSContentUM.Action.Exchange

View file

@ -21,7 +21,6 @@ internal class QuickActionsConverterTest {
// Act
val result = QuickActionsConverter.toQuickActions(
actions = actions,
isRedesignEnabled = true,
context = TokenActionsContext.AddFunds,
)
@ -45,7 +44,6 @@ internal class QuickActionsConverterTest {
// Act
val result = QuickActionsConverter.toQuickActions(
actions = actions,
isRedesignEnabled = true,
context = TokenActionsContext.Markets,
)
@ -68,7 +66,6 @@ internal class QuickActionsConverterTest {
// Act
val result = QuickActionsConverter.toQuickActions(
actions = actions,
isRedesignEnabled = true,
context = TokenActionsContext.Markets,
)
@ -92,7 +89,6 @@ internal class QuickActionsConverterTest {
// Act
val result = QuickActionsConverter.toQuickActions(
actions = actions,
isRedesignEnabled = true,
context = TokenActionsContext.Transfer,
)
@ -116,7 +112,6 @@ internal class QuickActionsConverterTest {
// Act
val result = QuickActionsConverter.toQuickActions(
actions = actions,
isRedesignEnabled = true,
context = TokenActionsContext.Transfer,
)
@ -141,7 +136,6 @@ internal class QuickActionsConverterTest {
// Act
val result = QuickActionsConverter.toQuickActions(
actions = actions,
isRedesignEnabled = true,
context = TokenActionsContext.AddFunds,
)
@ -167,7 +161,6 @@ internal class QuickActionsConverterTest {
// Act
val result = QuickActionsConverter.toQuickActions(
actions = actions,
isRedesignEnabled = true,
context = TokenActionsContext.Transfer,
)
@ -194,7 +187,6 @@ internal class QuickActionsConverterTest {
val result = QuickActionsConverter.quickActions(
cryptoData = cryptoData(actions),
tokenActionsHandler = mockk(relaxed = true),
isRedesignEnabled = true,
context = TokenActionsContext.Transfer,
)
@ -215,7 +207,6 @@ internal class QuickActionsConverterTest {
val result = QuickActionsConverter.quickActions(
cryptoData = cryptoData(actions),
tokenActionsHandler = mockk(relaxed = true),
isRedesignEnabled = true,
context = TokenActionsContext.AddFunds,
)

View file

@ -7,7 +7,6 @@ import androidx.compose.foundation.layout.*
import androidx.compose.material3.Icon
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.Immutable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@ -30,7 +29,6 @@ import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.extensions.resolveReference
import com.tangem.core.ui.extensions.stringReference
import com.tangem.core.ui.extensions.stringResourceSafe
import com.tangem.core.ui.res.LocalRedesignEnabled
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreview
import com.tangem.core.ui.res.TangemThemePreviewRedesign
@ -190,12 +188,10 @@ private fun PortfolioSelectRowPreview(@PreviewParameter(PreviewProvider::class)
@Composable
private fun PortfolioSelectRowPreviewV2(@PreviewParameter(PreviewProvider::class) state: PortfolioSelectUM) {
TangemThemePreviewRedesign {
CompositionLocalProvider(LocalRedesignEnabled provides true) {
PortfolioSelectRowV2(
state = state,
modifier = Modifier.background(TangemTheme.colors2.surface.level3),
)
}
PortfolioSelectRowV2(
state = state,
modifier = Modifier.background(TangemTheme.colors2.surface.level3),
)
}
}

View file

@ -8,7 +8,6 @@ import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.Icon
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
@ -37,7 +36,6 @@ import com.tangem.core.ui.ds.row.TangemRowContainer
import com.tangem.core.ui.ds.row.TangemRowLayoutId
import com.tangem.core.ui.extensions.resolveReference
import com.tangem.core.ui.extensions.stringResourceSafe
import com.tangem.core.ui.res.LocalRedesignEnabled
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreviewRedesign
@ -202,15 +200,13 @@ private fun AddButton(state: AddTokenUM.Button, modifier: Modifier = Modifier) {
@Composable
private fun Preview(@PreviewParameter(PreviewProvider::class) state: AddTokenUM) {
TangemThemePreviewRedesign {
CompositionLocalProvider(LocalRedesignEnabled provides true) {
Box(
modifier = Modifier
.fillMaxWidth()
.background(TangemTheme.colors2.surface.level2)
.padding(horizontal = 16.dp),
) {
AddTokenContentV2(state = state)
}
Box(
modifier = Modifier
.fillMaxWidth()
.background(TangemTheme.colors2.surface.level2)
.padding(horizontal = 16.dp),
) {
AddTokenContentV2(state = state)
}
}
}

View file

@ -1,46 +0,0 @@
package com.tangem.common.ui.expressStatus
import androidx.compose.foundation.lazy.LazyListScope
import androidx.compose.ui.Modifier
import com.tangem.common.ui.R
import com.tangem.common.ui.expressStatus.state.ExpressTransactionStateIconUM
import com.tangem.common.ui.expressStatus.state.ExpressTransactionStateUM
import com.tangem.core.ui.res.TangemTheme
import kotlinx.collections.immutable.PersistentList
fun LazyListScope.expressTransactionsItemsLegacy(
expressTxs: PersistentList<ExpressTransactionStateUM>,
modifier: Modifier = Modifier,
) {
items(
count = expressTxs.size,
key = { index -> expressTxs[index].info.txId },
contentType = { index -> expressTxs[index]::class.java },
) { index ->
val itemInfo = expressTxs[index].info
val (iconRes, tint) = when (itemInfo.iconState) {
ExpressTransactionStateIconUM.Warning -> {
R.drawable.ic_alert_triangle_20 to TangemTheme.colors.icon.attention
}
ExpressTransactionStateIconUM.Error -> {
R.drawable.ic_alert_circle_24 to TangemTheme.colors.icon.warning
}
ExpressTransactionStateIconUM.None -> null to null
}
ExpressStatusItem(
title = itemInfo.title,
fromTokenIconState = itemInfo.fromCurrencyIcon,
toTokenIconState = itemInfo.toCurrencyIcon,
fromAmount = itemInfo.fromAmount,
fromSymbol = itemInfo.fromAmountSymbol,
toAmount = itemInfo.toAmount,
toSymbol = itemInfo.toAmountSymbol,
subtitle = itemInfo.subtitle,
onClick = itemInfo.onClick,
infoIconRes = iconRes,
infoIconTint = tint,
modifier = modifier.animateItem(),
)
}
}

View file

@ -19,10 +19,6 @@
"name": "TWI_485_USEDESK_ENABLED",
"version": "undefined"
},
{
"name": "APP_REDESIGN_ENABLED",
"version": "6.0"
},
{
"name": "VIRTUAL_ACCOUNTS_ENABLED",
"version": "undefined"

View file

@ -39,7 +39,6 @@ internal class FeatureTogglesNamingConventionTest {
/** Toggles created before the AND_/TWI_ naming convention. Do NOT add new entries. */
val EXCLUDED_TOGGLES_LIST = setOf(
"ADDRESS_SYNC_ENABLED",
"APP_REDESIGN_ENABLED",
"NEW_CARD_SCANNING_ENABLED",
"VIRTUAL_ACCOUNTS_ENABLED",
"VISA_ONBOARDING_ENABLED",

View file

@ -1,7 +0,0 @@
package com.tangem.core.ui
interface DesignFeatureToggles {
val isRedesignEnabled: Boolean
val isWarningsRefactoringEnabled: Boolean
}

View file

@ -19,6 +19,4 @@ interface UiDependencies {
val globalTopSnackbarHostState: TangemTopSnackbarHostState
val eventMessageHandler: EventMessageHandler
val designFeatureToggles: DesignFeatureToggles
}

View file

@ -10,44 +10,15 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.tangem.core.ui.R
import com.tangem.core.ui.components.buttons.SecondarySmallButton
import com.tangem.core.ui.components.buttons.SmallButtonConfig
import com.tangem.core.ui.ds.button.*
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.core.ui.extensions.stringResourceSafe
import com.tangem.core.ui.res.LocalRedesignEnabled
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreview
import com.tangem.core.ui.res.TangemThemePreviewRedesign
@Composable
fun UnableToLoadData(onRetryClick: () -> Unit, modifier: Modifier = Modifier) {
if (LocalRedesignEnabled.current) {
UnableToLoadDataV2(onRetryClick, modifier)
} else {
UnableToLoadDataV1(onRetryClick, modifier)
}
}
@Composable
private fun UnableToLoadDataV1(onRetryClick: () -> Unit, modifier: Modifier = Modifier) {
Column(
modifier = modifier,
verticalArrangement = Arrangement.spacedBy(TangemTheme.dimens.spacing12),
horizontalAlignment = Alignment.CenterHorizontally,
) {
Text(
text = stringResourceSafe(R.string.markets_loading_error_title),
style = TangemTheme.typography.caption1,
color = TangemTheme.colors.text.tertiary,
)
SecondarySmallButton(
config = SmallButtonConfig(
text = resourceReference(R.string.try_to_load_data_again_button_title),
onClick = onRetryClick,
),
)
}
UnableToLoadDataV2(onRetryClick, modifier)
}
@Composable
@ -80,13 +51,4 @@ private fun PreviewV2() {
TangemThemePreviewRedesign {
UnableToLoadDataV2(onRetryClick = {})
}
}
@Preview
@Preview(uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
private fun PreviewV1() {
TangemThemePreview {
UnableToLoadDataV1(onRetryClick = {})
}
}

View file

@ -2,22 +2,13 @@ package com.tangem.core.ui.components.bottomsheets.message
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import com.tangem.core.ui.res.LocalRedesignEnabled
@Composable
fun MessageBottomSheet(state: MessageBottomSheetUM, onDismissRequest: () -> Unit) {
if (LocalRedesignEnabled.current) {
MessageBottomSheetV2(state, onDismissRequest)
} else {
MessageBottomSheetV1(state, onDismissRequest)
}
MessageBottomSheetV2(state, onDismissRequest)
}
@Composable
fun MessageBottomSheetContent(state: MessageBottomSheetUM, modifier: Modifier = Modifier) {
if (LocalRedesignEnabled.current) {
MessageBottomSheetContentV2(state, modifier)
} else {
MessageBottomSheetContentV1(state, modifier)
}
MessageBottomSheetContentV2(state, modifier)
}

View file

@ -19,7 +19,6 @@ import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import com.tangem.core.ui.components.CircleShimmer
import com.tangem.core.ui.extensions.conditional
import com.tangem.core.ui.res.LocalRedesignEnabled
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.test.TokenElementsTestTags
import com.tangem.core.ui.utils.getGreyScaleColorFilter
@ -51,11 +50,7 @@ fun TangemCurrencyIcon(state: CurrencyIconState, modifier: Modifier = Modifier,
modifier = iconModifier,
shouldShowTopBadge = shouldDisplayNetwork,
networkBadgeSize = 14.dp,
networkBadgeBackground = if (LocalRedesignEnabled.current) {
TangemTheme.colors2.surface.level1
} else {
TangemTheme.colors.background.primary
},
networkBadgeBackground = TangemTheme.colors2.surface.level1,
)
}
}

View file

@ -7,10 +7,8 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.SpanStyle
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.buildAnnotatedString
import androidx.compose.ui.text.withStyle
import androidx.compose.ui.tooling.preview.Preview
@ -21,7 +19,6 @@ import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.extensions.resolveReference
import com.tangem.core.ui.extensions.stringReference
import com.tangem.core.ui.extensions.stringResourceSafe
import com.tangem.core.ui.res.LocalRedesignEnabled
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreview
import com.tangem.core.ui.res.TangemThemePreviewRedesign
@ -34,67 +31,13 @@ fun DescriptionItem(
hasFullDescription: Boolean,
onReadMoreClick: () -> Unit,
modifier: Modifier = Modifier,
textStyle: TextStyle = TangemTheme.typography.body2,
) {
if (LocalRedesignEnabled.current) {
DescriptionItemV2(
description = description,
hasFullDescription = hasFullDescription,
onReadMoreClick = onReadMoreClick,
modifier = modifier,
)
} else {
DescriptionItemV1(
description = description,
hasFullDescription = hasFullDescription,
onReadMoreClick = onReadMoreClick,
modifier = modifier,
textStyle = textStyle,
)
}
}
@Composable
private fun DescriptionItemV1(
description: TextReference,
hasFullDescription: Boolean,
onReadMoreClick: () -> Unit,
modifier: Modifier = Modifier,
textStyle: TextStyle = TangemTheme.typography.body2,
) {
if (hasFullDescription) {
val text = buildAnnotatedString {
withStyle(SpanStyle(color = TangemTheme.colors.text.secondary)) {
append(description.resolveReference())
}
withStyle(SpanStyle(color = TangemTheme.colors.text.accent)) {
append(
" " + stringResourceSafe(R.string.common_read_more).replace(
' ',
StringsSigns.NON_BREAKING_SPACE,
),
)
}
}
Text(
modifier = modifier
.clickable(
interactionSource = null,
indication = null,
onClick = onReadMoreClick,
),
text = text,
style = textStyle,
)
} else {
Text(
modifier = modifier,
text = description.resolveReference(),
style = textStyle,
color = TangemTheme.colors.text.secondary,
)
}
DescriptionItemV2(
description = description,
hasFullDescription = hasFullDescription,
onReadMoreClick = onReadMoreClick,
modifier = modifier,
)
}
@Composable
@ -141,34 +84,7 @@ private fun DescriptionItemV2(
@Composable
fun DescriptionPlaceholder(modifier: Modifier = Modifier) {
if (LocalRedesignEnabled.current) {
DescriptionPlaceholderV2(modifier)
} else {
DescriptionPlaceholderV1(modifier)
}
}
@Composable
private fun DescriptionPlaceholderV1(modifier: Modifier = Modifier) {
Column(
modifier = modifier,
) {
TextShimmer(
modifier = Modifier.fillMaxWidth(),
style = TangemTheme.typography.body2,
textSizeHeight = true,
)
TextShimmer(
modifier = Modifier.fillMaxWidth(),
style = TangemTheme.typography.body2,
textSizeHeight = true,
)
TextShimmer(
modifier = Modifier.fillMaxWidth(fraction = 0.8f),
style = TangemTheme.typography.body2,
textSizeHeight = true,
)
}
DescriptionPlaceholderV2(modifier)
}
@Composable
@ -213,17 +129,15 @@ private fun ContentPreviewV1() {
@Preview
@Composable
private fun ContentPreviewV2() {
CompositionLocalProvider(LocalRedesignEnabled provides true) {
TangemThemePreviewRedesign {
DescriptionItem(
description = stringReference(
"XRP (XRP) is a cryptocurrency launched in January 2009, where the first " +
"genesis block was mined on 9th January 2009",
),
hasFullDescription = true,
onReadMoreClick = {},
)
}
TangemThemePreviewRedesign {
DescriptionItem(
description = stringReference(
"XRP (XRP) is a cryptocurrency launched in January 2009, where the first " +
"genesis block was mined on 9th January 2009",
),
hasFullDescription = true,
onReadMoreClick = {},
)
}
}
@ -245,16 +159,14 @@ private fun PreviewPlaceholderV1() {
@Preview
@Composable
private fun PreviewPlaceholderV2() {
CompositionLocalProvider(LocalRedesignEnabled provides true) {
TangemThemePreviewRedesign {
PreviewShimmerContainer(
actualContent = {
ContentPreviewV2()
},
shimmerContent = {
DescriptionPlaceholder()
},
)
}
TangemThemePreviewRedesign {
PreviewShimmerContainer(
actualContent = {
ContentPreviewV2()
},
shimmerContent = {
DescriptionPlaceholder()
},
)
}
}

View file

@ -5,7 +5,6 @@ import androidx.compose.foundation.layout.*
import androidx.compose.material3.Icon
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
@ -14,7 +13,6 @@ import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import com.tangem.core.ui.R
import com.tangem.core.ui.res.LocalRedesignEnabled
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreview
import com.tangem.core.ui.res.TangemThemePreviewRedesign
@ -27,72 +25,13 @@ fun PriceChangeInPercent(
modifier: Modifier = Modifier,
isDisabled: Boolean = false,
) {
if (LocalRedesignEnabled.current) {
PriceChangeInPercentV2(
modifier = modifier,
valueInPercent = valueInPercent,
type = type,
textStyle = textStyle,
isDisabled = isDisabled,
)
} else {
PriceChangeInPercentV1(
modifier = modifier,
valueInPercent = valueInPercent,
type = type,
textStyle = textStyle,
)
}
}
@Composable
private fun PriceChangeInPercentV1(
valueInPercent: String,
type: PriceChangeType,
textStyle: TextStyle,
modifier: Modifier = Modifier,
) {
if (valueInPercent.isBlank()) {
Box(modifier)
return
}
Row(
PriceChangeInPercentV2(
modifier = modifier,
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(space = TangemTheme.dimens.spacing2),
) {
Icon(
modifier = Modifier
.size(TangemTheme.dimens.size8)
.align(Alignment.CenterVertically),
imageVector = ImageVector.vectorResource(
id = when (type) {
PriceChangeType.UP -> R.drawable.ic_arrow_up_8
PriceChangeType.DOWN -> R.drawable.ic_arrow_down_8
PriceChangeType.NEUTRAL -> R.drawable.ic_elipse_8
},
),
tint = when (type) {
PriceChangeType.UP -> TangemTheme.colors.icon.accent
PriceChangeType.DOWN -> TangemTheme.colors.icon.warning
PriceChangeType.NEUTRAL -> TangemTheme.colors.icon.inactive
},
contentDescription = null,
)
Text(
text = valueInPercent,
color = when (type) {
PriceChangeType.UP -> TangemTheme.colors.text.accent
PriceChangeType.DOWN -> TangemTheme.colors.text.warning
PriceChangeType.NEUTRAL -> TangemTheme.colors.text.disabled
},
style = textStyle,
overflow = TextOverflow.Visible,
maxLines = 1,
)
}
valueInPercent = valueInPercent,
type = type,
textStyle = textStyle,
isDisabled = isDisabled,
)
}
@Composable
@ -191,31 +130,29 @@ private fun PreviewV1() {
@Composable
private fun PreviewV2() {
TangemThemePreviewRedesign {
CompositionLocalProvider(LocalRedesignEnabled provides true) {
Column {
PriceChangeInPercent(
valueInPercent = "52.00%",
type = PriceChangeType.NEUTRAL,
textStyle = TangemTheme.typography2.captionRegular12,
)
PriceChangeInPercent(
valueInPercent = "52.00%",
type = PriceChangeType.UP,
textStyle = TangemTheme.typography2.captionRegular12,
isDisabled = true,
)
PriceChangeInPercent(
valueInPercent = "52.00%",
type = PriceChangeType.DOWN,
textStyle = TangemTheme.typography2.captionRegular12,
isDisabled = false,
)
PriceChangeInPercent(
valueInPercent = "52.00%",
type = PriceChangeType.DOWN,
textStyle = TangemTheme.typography2.captionRegular12,
)
}
Column {
PriceChangeInPercent(
valueInPercent = "52.00%",
type = PriceChangeType.NEUTRAL,
textStyle = TangemTheme.typography2.captionRegular12,
)
PriceChangeInPercent(
valueInPercent = "52.00%",
type = PriceChangeType.UP,
textStyle = TangemTheme.typography2.captionRegular12,
isDisabled = true,
)
PriceChangeInPercent(
valueInPercent = "52.00%",
type = PriceChangeType.DOWN,
textStyle = TangemTheme.typography2.captionRegular12,
isDisabled = false,
)
PriceChangeInPercent(
valueInPercent = "52.00%",
type = PriceChangeType.DOWN,
textStyle = TangemTheme.typography2.captionRegular12,
)
}
}
}

View file

@ -6,9 +6,6 @@ import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.SnackbarDuration
import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.SnackbarResult
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@ -28,10 +25,6 @@ import com.tangem.core.ui.res.*
@Composable
fun EventMessageEffect(
messageHandler: EventMessageHandler = LocalEventMessageHandler.current,
snackbarHostState: SnackbarHostState = LocalSnackbarHostState.current,
onShowSnackbar: suspend (SnackbarMessage, Context) -> Unit = { message, context ->
showSnackbar(snackbarHostState, message, context)
},
topSnackbarHostState: TangemTopSnackbarHostState = LocalTopSnackbarHostState.current,
onShowTopSnackbar: suspend (SnackbarMessage) -> Unit = { message ->
topSnackbarHostState.showSnackbar(message)
@ -44,16 +37,11 @@ fun EventMessageEffect(
var dialogMessage: DialogMessage? by remember { mutableStateOf(value = null) }
var bottomSheetMessage: BottomSheetMessage? by remember { mutableStateOf(value = null) }
var loadingMessage: GlobalLoadingMessage? by remember { mutableStateOf(value = null) }
val isRedesignEnabled = LocalRedesignEnabled.current
EventEffect(event = messageEvent) { message ->
when (message) {
is SnackbarMessage -> {
if (isRedesignEnabled) {
onShowTopSnackbar(message)
} else {
onShowSnackbar(message, context)
}
onShowTopSnackbar(message)
}
is DialogMessage -> {
dialogMessage = message
@ -155,23 +143,6 @@ private fun MessageDialog(message: DialogMessage, onDismissRequest: () -> Unit)
)
}
private suspend fun showSnackbar(snackbarHostState: SnackbarHostState, message: SnackbarMessage, context: Context) {
val result = snackbarHostState.showSnackbar(
message = message.message.resolveReference(context.resources),
actionLabel = message.actionLabel?.resolveReference(context.resources),
duration = when (message.duration) {
SnackbarMessage.Duration.Short -> SnackbarDuration.Short
SnackbarMessage.Duration.Long -> SnackbarDuration.Long
SnackbarMessage.Duration.Indefinite -> SnackbarDuration.Indefinite
},
)
when (result) {
SnackbarResult.Dismissed -> message.onDismissRequest()
SnackbarResult.ActionPerformed -> message.action?.invoke()
}
}
private fun showToast(message: ToastMessage, context: Context) {
Toast.makeText(
/* context = */ context,

View file

@ -65,11 +65,7 @@ fun TangemTheme(
typography = typography,
dimens = dimens,
content = {
if (uiDependencies.designFeatureToggles.isRedesignEnabled) {
TangemThemeRedesign { content() }
} else {
content()
}
TangemThemeRedesign { content() }
},
)
}
@ -452,14 +448,6 @@ val LocalHazeState = staticCompositionLocalOf<HazeState> {
error("No HazeState provided")
}
val LocalRedesignEnabled = staticCompositionLocalOf<Boolean> {
false
}
val LocalVisaRedesignEnabled = staticCompositionLocalOf<Boolean> {
false
}
val LocalPowerSavingState = compositionLocalOf<PowerSavingState> {
error("No PowerSavingState provided")
}

View file

@ -37,7 +37,6 @@ fun TangemThemeRedesign(content: @Composable () -> Unit) {
colorScheme = tangemColorScheme(colors = rememberedColors),
) {
CompositionLocalProvider(
LocalRedesignEnabled provides true,
LocalTangemColors provides rememberedColors,
LocalTangemColors2 provides if (LocalIsInDarkTheme.current) darkThemeColors2() else lightThemeColors2(),
LocalTangemColors3 provides rememberedColors3,

View file

@ -395,7 +395,7 @@ internal class AddToPortfolioModel @Inject constructor(
currency = addedToken.currency,
accountId = selectedPortfolio.account.account.account.accountId,
).onEach { state ->
val requestedQuickActions = toQuickActions(state.states, isRedesignEnabled = true)
val requestedQuickActions = toQuickActions(state.states)
when {
requestedQuickActions.isNotEmpty() -> {
timerJob.cancel()

View file

@ -10,7 +10,6 @@ import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.Icon
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.key
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@ -36,7 +35,6 @@ import com.tangem.core.ui.ds.row.TangemRowContainer
import com.tangem.core.ui.ds.row.TangemRowLayoutId
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.core.ui.extensions.stringResourceSafe
import com.tangem.core.ui.res.LocalRedesignEnabled
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreview
import com.tangem.core.ui.res.TangemThemePreviewRedesign
@ -220,11 +218,9 @@ private fun Preview(@PreviewParameter(ChooseNetworkContentProvider::class) conte
@Preview(showBackground = true, widthDp = 360, uiMode = Configuration.UI_MODE_NIGHT_YES)
private fun PreviewV2(@PreviewParameter(ChooseNetworkContentProvider::class) content: ChooseNetworkUM) {
TangemThemePreviewRedesign {
CompositionLocalProvider(LocalRedesignEnabled provides true) {
ChooseNetworkContent(
state = content,
)
}
ChooseNetworkContent(
state = content,
)
}
}

View file

@ -77,7 +77,7 @@ import com.tangem.core.ui.ds.row.token.internal.TokenRowTitle
import com.tangem.core.ui.extensions.*
import com.tangem.core.ui.res.TangemColorPalette
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreview
import com.tangem.core.ui.res.TangemThemePreviewRedesign
import com.tangem.core.ui.test.BuyTokenScreenTestTags
import com.tangem.core.ui.utils.ProvideSharedTransitionScope
import com.tangem.core.ui.utils.TangemSharedTransitionLayout
@ -851,7 +851,7 @@ private fun LazyListScope.tokensNotFound(modifier: Modifier = Modifier) {
@Preview
@Composable
private fun TokenScreenPreview(@PreviewParameter(ChooseTokenScreenPreviewProvider::class) state: ChooseTokenFullUM) {
TangemThemePreview {
TangemThemePreviewRedesign {
ChooseTokenScreen(
state = state,
modifier = Modifier,

View file

@ -4,7 +4,6 @@ import android.content.res.Configuration
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
@ -14,7 +13,6 @@ import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfig
import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfigContent
import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetType
import com.tangem.core.ui.ds2.topnavigation.TangemTopNavigation
import com.tangem.core.ui.res.LocalRedesignEnabled
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreview
import com.tangem.core.ui.res.TangemThemePreviewRedesign
@ -73,13 +71,11 @@ private fun Preview(@PreviewParameter(PortfolioSelectorPreviewStateProvider::cla
@Composable
private fun PreviewV2(@PreviewParameter(PortfolioSelectorPreviewStateProvider::class) params: PortfolioSelectorUM) {
TangemThemePreviewRedesign {
CompositionLocalProvider(LocalRedesignEnabled provides true) {
PortfolioSelectorBS(
state = params,
onDismiss = {},
modifier = Modifier,
onBack = {},
)
}
PortfolioSelectorBS(
state = params,
onDismiss = {},
modifier = Modifier,
onBack = {},
)
}
}

View file

@ -32,7 +32,6 @@ import com.tangem.core.ui.ds.row.TangemRowLayoutId
import com.tangem.core.ui.extensions.conditional
import com.tangem.core.ui.extensions.resolveReference
import com.tangem.core.ui.res.LocalCanScrollBackward
import com.tangem.core.ui.res.LocalRedesignEnabled
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreviewRedesign
import com.tangem.features.commonfeatures.impl.portfolioselector.entity.PortfolioSelectorItemUM
@ -218,16 +217,14 @@ private fun WalletNameRow(model: PortfolioSelectorItemUM.GroupTitle, modifier: M
@Composable
private fun Preview(@PreviewParameter(PortfolioSelectorPreviewStateProvider::class) params: PortfolioSelectorUM) {
TangemThemePreviewRedesign {
CompositionLocalProvider(LocalRedesignEnabled provides true) {
Box(
modifier = Modifier.fillMaxWidth(),
contentAlignment = Alignment.Center,
) {
PortfolioSelectorContentV2(
state = params,
modifier = Modifier.background(color = TangemTheme.colors.background.tertiary),
)
}
Box(
modifier = Modifier.fillMaxWidth(),
contentAlignment = Alignment.Center,
) {
PortfolioSelectorContentV2(
state = params,
modifier = Modifier.background(color = TangemTheme.colors.background.tertiary),
)
}
}
}

View file

@ -85,7 +85,6 @@ internal class TokenActionsUiBuilder @Inject constructor(
quickActions = quickActions(
cryptoData = cryptoCurrencyData,
tokenActionsHandler = tokenActionsHandler,
isRedesignEnabled = true,
context = params.context,
),
bottomActionText = bottomActionText(bottomAction),

View file

@ -229,17 +229,15 @@ private fun WalletPortfolioRow(name: TextReference, deviceIcon: DeviceIconUM, mo
@Composable
private fun Preview(@PreviewParameter(TokenActionsContentPreviewProviderV2::class) state: TokenActionsUM) {
TangemThemePreviewRedesign {
CompositionLocalProvider(LocalRedesignEnabled provides true) {
Box(
modifier = Modifier
.fillMaxWidth()
.background(TangemTheme.colors2.surface.level2)
.padding(horizontal = 16.dp),
) {
TokenActionsContentV2(
state = state,
)
}
Box(
modifier = Modifier
.fillMaxWidth()
.background(TangemTheme.colors2.surface.level2)
.padding(horizontal = 16.dp),
) {
TokenActionsContentV2(
state = state,
)
}
}
}

View file

@ -25,7 +25,6 @@ import com.tangem.core.ui.components.pager.PagerIndicator
import com.tangem.core.ui.ds.message.TangemMessage
import com.tangem.core.ui.extensions.stringReference
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreview
import com.tangem.core.ui.res.TangemThemePreviewRedesign
import com.tangem.features.promobanners.api.PromoBannersBlockComponent.Placeholder
import com.tangem.features.promobanners.impl.model.PromoBannerNotificationUM
@ -243,19 +242,6 @@ private fun previewState(bannerCount: Int) = PromoBannersBlockUM(
onPageChanged = {},
)
@Preview(showBackground = true, widthDp = 360)
@Preview(showBackground = true, widthDp = 360, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
private fun Preview_PromoBannersBlock_Legacy() {
TangemThemePreview {
PromoBannersBlock(
state = previewState(bannerCount = 2),
horizontalItemPadding = 12.dp,
modifier = Modifier.padding(vertical = 16.dp),
)
}
}
@Preview(showBackground = true, widthDp = 360)
@Preview(showBackground = true, widthDp = 360, uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable

View file

@ -2,7 +2,7 @@ package com.tangem.features.tangempay.components.express
import androidx.compose.foundation.lazy.LazyListScope
import androidx.compose.ui.Modifier
import com.tangem.common.ui.expressStatus.expressTransactionsItemsLegacy
import com.tangem.common.ui.expressStatus.expressTransactionsItems
import com.tangem.common.ui.expressStatus.state.*
import com.tangem.core.ui.components.currency.icon.CurrencyIconState
import com.tangem.core.ui.extensions.TextReference
@ -17,18 +17,11 @@ internal class PreviewEmptyExpressTransactionsComponent : ExpressTransactionsCom
override val state: StateFlow<ExpressTransactionsBlockState> = MutableStateFlow(getInitialState())
override fun LazyListScope.expressTransactionsContentLegacy(
state: PersistentList<ExpressTransactionStateUM>,
modifier: Modifier,
) {
expressTransactionsItemsLegacy(expressTxs = state, modifier = modifier)
}
override fun LazyListScope.expressTransactionsContent(
state: PersistentList<ExpressTransactionStateUM>,
modifier: Modifier,
) {
expressTransactionsItemsLegacy(expressTxs = state, modifier = modifier)
expressTransactionsItems(expressTxs = state, modifier = modifier)
}
private fun getInitialState(): ExpressTransactionsBlockState {

View file

@ -7,7 +7,6 @@ import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.key
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@ -26,8 +25,6 @@ import com.tangem.core.ui.ds2.button.TangemButton
import com.tangem.core.ui.extensions.TextReference.Res
import com.tangem.core.ui.extensions.resolveReference
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.core.ui.res.LocalRedesignEnabled
import com.tangem.core.ui.res.LocalVisaRedesignEnabled
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreviewRedesign
import com.tangem.core.ui.res.generated.icons.Icons
@ -126,40 +123,35 @@ private fun TangemPayTopUpItem(state: TangemPayAddFundsItemUM, modifier: Modifie
@Composable
private fun TangemPayAddFundsContentPreview() {
TangemThemePreviewRedesign {
CompositionLocalProvider(
LocalVisaRedesignEnabled provides true,
LocalRedesignEnabled provides true,
) {
TangemPayAddFundsContentV2(
state = TangemPayAddFundsUM(
items = persistentListOf(
TangemPayAddFundsItemUM(
icon = TangemIconUM.Icon(
imageVector = Icons.ic_logo_tangem_20,
tintReference = {
TangemTheme.colors3.icon.brand
},
),
title = Res(R.string.common_exchange),
description = Res(R.string.exсhange_token_description),
onClick = {},
),
TangemPayAddFundsItemUM(
icon = TangemIconUM.Icon(
imageVector = Icons.ic_card_20,
tintReference = {
TangemTheme.colors3.icon.brand
},
),
title = Res(R.string.common_receive),
description = Res(R.string.receive_token_description),
onClick = {},
TangemPayAddFundsContentV2(
state = TangemPayAddFundsUM(
items = persistentListOf(
TangemPayAddFundsItemUM(
icon = TangemIconUM.Icon(
imageVector = Icons.ic_logo_tangem_20,
tintReference = {
TangemTheme.colors3.icon.brand
},
),
title = Res(R.string.common_exchange),
description = Res(R.string.exсhange_token_description),
onClick = {},
),
TangemPayAddFundsItemUM(
icon = TangemIconUM.Icon(
imageVector = Icons.ic_card_20,
tintReference = {
TangemTheme.colors3.icon.brand
},
),
title = Res(R.string.common_receive),
description = Res(R.string.receive_token_description),
onClick = {},
),
dismiss = {},
errorMessage = null,
),
)
}
dismiss = {},
errorMessage = null,
),
)
}
}

View file

@ -319,18 +319,14 @@ private fun previewCardDetailsState(): TangemPayCardDetailsUM = TangemPayCardDet
@Composable
private fun TangemPayCardPageScreenPreviewV2() {
TangemThemePreviewRedesign {
CompositionLocalProvider(
LocalRedesignEnabled provides true,
) {
TangemPayCardPageScreen(
state = TangemPayCardPageUM.stub(),
cardSection = {
TangemPayCard(
state = previewCardDetailsState(),
modifier = Modifier.padding(horizontal = 16.dp),
)
},
)
}
TangemPayCardPageScreen(
state = TangemPayCardPageUM.stub(),
cardSection = {
TangemPayCard(
state = previewCardDetailsState(),
modifier = Modifier.padding(horizontal = 16.dp),
)
},
)
}
}

View file

@ -8,7 +8,6 @@ import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.Icon
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
@ -193,16 +192,12 @@ private fun SubtitleLimit(state: TangemPayDailyLimitBlockState, modifier: Modifi
@Composable
private fun PreviewV2() {
TangemThemePreviewRedesign {
CompositionLocalProvider(
LocalRedesignEnabled provides true,
Column(
verticalArrangement = Arrangement.spacedBy(16.dp),
) {
Column(
verticalArrangement = Arrangement.spacedBy(16.dp),
) {
TangemPayDailyLimitBlock(state = TangemPayDailyLimitBlockState.Content.stub())
TangemPayDailyLimitBlock(state = TangemPayDailyLimitBlockState.Error(onReloadClick = {}))
TangemPayDailyLimitBlock(state = TangemPayDailyLimitBlockState.Loading)
}
TangemPayDailyLimitBlock(state = TangemPayDailyLimitBlockState.Content.stub())
TangemPayDailyLimitBlock(state = TangemPayDailyLimitBlockState.Error(onReloadClick = {}))
TangemPayDailyLimitBlock(state = TangemPayDailyLimitBlockState.Loading)
}
}
}

View file

@ -3,10 +3,8 @@ package com.tangem.features.tangempay.component
import androidx.compose.foundation.lazy.LazyListScope
import androidx.compose.ui.Modifier
import com.tangem.core.decompose.context.AppComponentContext
import com.tangem.core.ui.res.LocalRedesignEnabled
import com.tangem.features.tangempay.entity.TangemPayMainUM
import com.tangem.features.tangempay.ui.TangemPayMainBlockContent
import com.tangem.features.tangempay.ui.TangemPayMainBlockItem
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
@ -28,11 +26,7 @@ internal class DefaultTangemPayMainBlockComponent @AssistedInject constructor(
key = TANGEM_PAY_ACCOUNT_CONTENT_TYPE,
contentType = TANGEM_PAY_ACCOUNT_CONTENT_TYPE,
) {
if (LocalRedesignEnabled.current) {
TangemPayMainBlockContent(state, isBalanceHidden, modifier)
} else {
TangemPayMainBlockItem(state, isBalanceHidden, modifier)
}
TangemPayMainBlockContent(state, isBalanceHidden, modifier)
}
}

View file

@ -31,7 +31,6 @@ import com.tangem.core.ui.components.text.applyBladeBrush
import com.tangem.core.ui.ds.row.TangemRowContainer
import com.tangem.core.ui.ds.row.TangemRowLayoutId
import com.tangem.core.ui.extensions.*
import com.tangem.core.ui.res.LocalRedesignEnabled
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreviewRedesign
import com.tangem.core.ui.test.TangemPayTestTags
@ -284,8 +283,7 @@ private fun TangemPayMainLoading(modifier: Modifier = Modifier) {
@Composable
private fun getVisaIconPainter(): Painter {
val resource = if (LocalRedesignEnabled.current) R.drawable.ic_visa_in_banner else R.drawable.img_visa_36
return painterResource(resource)
return painterResource(R.drawable.ic_visa_in_banner)
}
// region Preview

View file

@ -16,11 +16,6 @@ interface ExpressTransactionsComponent {
val state: StateFlow<ExpressTransactionsBlockState>
fun LazyListScope.expressTransactionsContentLegacy(
state: PersistentList<ExpressTransactionStateUM>,
modifier: Modifier,
)
fun LazyListScope.expressTransactionsContent(state: PersistentList<ExpressTransactionStateUM>, modifier: Modifier)
data class Params(

View file

@ -5,7 +5,6 @@ import androidx.compose.runtime.Stable
import androidx.compose.ui.Modifier
import com.arkivanov.essenty.lifecycle.subscribe
import com.tangem.common.ui.expressStatus.expressTransactionsItems
import com.tangem.common.ui.expressStatus.expressTransactionsItemsLegacy
import com.tangem.common.ui.expressStatus.state.ExpressTransactionStateUM
import com.tangem.common.ui.expressStatus.state.ExpressTransactionsBlockState
import com.tangem.core.decompose.context.AppComponentContext
@ -34,13 +33,6 @@ internal class DefaultExpressTransactionsComponent @AssistedInject constructor(
)
}
override fun LazyListScope.expressTransactionsContentLegacy(
state: PersistentList<ExpressTransactionStateUM>,
modifier: Modifier,
) {
expressTransactionsItemsLegacy(expressTxs = state, modifier = modifier)
}
override fun LazyListScope.expressTransactionsContent(
state: PersistentList<ExpressTransactionStateUM>,
modifier: Modifier,

View file

@ -348,11 +348,6 @@ private val PreviewExpressTransactionsComponent = object : ExpressTransactionsCo
),
)
override fun LazyListScope.expressTransactionsContentLegacy(
state: PersistentList<ExpressTransactionStateUM>,
modifier: Modifier,
) = Unit
override fun LazyListScope.expressTransactionsContent(
state: PersistentList<ExpressTransactionStateUM>,
modifier: Modifier,

View file

@ -17,7 +17,6 @@ import com.tangem.core.ui.ds.button.TangemButtonSize
import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.core.ui.res.LocalHazeState
import com.tangem.core.ui.res.LocalRedesignEnabled
import com.tangem.core.ui.res.TangemTheme
import com.tangem.core.ui.res.TangemThemePreviewRedesign
import com.tangem.feature.tokendetails.presentation.tokendetails.state.TransferUM
@ -143,13 +142,11 @@ private fun TailLoader() {
@Composable
private fun Preview(@PreviewParameter(TransferPreviewProvider::class) state: TransferUM) {
TangemThemePreviewRedesign {
CompositionLocalProvider(LocalRedesignEnabled provides true) {
TransferBottomSheetContent(
state = state,
onCloseClick = {},
modifier = Modifier.padding(horizontal = 16.dp),
)
}
TransferBottomSheetContent(
state = state,
onCloseClick = {},
modifier = Modifier.padding(horizontal = 16.dp),
)
}
}

View file

@ -467,7 +467,6 @@ private fun DescriptionWithMoreBlock(
.padding(horizontal = 12.dp),
description = model.text,
hasFullDescription = true,
textStyle = TangemTheme.typography.caption2,
onReadMoreClick = onDescriptionClick,
)
}

View file

@ -46,7 +46,7 @@ internal class WcConnectionsComponent(
WcConnectionsContent(modifier = modifier, state = state, snackbarHostState = snackbarHostState)
EventMessageEffect(messageHandler = messageHandler, snackbarHostState = snackbarHostState)
EventMessageEffect(messageHandler = messageHandler)
bottomSheet.child?.instance?.BottomSheet()
}