diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/pay/models/response/TangemPayTxHistoryResponse.kt b/core/datasource/src/main/java/com/tangem/datasource/api/pay/models/response/TangemPayTxHistoryResponse.kt index b7ccfdeb67..8b75b8634b 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/api/pay/models/response/TangemPayTxHistoryResponse.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/api/pay/models/response/TangemPayTxHistoryResponse.kt @@ -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, diff --git a/data/visa/src/main/kotlin/com/tangem/data/visa/utils/TangemPayTxHistoryItemConverter.kt b/data/visa/src/main/kotlin/com/tangem/data/visa/utils/TangemPayTxHistoryItemConverter.kt index dd5e03e917..7c2cee96ea 100644 --- a/data/visa/src/main/kotlin/com/tangem/data/visa/utils/TangemPayTxHistoryItemConverter.kt +++ b/data/visa/src/main/kotlin/com/tangem/data/visa/utils/TangemPayTxHistoryItemConverter.kt @@ -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, diff --git a/domain/visa/models/src/main/kotlin/com/tangem/domain/visa/model/TangemPayTxHistoryItem.kt b/domain/visa/models/src/main/kotlin/com/tangem/domain/visa/model/TangemPayTxHistoryItem.kt index 1552db31bb..e8ee1d5735 100644 --- a/domain/visa/models/src/main/kotlin/com/tangem/domain/visa/model/TangemPayTxHistoryItem.kt +++ b/domain/visa/models/src/main/kotlin/com/tangem/domain/visa/model/TangemPayTxHistoryItem.kt @@ -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?, diff --git a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/transformers/PaySpendSubtitleConverter.kt b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/transformers/PaySpendSubtitleConverter.kt new file mode 100644 index 0000000000..e04a4e8050 --- /dev/null +++ b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/transformers/PaySpendSubtitleConverter.kt @@ -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 { + + 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) + } + } +} \ No newline at end of file diff --git a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/transformers/TangemPayTxHistoryDetailsConverter.kt b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/transformers/TangemPayTxHistoryDetailsConverter.kt index 69fd729e59..53447b8304 100644 --- a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/transformers/TangemPayTxHistoryDetailsConverter.kt +++ b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/transformers/TangemPayTxHistoryDetailsConverter.kt @@ -23,6 +23,8 @@ internal object TangemPayTxHistoryDetailsConverter : Converter { 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) } } diff --git a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/transformers/TangemPayTxHistoryItemsConverter.kt b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/transformers/TangemPayTxHistoryItemsConverter.kt index ef6172f0c3..a8aed0ae0b 100644 --- a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/transformers/TangemPayTxHistoryItemsConverter.kt +++ b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/transformers/TangemPayTxHistoryItemsConverter.kt @@ -20,6 +20,9 @@ import org.joda.time.DateTimeZone internal class TangemPayTxHistoryItemsConverter( private val txHistoryUiActions: TangemPayTxHistoryUiActions, ) : Converter { + + 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),