From aa996b6d22b5e8fb2324edbb391ce45d7df040e8 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 30 Jul 2026 02:37:47 -0700 Subject: [PATCH] Updated on 2026-08-14 --- .../pay/models/response/CustomerMeResponse.kt | 6 +----- .../repository/DefaultOnboardingRepository.kt | 7 +++++-- .../data/pay/util/CustomerInfoConverter.kt | 18 +++++++----------- 3 files changed, 13 insertions(+), 18 deletions(-) diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/pay/models/response/CustomerMeResponse.kt b/core/datasource/src/main/java/com/tangem/datasource/api/pay/models/response/CustomerMeResponse.kt index a4c7fb49c5..dfce24147d 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/api/pay/models/response/CustomerMeResponse.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/api/pay/models/response/CustomerMeResponse.kt @@ -13,11 +13,9 @@ data class CustomerMeResponse( @Json(name = "id") val id: String, @Json(name = "state") val state: String, @Json(name = "created_at") val createdAt: String, - @Json(name = "product_instance") val productInstance: ProductInstance?, @Json(name = "payment_account") val paymentAccount: PaymentAccount?, @Json(name = "kyc") val kyc: Kyc?, @Json(name = "deposit_address") val depositAddress: String?, - @Json(name = "card") val card: Card?, @Json(name = "balance") val balance: BalanceResponse?, @Json(name = "product_instances") val productInstances: List, @Json(name = "cards") val cards: List, @@ -156,9 +154,7 @@ data class CustomerMeResponse( @JsonClass(generateAdapter = true) data class Card( - // Present in the multi-card `cards[]` array to join a card to its product instance; - // absent in the legacy single-card `card` object, where the card joins the single product instance. - @Json(name = "card_id") val cardId: String?, + @Json(name = "id") val id: String?, @Json(name = "token") val token: String, @Json(name = "expiration_month") val expirationMonth: String, @Json(name = "expiration_year") val expirationYear: String, diff --git a/data/visa/src/main/kotlin/com/tangem/data/pay/repository/DefaultOnboardingRepository.kt b/data/visa/src/main/kotlin/com/tangem/data/pay/repository/DefaultOnboardingRepository.kt index d4861d0239..7e4b7ceba2 100644 --- a/data/visa/src/main/kotlin/com/tangem/data/pay/repository/DefaultOnboardingRepository.kt +++ b/data/visa/src/main/kotlin/com/tangem/data/pay/repository/DefaultOnboardingRepository.kt @@ -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) 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 b7dbdb9a34..e4e1c1c951 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 @@ -33,11 +33,7 @@ internal object CustomerInfoConverter : Converter - // 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