Updated on 2026-08-14

This commit is contained in:
Tangem 2026-07-13 02:20:35 -07:00
parent 579b3cba32
commit f74c37a080
25 changed files with 154 additions and 40 deletions

View file

@ -5,6 +5,7 @@ import com.tangem.datasource.local.visa.entity.PaymentAccountStatusValueDM
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.account.TangemPayTariffPlan
import com.tangem.domain.models.pay.*
import com.tangem.domain.models.wallet.UserWalletId
import com.tangem.domain.pay.TangemPayCurrencyFactory
@ -51,6 +52,12 @@ internal class PaymentAccountStatusValueDMConverter @Inject constructor(
adminDailyLimit = card.limit?.adminCardLimit?.amount,
frozenState = card.frozenState.toString(),
lastDigits = card.lastDigits,
images = card.images.map { image ->
PaymentAccountStatusValueDM.ImageDM(
type = image.type.name,
url = image.url,
)
},
state = card.state.toString(),
)
},
@ -91,11 +98,7 @@ internal class PaymentAccountStatusValueDMConverter @Inject constructor(
source = StatusSource.CACHE,
customerId = value.customerId,
depositAddress = value.depositAddress,
balance = PaymentAccountStatusValue.Balance(
fiatBalance = value.fiatBalance.toDomain(),
cryptoBalance = value.cryptoBalance.toDomain(),
availableForWithdrawal = value.availableForWithdrawal,
),
balance = value.getBalance(),
cryptoCurrency = cryptoCurrency,
fiatRate = value.fiatRate,
cards = value.cards.map { card ->
@ -115,6 +118,7 @@ internal class PaymentAccountStatusValueDMConverter @Inject constructor(
),
frozenState = TangemPayCardFrozenState.fromString(card.frozenState),
lastDigits = card.lastDigits,
images = card.getImages(),
state = TangemPayCardState.fromString(card.state),
)
},
@ -160,6 +164,14 @@ internal class PaymentAccountStatusValueDMConverter @Inject constructor(
)
}
private fun PaymentAccountStatusValueDM.ActiveAccount.getBalance(): PaymentAccountStatusValue.Balance {
return PaymentAccountStatusValue.Balance(
fiatBalance = fiatBalance.toDomain(),
cryptoBalance = cryptoBalance.toDomain(),
availableForWithdrawal = availableForWithdrawal,
)
}
private fun PaymentAccountStatusValueDM.FiatBalanceDM.toDomain(): PaymentAccountStatusValue.FiatBalance {
return PaymentAccountStatusValue.FiatBalance(
availableBalance = availableBalance,
@ -176,4 +188,13 @@ internal class PaymentAccountStatusValueDMConverter @Inject constructor(
balance = balance,
)
}
private fun PaymentAccountStatusValueDM.TangemPayCard.getImages(): List<TangemPayTariffPlan.Image> {
return images.map { image ->
TangemPayTariffPlan.Image(
type = TangemPayTariffPlan.Image.Type.fromString(image.type),
url = image.url,
)
}
}
}

View file

@ -360,6 +360,7 @@ internal class DefaultPaymentAccountStatusFetcher @Inject constructor(
productInstance.frozenState
},
lastDigits = cardInfo.lastFourDigits,
images = cardInfo.images,
state = getCardState(cardId, userWalletId),
)
}
@ -509,6 +510,7 @@ internal class DefaultPaymentAccountStatusFetcher @Inject constructor(
limit = null,
frozenState = TangemPayCardFrozenState.Unfrozen,
lastDigits = "",
images = emptyList(),
state = TangemPayCardState.Issuing,
)

View file

@ -92,6 +92,15 @@ internal object CustomerInfoConverter : Converter<CustomerMeResponse.Result, Cus
cardStatus = TangemPayCard.Status.fromString(card.cardStatus),
lastFourDigits = card.cardNumberEnd,
isPinSet = card.isPinSet == true,
images = card.images.orEmpty().mapNotNull(::convertCardImage),
)
}
private fun convertCardImage(image: CustomerMeResponse.Image): TangemPayTariffPlan.Image? {
val url = image.url ?: return null
return TangemPayTariffPlan.Image(
type = TangemPayTariffPlan.Image.Type.fromString(image.type),
url = url,
)
}

View file

@ -108,6 +108,7 @@ internal class DefaultPaymentAccountStatusFetcherTest {
cardStatus = TangemPayCard.Status.ACTIVE,
lastFourDigits = "1234",
isPinSet = true,
images = emptyList(),
)
private fun buildCustomerInfo(

View file

@ -74,6 +74,7 @@ internal class StableOrderTest {
limit = null,
frozenState = TangemPayCardFrozenState.Unfrozen,
lastDigits = "0000",
images = emptyList(),
state = TangemPayCardState.Active,
)
}