Updated on 2026-08-14

This commit is contained in:
Tangem 2026-07-30 02:37:47 -07:00
parent 9bfcf6376a
commit aa996b6d22
3 changed files with 13 additions and 18 deletions

View file

@ -101,8 +101,11 @@ internal class DefaultOnboardingRepository @Inject constructor(
return requestHelper.performRequest(userWalletId) { authHeader -> tangemPayApi.getCustomerMe(authHeader) }
.flatMap { response ->
val result = response.result ?: return@flatMap VisaApiError.UnknownWithoutCode.left()
val status = result.productInstance?.status
val isDeactivated = status == CustomerMeResponse.ProductInstance.Status.DEACTIVATED
val productInstances = result.productInstances
val isDeactivated = productInstances.isNotEmpty() &&
productInstances.all { it.status == CustomerMeResponse.ProductInstance.Status.DEACTIVATED }
val isFormer = result.state.let { CustomerInfo.State.fromString(it) } == CustomerInfo.State.FORMER
if (isDeactivated || isFormer) {
tangemPayStorage.storeIsTangemPayDeactivated(userWalletId)

View file

@ -33,11 +33,7 @@ internal object CustomerInfoConverter : Converter<CustomerMeResponse.Result, Cus
val cards = if (value.paymentAccount == null || value.balance == null) {
emptyList()
} else {
value.cards.mapIndexed { index, cardWire ->
// Legacy single-card has no card_id on the card object → join to the single product instance.
val cardId = cardWire.cardId ?: value.productInstances.getOrNull(index)?.cardId.orEmpty()
buildCardInfo(cardId = cardId, card = cardWire)
}
value.cards.mapNotNull { it.toDomain() }
}
return CustomerInfo(
@ -87,13 +83,13 @@ internal object CustomerInfoConverter : Converter<CustomerMeResponse.Result, Cus
)
}
private fun buildCardInfo(cardId: String, card: CustomerMeResponse.Card): CardInfo {
private fun CustomerMeResponse.Card.toDomain(): CardInfo? {
return CardInfo(
cardId = cardId,
cardStatus = TangemPayCard.Status.fromString(card.cardStatus),
lastFourDigits = card.cardNumberEnd,
isPinSet = card.isPinSet == true,
images = card.images.orEmpty().mapNotNull(::convertCardImage),
cardId = id ?: return null,
cardStatus = TangemPayCard.Status.fromString(cardStatus),
lastFourDigits = cardNumberEnd,
isPinSet = isPinSet == true,
images = images.orEmpty().mapNotNull(::convertCardImage),
)
}