Updated on 2026-08-14

This commit is contained in:
Tangem 2026-06-01 04:32:24 -07:00
parent b27ff31652
commit ad0b09deae
24 changed files with 397 additions and 40 deletions

View file

@ -13,6 +13,7 @@ import com.tangem.core.ui.message.SnackbarMessage
import com.tangem.domain.models.StatusSource
import com.tangem.domain.models.account.PaymentAccountStatusValue
import com.tangem.domain.models.pay.TangemPayCardFrozenState
import com.tangem.domain.models.pay.TangemPayCardState
import com.tangem.domain.pay.flow.PaymentAccountStatusSupplier
import com.tangem.domain.pay.repository.TangemPayCardDetailsRepository
import com.tangem.domain.tangempay.TangemPayAnalyticsEvents
@ -95,7 +96,7 @@ internal class TangemPayCardDetailsBlockModel @Inject constructor(
val status = state.value
if (status is PaymentAccountStatusValue.Loaded && status.source == StatusSource.ACTUAL) {
val card = state.findCard(initialCard.id, params.initialStatus) ?: return@onEach
if (card.isReissuing) {
if (card.state != TangemPayCardState.Active) {
requestHide()
}
card.displayName?.let { uiState.update(TangemPayCardDetailsUpdateNameTransformer(it)) }
@ -103,7 +104,7 @@ internal class TangemPayCardDetailsBlockModel @Inject constructor(
uiState.copy(
numberShort = "${StringsSigns.ASTERISK}${card.lastDigits}",
cardFrozenState = card.frozenState,
isActionsAvailable = !card.isReissuing,
isActionsAvailable = card.state == TangemPayCardState.Active,
)
}
subscribeToCardFrozenState(card.id)

View file

@ -28,6 +28,7 @@ import com.tangem.domain.models.TokenReceiveConfig
import com.tangem.domain.models.account.PaymentAccountStatusValue
import com.tangem.domain.models.pay.TangemPayCard
import com.tangem.domain.models.pay.TangemPayCardLimitPeriod
import com.tangem.domain.models.pay.TangemPayCardState
import com.tangem.domain.models.pay.isFrozen
import com.tangem.domain.pay.flow.PaymentAccountStatusSupplier
import com.tangem.domain.pay.model.TangemPayTopUpData
@ -125,7 +126,7 @@ internal class TangemPayCardPageModel @Inject constructor(
dailyLimitState = dailyLimitState,
settings = buildSettings(card),
settingsV2 = buildSettingsV2(card),
isReissueInProgress = card.isReissuing,
isReissueInProgress = card.state == TangemPayCardState.Reissuing,
)
}
} else {

View file

@ -30,6 +30,7 @@ import com.tangem.domain.pay.repository.TangemPayCardDetailsRepository
import com.tangem.domain.pay.repository.TangemPayWithdrawRepository
import com.tangem.domain.tangempay.TangemPayAnalyticsEvents
import com.tangem.domain.models.pay.TangemPayCardFrozenState
import com.tangem.domain.models.pay.TangemPayCardState
import com.tangem.domain.visa.model.TangemPayTxHistoryItem
import com.tangem.features.tangempay.TangemPayConstants
import com.tangem.features.tangempay.components.AddFundsListener
@ -101,7 +102,7 @@ internal class TangemPayDetailsModel @Inject constructor(
stateFactory.getInitialState(
isTangemPayDeactivated = isTangemPayDeactivated,
cardNumberEnd = firstCard?.lastDigits.orEmpty(),
isReissuing = firstCard?.isReissuing ?: false,
isReissuing = firstCard == null || firstCard.state != TangemPayCardState.Active,
),
)

View file

@ -1,6 +1,7 @@
package com.tangem.features.tangempay.model.transformers
import com.tangem.domain.models.pay.TangemPayCard
import com.tangem.domain.models.pay.TangemPayCardState
import com.tangem.features.tangempay.entity.TangemPayDetailsBalanceBlockState
import com.tangem.features.tangempay.entity.TangemPayDetailsUM
import com.tangem.utils.transformer.Transformer
@ -15,7 +16,7 @@ internal class TangemPayCardDataTransformer(
val updatedCard = TangemPayDetailsBalanceBlockState.Card(
lastDigits = card.lastDigits,
onClick = onCardClick,
isReissuing = card.isReissuing,
isReissuing = card.state != TangemPayCardState.Active,
)
val cardsBlockState = prevState.balanceBlockState.cardsBlockState?.copy(
cards = persistentListOf(updatedCard),

View file

@ -14,6 +14,7 @@ import com.tangem.domain.models.pay.TangemPayCardFrozenState
import com.tangem.domain.models.pay.TangemPayCardLimit
import com.tangem.domain.models.pay.TangemPayCardLimitData
import com.tangem.domain.models.pay.TangemPayCardLimitPeriod
import com.tangem.domain.models.pay.TangemPayCardState
import com.tangem.domain.models.wallet.UserWalletId
import com.tangem.domain.pay.flow.PaymentAccountStatusSupplier
import com.tangem.domain.pay.usecase.SetTangemPayCardLimitUseCase
@ -49,7 +50,7 @@ internal class TangemPayCardLimitSetupModelTest {
frozenState = TangemPayCardFrozenState.Unfrozen,
lastDigits = "1234",
limit = null,
isReissuing = false,
state = TangemPayCardState.Active,
)
private val initialStatus: AccountStatus.Payment = AccountStatus.Payment(
@ -79,7 +80,7 @@ internal class TangemPayCardLimitSetupModelTest {
)
}
),
isReissuing = false,
state = TangemPayCardState.Active,
)
val statusWithLimit: PaymentAccountStatusValue.Loaded = mockk(relaxed = true) {
every { source } returns StatusSource.ACTUAL