diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/tstore/details/ui/upi/NaviPayOrderDetailsSummarySection.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/tstore/details/ui/upi/NaviPayOrderDetailsSummarySection.kt index 030c911193..b4f5d16f60 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/tstore/details/ui/upi/NaviPayOrderDetailsSummarySection.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/tstore/details/ui/upi/NaviPayOrderDetailsSummarySection.kt @@ -10,6 +10,7 @@ package com.navi.pay.tstore.details.ui.upi import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.Image import androidx.compose.foundation.background +import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Arrangement @@ -39,6 +40,7 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import coil.compose.AsyncImage +import com.navi.base.utils.isNotNullAndNotEmpty import com.navi.base.utils.orFalse import com.navi.common.R as CommonR import com.navi.common.utils.CommonUtils.getDisplayableAmount @@ -306,6 +308,48 @@ fun PayeeDetailSection( } } + if ( + orderEntity?.isP2PTransaction == true && + transactionBankInfo?.otherUserBankInfo?.bankUiModel?.name.isNotNullAndNotEmpty() + ) { + + Spacer(modifier = Modifier.height(4.dp)) + Row( + modifier = Modifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically, + ) { + Box( + modifier = + Modifier.size(24.dp) + .clip(CircleShape) + .border( + width = 0.6.dp, + color = NaviPayColor.borderDefault, + shape = CircleShape, + ) + .background(color = NaviPayColor.textWhite), + contentAlignment = Alignment.Center, + ) { + AsyncImage( + modifier = Modifier.padding(4.dp), + model = + transactionBankInfo?.otherUserBankInfo?.bankUiModel?.iconUrl.orEmpty(), + contentDescription = EMPTY, + fallback = painterResource(id = R.drawable.ic_add_bank), + ) + } + + NaviText( + text = transactionBankInfo?.otherUserBankInfo?.bankUiModel?.name.orEmpty(), + fontSize = 14.sp, + color = NaviPayColor.textTertiary, + fontFamily = naviFontFamily, + fontWeight = getFontWeight(FontWeightEnum.NAVI_BODY_REGULAR), + modifier = Modifier.padding(horizontal = 8.dp), + ) + } + } + Spacer(modifier = Modifier.height(16.dp)) } } diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/tstore/list/model/view/OrderEntity.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/tstore/list/model/view/OrderEntity.kt index 5e1add3076..ad01cade87 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/tstore/list/model/view/OrderEntity.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/tstore/list/model/view/OrderEntity.kt @@ -117,6 +117,20 @@ data class OrderEntity( @IgnoredOnParcel @delegate:Ignore val formattedAmount by lazy { amount.getDisplayableAmount() } + @IgnoredOnParcel + @delegate:Ignore + val isMerchantTransaction by lazy { + categoryTags.contains(TransactionCategoryTags.MERCHANT_PAYMENTS.value) + } + + @IgnoredOnParcel + @delegate:Ignore + val isP2PTransaction by lazy { + (paymentModeTags.contains(TransactionPaymentModeTags.UPI.value) || isUpiLiteTransaction) && + !isMerchantTransaction && + !isOrderOfSelfTransferType + } + @IgnoredOnParcel @delegate:Ignore val formattedAmountAfterCoins by lazy { diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/utils/ShareReceiptUtils.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/utils/ShareReceiptUtils.kt index 1de14f049f..fe95498da9 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/utils/ShareReceiptUtils.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/utils/ShareReceiptUtils.kt @@ -13,6 +13,7 @@ import android.view.LayoutInflater import android.view.View.GONE import android.view.View.VISIBLE import androidx.core.content.ContextCompat.getColor +import androidx.databinding.adapters.TextViewBindingAdapter.setText import com.bumptech.glide.Glide import com.bumptech.glide.load.DataSource import com.bumptech.glide.load.engine.GlideException @@ -251,6 +252,27 @@ fun shareReceipt( } } + fun LayoutShareTransactionDetailsBinding.setPayeeBankNameAndLogo() { + payeeBankView.apply { + if ( + (shareReceiptEntity.isDebited || shareReceiptEntity.isSendMoneyViaUPILite) && + !shareReceiptEntity.isMandateTransaction && + shareReceiptEntity.payeeBankNameFormatted.isNotNullAndNotEmpty() + ) { + payeeBankIcon.visibility = VISIBLE + payeeBankName.visibility = VISIBLE + Glide.with(context) + .load(shareReceiptEntity.payeeBankUrl) + .placeholder(CommonR.drawable.ic_upi_bbps_default_bank_logo) + .error(CommonR.drawable.ic_upi_bbps_default_bank_logo) + .into(payeeBankIcon) + payeeBankName.apply { + setText(shareReceiptEntity.payeeBankNameFormatted.split("-").first().trim()) + } + } + } + } + fun LayoutShareTransactionDetailsBinding.setPayerPayeeSecondInfo() { payerPayeeSecondInfo.apply { key.apply { @@ -349,6 +371,8 @@ fun shareReceipt( setPayerPayeeFirstInfo() + setPayeeBankNameAndLogo() + setPayerPayeeSecondInfo() transactionIdInfo.apply { diff --git a/android/navi-pay/src/main/res/layout/layout_share_transaction_details.xml b/android/navi-pay/src/main/res/layout/layout_share_transaction_details.xml index 6e0fbeed49..8280163b82 100644 --- a/android/navi-pay/src/main/res/layout/layout_share_transaction_details.xml +++ b/android/navi-pay/src/main/res/layout/layout_share_transaction_details.xml @@ -127,10 +127,48 @@ android:layout_marginHorizontal="@dimen/dp_16" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/payment_status_text" /> + app:layout_constraintTop_toBottomOf="@id/payment_status_text" + /> + + + + + + + + + - - - + + app:layout_constraintTop_toBottomOf="@id/autopay_or_payee">