diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/visa/DefaultTangemPayCardFrozenStateStore.kt b/core/datasource/src/main/java/com/tangem/datasource/local/visa/DefaultTangemPayCardFrozenStateStore.kt index 4eefede01a..4320296283 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/local/visa/DefaultTangemPayCardFrozenStateStore.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/local/visa/DefaultTangemPayCardFrozenStateStore.kt @@ -1,7 +1,7 @@ package com.tangem.datasource.local.visa import com.tangem.datasource.local.datastore.core.StringKeyDataStore -import com.tangem.domain.visa.model.TangemPayCardFrozenState +import com.tangem.domain.models.pay.TangemPayCardFrozenState import kotlinx.coroutines.flow.Flow internal class DefaultTangemPayCardFrozenStateStore( diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/visa/TangemPayCardFrozenStateStore.kt b/core/datasource/src/main/java/com/tangem/datasource/local/visa/TangemPayCardFrozenStateStore.kt index 61f4f1b0c0..d529ca1b6f 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/local/visa/TangemPayCardFrozenStateStore.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/local/visa/TangemPayCardFrozenStateStore.kt @@ -1,6 +1,6 @@ package com.tangem.datasource.local.visa -import com.tangem.domain.visa.model.TangemPayCardFrozenState +import com.tangem.domain.models.pay.TangemPayCardFrozenState import kotlinx.coroutines.flow.Flow interface TangemPayCardFrozenStateStore { diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/visa/entity/PaymentAccountStatusValueDM.kt b/core/datasource/src/main/java/com/tangem/datasource/local/visa/entity/PaymentAccountStatusValueDM.kt index f9047d1e43..9cc5b5d36e 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/local/visa/entity/PaymentAccountStatusValueDM.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/local/visa/entity/PaymentAccountStatusValueDM.kt @@ -84,7 +84,7 @@ sealed interface PaymentAccountStatusValueDM { @Json(name = "display_name") val displayName: String?, @Json(name = "actual_daily_limit") val actualDailyLimit: SerializedBigDecimal?, @Json(name = "admin_daily_limit") val adminDailyLimit: SerializedBigDecimal?, - @Json(name = "is_frozen") val isFrozen: Boolean, + @Json(name = "frozen_state") val frozenState: String, @Json(name = "last_digits") val lastDigits: String, @Json(name = "is_reissuing") val isReissuing: Boolean, ) diff --git a/data/visa/src/main/kotlin/com/tangem/data/pay/converter/PaymentAccountStatusValueDMConverter.kt b/data/visa/src/main/kotlin/com/tangem/data/pay/converter/PaymentAccountStatusValueDMConverter.kt index 9eae098385..d2b8c2df77 100644 --- a/data/visa/src/main/kotlin/com/tangem/data/pay/converter/PaymentAccountStatusValueDMConverter.kt +++ b/data/visa/src/main/kotlin/com/tangem/data/pay/converter/PaymentAccountStatusValueDMConverter.kt @@ -7,6 +7,7 @@ import com.tangem.domain.models.StatusSource import com.tangem.domain.models.account.CardDisplayName import com.tangem.domain.models.account.PaymentAccountStatusValue import com.tangem.domain.models.pay.TangemPayCard +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 @@ -49,7 +50,7 @@ internal class PaymentAccountStatusValueDMConverter @Inject constructor( displayName = card.displayName?.value, actualDailyLimit = card.limit?.actualCardLimit?.amount, adminDailyLimit = card.limit?.adminCardLimit?.amount, - isFrozen = card.isFrozen, + frozenState = card.frozenState.toString(), lastDigits = card.lastDigits, isReissuing = card.isReissuing, ) @@ -105,7 +106,7 @@ internal class PaymentAccountStatusValueDMConverter @Inject constructor( TangemPayCardLimit(limit, TangemPayCardLimitPeriod.DAY) }, ), - isFrozen = card.isFrozen, + frozenState = TangemPayCardFrozenState.fromString(card.frozenState), lastDigits = card.lastDigits, isReissuing = card.isReissuing, ) diff --git a/data/visa/src/main/kotlin/com/tangem/data/pay/flow/DefaultPaymentAccountStatusFetcher.kt b/data/visa/src/main/kotlin/com/tangem/data/pay/flow/DefaultPaymentAccountStatusFetcher.kt index 81159ea6a3..2d84cdaa12 100644 --- a/data/visa/src/main/kotlin/com/tangem/data/pay/flow/DefaultPaymentAccountStatusFetcher.kt +++ b/data/visa/src/main/kotlin/com/tangem/data/pay/flow/DefaultPaymentAccountStatusFetcher.kt @@ -22,7 +22,8 @@ import com.tangem.domain.pay.repository.CustomerOrderRepository import com.tangem.domain.pay.repository.OnboardingRepository import com.tangem.domain.pay.repository.TangemPayReissueCardRepository import com.tangem.domain.visa.error.VisaApiError -import com.tangem.domain.visa.model.TangemPayCardFrozenState +import com.tangem.domain.models.pay.TangemPayCardFrozenState +import com.tangem.domain.pay.repository.TangemPayCardDetailsRepository import com.tangem.security.DeviceSecurityInfoProvider import com.tangem.security.isSecurityExposed import com.tangem.utils.coroutines.CoroutineDispatcherProvider @@ -45,6 +46,7 @@ internal class DefaultPaymentAccountStatusFetcher @Inject constructor( private val tangemPayCurrencyFactory: TangemPayCurrencyFactory, private val eligibilityManager: TangemPayEligibilityManager, private val reissueCardRepository: TangemPayReissueCardRepository, + private val cardDetailsRepository: TangemPayCardDetailsRepository, ) : PaymentAccountStatusFetcher { private val logger = TangemLogger.withTag(TAG) @@ -306,6 +308,7 @@ internal class DefaultPaymentAccountStatusFetcher @Inject constructor( reissueOrder.orderStatus != OrderStatus.CANCELED && reissueOrder.orderStatus != OrderStatus.COMPLETED + val cardFrozenState = cardDetailsRepository.cardFrozenStateSync(productInstance.cardId) val cryptoCurrency = tangemPayCurrencyFactory.create(userWalletId) return PaymentAccountStatusValue.Loaded( source = StatusSource.ACTUAL, @@ -325,7 +328,11 @@ internal class DefaultPaymentAccountStatusFetcher @Inject constructor( actualCardLimit = productInstance.actualCardLimit, adminCardLimit = productInstance.adminCardLimit, ), - isFrozen = productInstance.frozenState is TangemPayCardFrozenState.Frozen, + frozenState = if (cardFrozenState == TangemPayCardFrozenState.Pending) { + TangemPayCardFrozenState.Pending + } else { + productInstance.frozenState + }, lastDigits = cardInfo.lastFourDigits, isReissuing = isReissuing, ), diff --git a/data/visa/src/main/kotlin/com/tangem/data/pay/repository/DefaultTangemPayCardDetailsRepository.kt b/data/visa/src/main/kotlin/com/tangem/data/pay/repository/DefaultTangemPayCardDetailsRepository.kt index cb621a3e3d..f63b6bf1d7 100644 --- a/data/visa/src/main/kotlin/com/tangem/data/pay/repository/DefaultTangemPayCardDetailsRepository.kt +++ b/data/visa/src/main/kotlin/com/tangem/data/pay/repository/DefaultTangemPayCardDetailsRepository.kt @@ -30,7 +30,7 @@ import com.tangem.domain.pay.model.TangemPayCardDetails import com.tangem.domain.pay.model.TangemPayOrderInfo import com.tangem.domain.pay.repository.TangemPayCardDetailsRepository import com.tangem.domain.visa.error.VisaApiError -import com.tangem.domain.visa.model.TangemPayCardFrozenState +import com.tangem.domain.models.pay.TangemPayCardFrozenState import com.tangem.utils.logging.TangemLogger import kotlinx.coroutines.flow.Flow import javax.inject.Inject diff --git a/data/visa/src/main/kotlin/com/tangem/data/pay/util/CustomerInfoConverter.kt b/data/visa/src/main/kotlin/com/tangem/data/pay/util/CustomerInfoConverter.kt index 9787d15b47..746b701bc8 100644 --- a/data/visa/src/main/kotlin/com/tangem/data/pay/util/CustomerInfoConverter.kt +++ b/data/visa/src/main/kotlin/com/tangem/data/pay/util/CustomerInfoConverter.kt @@ -13,7 +13,7 @@ import com.tangem.domain.pay.model.CustomerInfo import com.tangem.domain.pay.model.CustomerInfo.CardInfo import com.tangem.domain.pay.model.CustomerInfo.ProductInstance import com.tangem.domain.pay.model.CustomerInfo.ProductInstance.Status -import com.tangem.domain.visa.model.TangemPayCardFrozenState +import com.tangem.domain.models.pay.TangemPayCardFrozenState import com.tangem.utils.converter.Converter import com.tangem.utils.extensions.orZero diff --git a/domain/models/src/main/kotlin/com/tangem/domain/models/pay/TangemPayCard.kt b/domain/models/src/main/kotlin/com/tangem/domain/models/pay/TangemPayCard.kt index 621ef7e2d0..367e6976e6 100644 --- a/domain/models/src/main/kotlin/com/tangem/domain/models/pay/TangemPayCard.kt +++ b/domain/models/src/main/kotlin/com/tangem/domain/models/pay/TangemPayCard.kt @@ -11,7 +11,7 @@ import kotlinx.serialization.Serializable * @property hasPinCode whether the card has a PIN code set. * @property displayName optional human-readable name assigned to the card; `null` if not set. * @property limit spending limit configuration for the card; `null` if not configured or not yet loaded. - * @property isFrozen whether the card is currently frozen (blocked for payments). + * @property frozenState whether the card is currently frozen (blocked for payments). * @property lastDigits The last four digits of the card number. */ @Serializable @@ -20,7 +20,10 @@ data class TangemPayCard( @SerialName("has_pin_code") val hasPinCode: Boolean, @SerialName("display_name") val displayName: CardDisplayName?, @SerialName("limit") val limit: TangemPayCardLimitData?, - @SerialName("is_frozen") val isFrozen: Boolean, + @SerialName("frozen_state") val frozenState: TangemPayCardFrozenState, @SerialName("last_digits") val lastDigits: String, @SerialName("is_reissuing") val isReissuing: Boolean, -) \ No newline at end of file +) + +val TangemPayCard.isFrozen + get() = frozenState == TangemPayCardFrozenState.Frozen \ No newline at end of file diff --git a/domain/models/src/main/kotlin/com/tangem/domain/models/pay/TangemPayCardFrozenState.kt b/domain/models/src/main/kotlin/com/tangem/domain/models/pay/TangemPayCardFrozenState.kt new file mode 100644 index 0000000000..b9c0e53cdd --- /dev/null +++ b/domain/models/src/main/kotlin/com/tangem/domain/models/pay/TangemPayCardFrozenState.kt @@ -0,0 +1,31 @@ +package com.tangem.domain.models.pay + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +enum class TangemPayCardFrozenState { + @SerialName("Pending") + Pending, + + @SerialName("Frozen") + Frozen, + + @SerialName("Unfrozen") + Unfrozen, + ; + + override fun toString() = when (this) { + Pending -> "Pending" + Frozen -> "Frozen" + Unfrozen -> "Unfrozen" + } + + companion object { + fun fromString(value: String) = when (value) { + "Frozen" -> Frozen + "Unfrozen" -> Unfrozen + else -> Pending + } + } +} \ No newline at end of file diff --git a/domain/visa/models/src/main/kotlin/com/tangem/domain/visa/model/TangemPayCardFrozenState.kt b/domain/visa/models/src/main/kotlin/com/tangem/domain/visa/model/TangemPayCardFrozenState.kt deleted file mode 100644 index 6cbdffa944..0000000000 --- a/domain/visa/models/src/main/kotlin/com/tangem/domain/visa/model/TangemPayCardFrozenState.kt +++ /dev/null @@ -1,10 +0,0 @@ -package com.tangem.domain.visa.model - -import kotlinx.serialization.Serializable - -@Serializable -sealed class TangemPayCardFrozenState { - data object Pending : TangemPayCardFrozenState() - data object Frozen : TangemPayCardFrozenState() - data object Unfrozen : TangemPayCardFrozenState() -} \ No newline at end of file diff --git a/domain/visa/src/main/kotlin/com/tangem/domain/pay/model/CustomerInfo.kt b/domain/visa/src/main/kotlin/com/tangem/domain/pay/model/CustomerInfo.kt index f2ebca73b3..952e701938 100644 --- a/domain/visa/src/main/kotlin/com/tangem/domain/pay/model/CustomerInfo.kt +++ b/domain/visa/src/main/kotlin/com/tangem/domain/pay/model/CustomerInfo.kt @@ -4,7 +4,7 @@ import com.tangem.domain.models.account.CardDisplayName import com.tangem.domain.models.account.PaymentAccountStatusValue import com.tangem.domain.models.kyc.KycStatus import com.tangem.domain.models.pay.TangemPayCardLimit -import com.tangem.domain.visa.model.TangemPayCardFrozenState +import com.tangem.domain.models.pay.TangemPayCardFrozenState import java.math.BigDecimal import java.util.Locale diff --git a/domain/visa/src/main/kotlin/com/tangem/domain/pay/repository/TangemPayCardDetailsRepository.kt b/domain/visa/src/main/kotlin/com/tangem/domain/pay/repository/TangemPayCardDetailsRepository.kt index b3eed00dba..78ecb05a81 100644 --- a/domain/visa/src/main/kotlin/com/tangem/domain/pay/repository/TangemPayCardDetailsRepository.kt +++ b/domain/visa/src/main/kotlin/com/tangem/domain/pay/repository/TangemPayCardDetailsRepository.kt @@ -8,7 +8,7 @@ import com.tangem.domain.pay.model.SetPinResult import com.tangem.domain.pay.model.TangemPayCardBalance import com.tangem.domain.pay.model.TangemPayCardDetails import com.tangem.domain.pay.model.TangemPayOrderInfo -import com.tangem.domain.visa.model.TangemPayCardFrozenState +import com.tangem.domain.models.pay.TangemPayCardFrozenState import kotlinx.coroutines.flow.Flow interface TangemPayCardDetailsRepository { diff --git a/domain/visa/src/main/kotlin/com/tangem/domain/pay/usecase/ChangeCardFrozenStateUseCase.kt b/domain/visa/src/main/kotlin/com/tangem/domain/pay/usecase/ChangeCardFrozenStateUseCase.kt index 3aeb3e865f..70f5b1da8f 100644 --- a/domain/visa/src/main/kotlin/com/tangem/domain/pay/usecase/ChangeCardFrozenStateUseCase.kt +++ b/domain/visa/src/main/kotlin/com/tangem/domain/pay/usecase/ChangeCardFrozenStateUseCase.kt @@ -3,10 +3,10 @@ package com.tangem.domain.pay.usecase import arrow.core.Either import arrow.core.raise.either import com.tangem.core.error.UniversalError +import com.tangem.domain.models.pay.TangemPayCardFrozenState import com.tangem.domain.models.wallet.UserWalletId import com.tangem.domain.pay.repository.TangemPayCardDetailsRepository import com.tangem.domain.visa.error.VisaApiError -import com.tangem.domain.visa.model.TangemPayCardFrozenState import com.tangem.utils.coroutines.AppCoroutineScope import kotlinx.coroutines.async diff --git a/domain/visa/src/test/kotlin/com/tangem/domain/pay/usecase/ChangeCardFrozenStateUseCaseTest.kt b/domain/visa/src/test/kotlin/com/tangem/domain/pay/usecase/ChangeCardFrozenStateUseCaseTest.kt index 67fd67b1a5..fba4d82e50 100644 --- a/domain/visa/src/test/kotlin/com/tangem/domain/pay/usecase/ChangeCardFrozenStateUseCaseTest.kt +++ b/domain/visa/src/test/kotlin/com/tangem/domain/pay/usecase/ChangeCardFrozenStateUseCaseTest.kt @@ -4,12 +4,12 @@ import arrow.core.left import arrow.core.right import com.google.common.truth.Truth.assertThat import com.tangem.common.test.TestAppCoroutineScope +import com.tangem.domain.models.pay.TangemPayCardFrozenState import com.tangem.domain.models.wallet.UserWalletId import com.tangem.domain.pay.model.OrderStatus import com.tangem.domain.pay.model.TangemPayOrderInfo import com.tangem.domain.pay.repository.TangemPayCardDetailsRepository import com.tangem.domain.visa.error.VisaApiError -import com.tangem.domain.visa.model.TangemPayCardFrozenState import io.mockk.coEvery import io.mockk.coVerify import io.mockk.coVerifyOrder diff --git a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/entity/TangemPayCardDetailsBlockStateFactory.kt b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/entity/TangemPayCardDetailsBlockStateFactory.kt index 698d35ec97..b517eff87f 100644 --- a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/entity/TangemPayCardDetailsBlockStateFactory.kt +++ b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/entity/TangemPayCardDetailsBlockStateFactory.kt @@ -2,7 +2,7 @@ package com.tangem.features.tangempay.entity import com.tangem.core.ui.extensions.resourceReference import com.tangem.domain.models.account.CardDisplayName -import com.tangem.domain.visa.model.TangemPayCardFrozenState +import com.tangem.domain.models.pay.TangemPayCardFrozenState import com.tangem.features.tangempay.details.impl.R import com.tangem.features.tangempay.model.CardDataType import com.tangem.utils.StringsSigns @@ -26,7 +26,7 @@ internal class TangemPayCardDetailsBlockStateFactory( onClick = onReveal, onCopy = onCopy, isHidden = true, - cardFrozenState = TangemPayCardFrozenState.Unfrozen, + cardFrozenState = TangemPayCardFrozenState.Pending, displayNameState = if (displayName != null) { DisplayNameState.Display( displayName = displayName.value, diff --git a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/entity/TangemPayDetailsStateFactory.kt b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/entity/TangemPayDetailsStateFactory.kt index 0ad8f929af..efabb31b08 100644 --- a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/entity/TangemPayDetailsStateFactory.kt +++ b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/entity/TangemPayDetailsStateFactory.kt @@ -7,7 +7,7 @@ import com.tangem.core.ui.components.notifications.NotificationConfig import com.tangem.core.ui.extensions.resourceReference import com.tangem.core.ui.extensions.themedColor import com.tangem.core.ui.res.TangemTheme -import com.tangem.domain.visa.model.TangemPayCardFrozenState +import com.tangem.domain.models.pay.TangemPayCardFrozenState import com.tangem.features.tangempay.details.impl.R import com.tangem.features.tangempay.utils.TangemPayDetailIntents import kotlinx.collections.immutable.ImmutableList diff --git a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/entity/TangemPayDetailsUM.kt b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/entity/TangemPayDetailsUM.kt index 69f1f0f2b3..c16071cc32 100644 --- a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/entity/TangemPayDetailsUM.kt +++ b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/entity/TangemPayDetailsUM.kt @@ -5,7 +5,7 @@ import com.tangem.core.ui.components.buttons.actions.ActionButtonConfig import com.tangem.core.ui.components.containers.pullToRefresh.PullToRefreshConfig import com.tangem.core.ui.components.notifications.NotificationConfig import com.tangem.core.ui.extensions.TextReference -import com.tangem.domain.visa.model.TangemPayCardFrozenState +import com.tangem.domain.models.pay.TangemPayCardFrozenState import com.tangem.features.tangempay.model.CardDataType import kotlinx.collections.immutable.ImmutableList diff --git a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayCardDetailsBlockModel.kt b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayCardDetailsBlockModel.kt index c54347dce0..0dd19c41f5 100644 --- a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayCardDetailsBlockModel.kt +++ b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayCardDetailsBlockModel.kt @@ -14,6 +14,7 @@ import com.tangem.domain.models.StatusSource import com.tangem.domain.models.account.PaymentAccountStatusValue import com.tangem.domain.models.account.hasCardWithId import com.tangem.domain.models.account.requireCardWithId +import com.tangem.domain.models.pay.TangemPayCardFrozenState import com.tangem.domain.models.wallet.UserWalletId import com.tangem.domain.pay.flow.PaymentAccountStatusSupplier import com.tangem.domain.pay.repository.TangemPayCardDetailsRepository @@ -29,6 +30,7 @@ import com.tangem.features.tangempay.model.transformers.DetailsRevealProgressSta import com.tangem.features.tangempay.model.transformers.DetailsRevealedStateTransformer import com.tangem.features.tangempay.model.transformers.TangemPayCardDetailsUpdateNameTransformer import com.tangem.features.tangempay.navigation.TangemPayCardDetailsInnerRoute +import com.tangem.utils.StringsSigns import com.tangem.utils.coroutines.CoroutineDispatcherProvider import com.tangem.utils.coroutines.JobHolder import com.tangem.utils.coroutines.saveIn @@ -96,22 +98,29 @@ internal class TangemPayCardDetailsBlockModel @Inject constructor( status.hasCardWithId(cardId) ) { val card = status.requireCardWithId(cardId) - val displayName = card.displayName ?: return@onEach - if (card.isReissuing) { hideCardDetails() } - uiState.update(TangemPayCardDetailsUpdateNameTransformer(displayName)) - uiState.update { it.copy(isActionsAvailable = !card.isReissuing) } + card.displayName?.let { uiState.update(TangemPayCardDetailsUpdateNameTransformer(it)) } + uiState.update { uiState -> + uiState.copy( + numberShort = "${StringsSigns.ASTERISK}${card.lastDigits}", + cardFrozenState = card.frozenState, + isActionsAvailable = !card.isReissuing, + ) + } } } .launchIn(modelScope) } private fun subscribeToCardFrozenState() { - cardDetailsRepository - .cardFrozenState(card.id) - .onEach { uiState.update { state -> state.copy(cardFrozenState = it) } } + cardDetailsRepository.cardFrozenState(card.id) + .onEach { cardFrozenState -> + if (cardFrozenState == TangemPayCardFrozenState.Pending) { + uiState.update { state -> state.copy(cardFrozenState = TangemPayCardFrozenState.Pending) } + } + } .launchIn(modelScope) } diff --git a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayCardPageModel.kt b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayCardPageModel.kt index 89584be4c6..64c2fb2f5e 100644 --- a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayCardPageModel.kt +++ b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayCardPageModel.kt @@ -27,6 +27,7 @@ import com.tangem.domain.models.account.hasCardWithId import com.tangem.domain.models.account.requireCardWithId import com.tangem.domain.models.pay.TangemPayCard import com.tangem.domain.models.pay.TangemPayCardLimitPeriod +import com.tangem.domain.models.pay.isFrozen import com.tangem.domain.pay.flow.PaymentAccountStatusSupplier import com.tangem.domain.pay.model.TangemPayTopUpData import com.tangem.domain.pay.repository.TangemPayCardDetailsRepository diff --git a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayDetailsModel.kt b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayDetailsModel.kt index 1304c613aa..640c0c263f 100644 --- a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayDetailsModel.kt +++ b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayDetailsModel.kt @@ -29,7 +29,7 @@ import com.tangem.domain.pay.model.TangemPayTopUpData import com.tangem.domain.pay.repository.TangemPayCardDetailsRepository import com.tangem.domain.pay.repository.TangemPayWithdrawRepository import com.tangem.domain.tangempay.TangemPayAnalyticsEvents -import com.tangem.domain.visa.model.TangemPayCardFrozenState +import com.tangem.domain.models.pay.TangemPayCardFrozenState import com.tangem.domain.visa.model.TangemPayTxHistoryItem import com.tangem.features.tangempay.TangemPayConstants import com.tangem.features.tangempay.components.AddFundsListener @@ -86,8 +86,7 @@ internal class TangemPayDetailsModel @Inject constructor( private val initialCardFrozenState: TangemPayCardFrozenState = when { firstCard == null -> TangemPayCardFrozenState.Unfrozen - firstCard.isFrozen -> TangemPayCardFrozenState.Frozen - else -> TangemPayCardFrozenState.Unfrozen + else -> firstCard.frozenState } private val stateFactory = TangemPayDetailsStateFactory( diff --git a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/transformers/TangemPayFreezeUnfreezeStateTransformer.kt b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/transformers/TangemPayFreezeUnfreezeStateTransformer.kt index 9ba594e731..0146ce7829 100644 --- a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/transformers/TangemPayFreezeUnfreezeStateTransformer.kt +++ b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/transformers/TangemPayFreezeUnfreezeStateTransformer.kt @@ -1,6 +1,6 @@ package com.tangem.features.tangempay.model.transformers -import com.tangem.domain.visa.model.TangemPayCardFrozenState +import com.tangem.domain.models.pay.TangemPayCardFrozenState import com.tangem.features.tangempay.entity.TangemPayDetailsBalanceBlockState import com.tangem.features.tangempay.entity.TangemPayDetailsUM import com.tangem.utils.transformer.Transformer diff --git a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/ui/TangemPayAddToWalletScreen.kt b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/ui/TangemPayAddToWalletScreen.kt index 6db50884f3..560f89ca44 100644 --- a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/ui/TangemPayAddToWalletScreen.kt +++ b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/ui/TangemPayAddToWalletScreen.kt @@ -28,7 +28,7 @@ import com.tangem.core.ui.extensions.stringResourceSafe import com.tangem.core.ui.res.TangemColorPalette import com.tangem.core.ui.res.TangemTheme import com.tangem.core.ui.res.TangemThemePreview -import com.tangem.domain.visa.model.TangemPayCardFrozenState +import com.tangem.domain.models.pay.TangemPayCardFrozenState import com.tangem.features.tangempay.components.cardDetails.PreviewTangemPayCardDetailsBlockComponent import com.tangem.features.tangempay.components.cardDetails.TangemPayCardDetailsBlockComponent import com.tangem.features.tangempay.details.impl.R diff --git a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/ui/TangemPayCardDetailsBlock.kt b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/ui/TangemPayCardDetailsBlock.kt index d7bdadc4d4..725002b084 100644 --- a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/ui/TangemPayCardDetailsBlock.kt +++ b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/ui/TangemPayCardDetailsBlock.kt @@ -50,7 +50,7 @@ import com.tangem.core.ui.extensions.stringResourceSafe import com.tangem.core.ui.res.TangemTheme import com.tangem.core.ui.res.TangemThemePreview import com.tangem.core.ui.test.TangemPayTestTags -import com.tangem.domain.visa.model.TangemPayCardFrozenState +import com.tangem.domain.models.pay.TangemPayCardFrozenState import com.tangem.features.tangempay.details.impl.R import com.tangem.features.tangempay.entity.DisplayNameState import com.tangem.features.tangempay.entity.TangemPayCardDetailsUM @@ -121,7 +121,7 @@ internal fun TangemPayCard(state: TangemPayCardDetailsUM, modifier: Modifier = M private fun TangemPayCardDetailsHiddenBlock(state: TangemPayCardDetailsUM, modifier: Modifier = Modifier) { Box(modifier = modifier.fillMaxSize()) { val imageResId = when (state.cardFrozenState) { - is TangemPayCardFrozenState.Frozen -> R.drawable.img_tangem_pay_visa_frozen + TangemPayCardFrozenState.Frozen -> R.drawable.img_tangem_pay_visa_frozen else -> R.drawable.img_tangem_pay_visa } Image( @@ -180,7 +180,7 @@ private fun TangemPayCardDetailsHiddenBlock(state: TangemPayCardDetailsUM, modif .padding(bottom = 8.dp), ) when (state.cardFrozenState) { - is TangemPayCardFrozenState.Frozen -> Icon( + TangemPayCardFrozenState.Frozen -> Icon( modifier = Modifier .constrainAs(frozenIconRef) { start.linkTo(cardNumberRef.end, margin = 4.dp) diff --git a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/ui/TangemPayCardPageScreen.kt b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/ui/TangemPayCardPageScreen.kt index f225204b8b..d2ed4eb835 100644 --- a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/ui/TangemPayCardPageScreen.kt +++ b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/ui/TangemPayCardPageScreen.kt @@ -28,7 +28,7 @@ import com.tangem.core.ui.extensions.resolveReference import com.tangem.core.ui.extensions.stringResourceSafe import com.tangem.core.ui.res.TangemTheme import com.tangem.core.ui.res.TangemThemePreview -import com.tangem.domain.visa.model.TangemPayCardFrozenState +import com.tangem.domain.models.pay.TangemPayCardFrozenState import com.tangem.features.tangempay.components.cardDetails.PreviewTangemPayCardDetailsBlockComponent import com.tangem.features.tangempay.components.cardDetails.TangemPayCardDetailsBlockComponent import com.tangem.features.tangempay.details.impl.R diff --git a/features/tangempay/details/impl/src/test/kotlin/com/tangem/features/tangempay/limit/setup/TangemPayCardLimitSetupModelTest.kt b/features/tangempay/details/impl/src/test/kotlin/com/tangem/features/tangempay/limit/setup/TangemPayCardLimitSetupModelTest.kt index d0d5a2b4b5..d065d24dec 100644 --- a/features/tangempay/details/impl/src/test/kotlin/com/tangem/features/tangempay/limit/setup/TangemPayCardLimitSetupModelTest.kt +++ b/features/tangempay/details/impl/src/test/kotlin/com/tangem/features/tangempay/limit/setup/TangemPayCardLimitSetupModelTest.kt @@ -10,6 +10,7 @@ import com.tangem.domain.models.account.Account import com.tangem.domain.models.account.AccountStatus import com.tangem.domain.models.account.PaymentAccountStatusValue import com.tangem.domain.models.pay.TangemPayCard +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 @@ -45,7 +46,7 @@ internal class TangemPayCardLimitSetupModelTest { id = cardId, hasPinCode = false, displayName = null, - isFrozen = false, + frozenState = TangemPayCardFrozenState.Unfrozen, lastDigits = "1234", limit = null, isReissuing = false, @@ -67,7 +68,7 @@ internal class TangemPayCardLimitSetupModelTest { id = cardId, hasPinCode = false, displayName = null, - isFrozen = false, + frozenState = TangemPayCardFrozenState.Unfrozen, lastDigits = "1234", limit = TangemPayCardLimitData( actualCardLimit = null,