Updated on 2026-08-14
This commit is contained in:
parent
50332186fa
commit
5f6767abaf
58 changed files with 85 additions and 717 deletions
|
|
@ -2,9 +2,7 @@ package com.tangem.features.tangempay
|
|||
|
||||
interface TangemPayFeatureToggles {
|
||||
val isRedesignEnabled: Boolean
|
||||
val isCloseCardEnabled: Boolean
|
||||
val isRemoveAccountEnabled: Boolean
|
||||
val isMultipleCardsEnabled: Boolean
|
||||
val isTiersPlusPlanEnabled: Boolean
|
||||
val isCashbackEnabled: Boolean
|
||||
}
|
||||
|
|
@ -7,18 +7,11 @@ internal class DefaultTangemPayFeatureToggles(
|
|||
private val featureTogglesManager: FeatureTogglesManager,
|
||||
) : TangemPayFeatureToggles {
|
||||
override val isRedesignEnabled: Boolean
|
||||
get() = featureTogglesManager.isFeatureEnabled(FeatureToggles.AND_15368_VISA_PAY_REDESIGN) &&
|
||||
featureTogglesManager.isFeatureEnabled(FeatureToggles.APP_REDESIGN_ENABLED)
|
||||
|
||||
override val isCloseCardEnabled: Boolean
|
||||
get() = featureTogglesManager.isFeatureEnabled(FeatureToggles.AND_15364_VISA_PAY_CARD_CLOSE)
|
||||
get() = featureTogglesManager.isFeatureEnabled(FeatureToggles.APP_REDESIGN_ENABLED)
|
||||
|
||||
override val isRemoveAccountEnabled: Boolean
|
||||
get() = featureTogglesManager.isFeatureEnabled(FeatureToggles.AND_15741_VISA_PAY_REMOVE_ACCOUNT)
|
||||
|
||||
override val isMultipleCardsEnabled: Boolean
|
||||
get() = featureTogglesManager.isFeatureEnabled(FeatureToggles.AND_15235_VISA_MULTIPLE_CARDS)
|
||||
|
||||
override val isTiersPlusPlanEnabled: Boolean
|
||||
get() = featureTogglesManager.isFeatureEnabled(FeatureToggles.AND_16041_VISA_TIERS_PLUS_PLAN)
|
||||
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ internal class TangemPayDetailsStateFactory(
|
|||
private val intents: TangemPayDetailIntents,
|
||||
private val isRedesignEnabled: Boolean,
|
||||
private val isRemoveAccountEnabled: Boolean,
|
||||
private val isMultipleCardsEnabled: Boolean,
|
||||
private val isTiersPlusPlanEnabled: Boolean,
|
||||
) {
|
||||
private val notificationFactory = TangemPayDetailsNotificationFactory(
|
||||
|
|
@ -100,7 +99,6 @@ internal class TangemPayDetailsStateFactory(
|
|||
),
|
||||
cardsBlockState = TangemPayDetailsBalanceBlockState.CardsBlockState(
|
||||
cards = status.cards
|
||||
.let { if (isMultipleCardsEnabled) it else it.take(1) }
|
||||
.map { cardItem ->
|
||||
TangemPayDetailsBalanceBlockState.Card(
|
||||
lastDigits = cardItem.lastDigits,
|
||||
|
|
|
|||
|
|
@ -110,7 +110,6 @@ internal class TangemPayCardPageModel @Inject constructor(
|
|||
|
||||
private val cryptoCurrency
|
||||
get() = currentStatus.value.cryptoCurrency
|
||||
private val isMultipleCardsEnabled: Boolean get() = tangemPayFeatureToggles.isMultipleCardsEnabled
|
||||
|
||||
val uiState: StateFlow<TangemPayCardPageUM>
|
||||
field = MutableStateFlow(
|
||||
|
|
@ -185,7 +184,7 @@ internal class TangemPayCardPageModel @Inject constructor(
|
|||
val status = state.value
|
||||
if (status !is PaymentAccountStatusValue.Loaded || status.source != StatusSource.ACTUAL) return
|
||||
|
||||
val cards = status.cards.let { if (isMultipleCardsEnabled) it else it.take(1) }
|
||||
val cards = status.cards
|
||||
val newIds = cards.mapTo(mutableSetOf()) { it.id }
|
||||
|
||||
cardControllers.keys.filterNot { it in newIds }.toList().forEach { removedId ->
|
||||
|
|
@ -334,30 +333,28 @@ internal class TangemPayCardPageModel @Inject constructor(
|
|||
),
|
||||
),
|
||||
)
|
||||
if (tangemPayFeatureToggles.isCloseCardEnabled) {
|
||||
add(
|
||||
TangemPayDropDownItemUM(
|
||||
title = TextReference.Res(R.string.tangem_pay_close_card_popup_primary_button_title),
|
||||
onClick = ::onClickCloseCard,
|
||||
icon = TangemIconUM.Icon(
|
||||
iconRes = CoreUiR.drawable.ic_trash_24,
|
||||
tintReference = {
|
||||
if (isLastCard) {
|
||||
TangemTheme.colors3.icon.tertiary
|
||||
} else {
|
||||
TangemTheme.colors3.icon.primary
|
||||
}
|
||||
},
|
||||
),
|
||||
subtitle = if (isLastCard) {
|
||||
TextReference.Res(R.string.tangem_pay_close_card_disabled_last_card)
|
||||
} else {
|
||||
null
|
||||
add(
|
||||
TangemPayDropDownItemUM(
|
||||
title = TextReference.Res(R.string.tangem_pay_close_card_popup_primary_button_title),
|
||||
onClick = ::onClickCloseCard,
|
||||
icon = TangemIconUM.Icon(
|
||||
iconRes = CoreUiR.drawable.ic_trash_24,
|
||||
tintReference = {
|
||||
if (isLastCard) {
|
||||
TangemTheme.colors3.icon.tertiary
|
||||
} else {
|
||||
TangemTheme.colors3.icon.primary
|
||||
}
|
||||
},
|
||||
isEnabled = !isLastCard,
|
||||
),
|
||||
)
|
||||
}
|
||||
subtitle = if (isLastCard) {
|
||||
TextReference.Res(R.string.tangem_pay_close_card_disabled_last_card)
|
||||
} else {
|
||||
null
|
||||
},
|
||||
isEnabled = !isLastCard,
|
||||
),
|
||||
)
|
||||
}.toImmutableList()
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -111,15 +111,12 @@ internal class TangemPayDetailsModel @Inject constructor(
|
|||
val cryptoCurrency
|
||||
get() = currentStatus.value.cryptoCurrency
|
||||
|
||||
private val isMultipleCardsEnabled: Boolean get() = tangemPayFeatureToggles.isMultipleCardsEnabled
|
||||
|
||||
private val stateFactory = TangemPayDetailsStateFactory(
|
||||
onBack = router::pop,
|
||||
onOpenMenu = ::onOpenMenu,
|
||||
intents = this,
|
||||
isRedesignEnabled = isRedesignEnabled(),
|
||||
isRemoveAccountEnabled = tangemPayFeatureToggles.isRemoveAccountEnabled,
|
||||
isMultipleCardsEnabled = isMultipleCardsEnabled,
|
||||
isTiersPlusPlanEnabled = tangemPayFeatureToggles.isTiersPlusPlanEnabled,
|
||||
)
|
||||
|
||||
|
|
@ -476,17 +473,6 @@ internal class TangemPayDetailsModel @Inject constructor(
|
|||
|
||||
override fun onAddCardClick() {
|
||||
analytics.send(TangemPayAnalyticsEvents.AddExtraCardClicked())
|
||||
if (!isMultipleCardsEnabled) {
|
||||
analytics.send(TangemPayAnalyticsEvents.FakeDoorPopupDisplayed())
|
||||
uiMessageSender.send(
|
||||
TangemPayMessagesFactory.createFutureFeature(
|
||||
onGotItClick = {
|
||||
analytics.send(TangemPayAnalyticsEvents.FakeDoorGotitClicked())
|
||||
},
|
||||
),
|
||||
)
|
||||
return
|
||||
}
|
||||
modelScope.launch {
|
||||
val offer = getCustomerOffers.additionalCardOffer(userWalletId).getOrNull()
|
||||
if (offer == null) {
|
||||
|
|
|
|||
|
|
@ -31,7 +31,6 @@ internal class TangemPayDetailsStateFactoryTest {
|
|||
intents = intents,
|
||||
isRedesignEnabled = true,
|
||||
isRemoveAccountEnabled = true,
|
||||
isMultipleCardsEnabled = true,
|
||||
isTiersPlusPlanEnabled = true,
|
||||
)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue