Updated on 2026-08-14

This commit is contained in:
Tangem 2025-11-30 07:37:18 +03:00
parent ac1768a026
commit 7fb32453ca
6 changed files with 41 additions and 8 deletions

View file

@ -37,8 +37,8 @@ data class TangemPayTxHistoryResponse(
@Json(name = "memo") val memo: String? = null,
@Json(name = "receipt") val receipt: Boolean,
@Json(name = "merchant_name") val merchantName: String,
@Json(name = "merchant_category") val merchantCategory: String?,
@Json(name = "merchant_category_code") val merchantCategoryCode: String,
@Json(name = "merchant_category") val merchantCategory: String? = null,
@Json(name = "merchant_category_code") val merchantCategoryCode: String? = null,
@Json(name = "merchant_id") val merchantId: String? = null,
@Json(name = "enriched_merchant_icon") val enrichedMerchantIcon: String? = null,
@Json(name = "enriched_merchant_name") val enrichedMerchantName: String? = null,

View file

@ -40,6 +40,7 @@ internal class TangemPayTxHistoryItemConverter(moshi: Moshi) :
enrichedMerchantName = spend.enrichedMerchantName,
merchantName = spend.merchantName,
enrichedMerchantCategory = spend.enrichedMerchantCategory,
merchantCategoryCode = spend.merchantCategoryCode,
merchantCategory = spend.merchantCategory,
status = TangemPayTxHistoryItemStatusConverter.convert(spend.status),
enrichedMerchantIconUrl = spend.enrichedMerchantIcon,

View file

@ -25,6 +25,7 @@ sealed class TangemPayTxHistoryItem {
val enrichedMerchantName: String?,
val merchantName: String,
val enrichedMerchantCategory: String?,
val merchantCategoryCode: String?,
val merchantCategory: String?,
val status: Status,
val enrichedMerchantIconUrl: String?,

View file

@ -0,0 +1,30 @@
package com.tangem.features.tangempay.model.transformers
import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.core.ui.extensions.stringReference
import com.tangem.domain.visa.model.TangemPayTxHistoryItem
import com.tangem.features.tangempay.details.impl.R
import com.tangem.utils.converter.Converter
internal object PaySpendSubtitleConverter : Converter<TangemPayTxHistoryItem.Spend, TextReference> {
override fun convert(value: TangemPayTxHistoryItem.Spend): TextReference {
val merchantCategory = value.merchantCategory
val enrichedMerchantCategory = value.enrichedMerchantCategory
val merchantCategoryCode = value.merchantCategoryCode
return when {
// if merchantCategory isNotEmpty use this
!merchantCategory.isNullOrEmpty() -> stringReference(merchantCategory)
// If merchantCategory empty or null but enrichedMerchantCategory is not empty
!enrichedMerchantCategory.isNullOrEmpty() -> stringReference(enrichedMerchantCategory)
// If both empty/null but merchantCategoryCode is not empty
!merchantCategoryCode.isNullOrEmpty() -> stringReference(merchantCategoryCode)
// If all are empty/null, display "Other"
else -> resourceReference(R.string.tangem_pay_other)
}
}
}

View file

@ -23,6 +23,8 @@ internal object TangemPayTxHistoryDetailsConverter :
Converter<TangemPayTxHistoryDetailsConverter.Input, TangemPayTxHistoryDetailsUM> {
private val dateFormatter = DateTimeFormatters.getBestFormatterBySkeleton("dd MMMM")
private val paySpendSubtitleConverter = PaySpendSubtitleConverter
override fun convert(value: Input): TangemPayTxHistoryDetailsUM {
val transaction = value.item
return TangemPayTxHistoryDetailsUM(
@ -79,10 +81,7 @@ internal object TangemPayTxHistoryDetailsConverter :
is TangemPayTxHistoryItem.Fee -> resourceReference(R.string.tangem_pay_fee_subtitle)
is TangemPayTxHistoryItem.Payment -> resourceReference(R.string.common_transfer)
is TangemPayTxHistoryItem.Collateral -> resourceReference(R.string.common_transfer)
is TangemPayTxHistoryItem.Spend -> {
val subtitle = merchantCategory ?: enrichedMerchantCategory
subtitle?.let(::stringReference) ?: resourceReference(R.string.tangem_pay_other)
}
is TangemPayTxHistoryItem.Spend -> paySpendSubtitleConverter.convert(this)
}
}

View file

@ -20,6 +20,9 @@ import org.joda.time.DateTimeZone
internal class TangemPayTxHistoryItemsConverter(
private val txHistoryUiActions: TangemPayTxHistoryUiActions,
) : Converter<TangemPayTxHistoryItem, TangemPayTransactionState.Content> {
private val paySpendSubtitleConverter = PaySpendSubtitleConverter
override fun convert(value: TangemPayTxHistoryItem): TangemPayTransactionState.Content {
return when (value) {
is TangemPayTxHistoryItem.Spend -> convertSpend(spend = value)
@ -39,7 +42,6 @@ internal class TangemPayTxHistoryItemsConverter(
val amount = amountPrefix + spend.amount.format {
fiat(fiatCurrencyCode = spend.currency.currencyCode, fiatCurrencySymbol = spend.currency.symbol)
}
val subtitle = spend.merchantCategory ?: spend.enrichedMerchantCategory
return TangemPayTransactionState.Content.Spend(
id = spend.id,
onClick = { txHistoryUiActions.onTransactionClick(spend) },
@ -51,7 +53,7 @@ internal class TangemPayTxHistoryItemsConverter(
}
},
title = stringReference(spend.enrichedMerchantName ?: spend.merchantName),
subtitle = subtitle?.let(::stringReference) ?: resourceReference(R.string.tangem_pay_other),
subtitle = paySpendSubtitleConverter.convert(spend),
time = DateTimeFormatters.formatDate(localDate, DateTimeFormatters.timeFormatter),
icon = spend.enrichedMerchantIconUrl?.let(ImageReference::Url)
?: ImageReference.Res(R.drawable.ic_category_24),