From 9d92fde4867be6f91b91994599ec7893d0a397f5 Mon Sep 17 00:00:00 2001 From: Shiv Natani Date: Mon, 13 Jan 2025 14:40:43 +0530 Subject: [PATCH] Ntp-26378 | Shiv Natani | offer visibility fix when navi upi accounts not shown (#14495) --- .../nativepayment/screens/MPSScreen.kt | 4 +- .../nativepayment/screens/NPSScreen.kt | 86 ++++++++++--------- .../nativepayment/viewmodel/NPSViewModel.kt | 6 ++ 3 files changed, 56 insertions(+), 40 deletions(-) diff --git a/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/MPSScreen.kt b/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/MPSScreen.kt index cc4cbe2483..3b44005451 100644 --- a/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/MPSScreen.kt +++ b/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/MPSScreen.kt @@ -180,7 +180,9 @@ fun MPSScreen( paymentAmount = paymentAmount, redeemedCoinsValue = if (isDiscountApplied) - coinBurnDetails?.redeemableCoinsValue?.value.orZero() + if (rewardsInfoV2.isNull()) + coinBurnDetails?.redeemableCoinsValue?.value.orZero() + else rewardsInfoV2?.burnDetails?.coinsValue?.value.orZero() else 0.0, source = mpsViewModel.paymentSdkInitParams?.paymentSource.orEmpty(), tstoreOrderReferenceId = payload?.tstoreOrderReferenceId.orEmpty(), diff --git a/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/NPSScreen.kt b/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/NPSScreen.kt index 41bb50a568..5c58f1d450 100644 --- a/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/NPSScreen.kt +++ b/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/NPSScreen.kt @@ -214,6 +214,7 @@ fun NPSScreenRoot( onEvent = npsViewModel::onEvent, scrollState = scrollState, isKeyboardVisible = isKeyboardVisible, + npsViewModel = npsViewModel, ) } @@ -224,6 +225,7 @@ fun NPSScreen( screenState: NPSScreenContract.NPSScreenState, scrollState: ScrollState, isKeyboardVisible: Boolean, + npsViewModel: NPSViewModel, ) { if (screenState.isLoading) { NPSLoadingShimmer { onEvent(NPSBaseContract.Event.OnBackPress(false)) } @@ -233,7 +235,8 @@ fun NPSScreen( onEvent = onEvent, screenState = screenState, scrollState = scrollState, - isKeyboardVisible, + isKeyboardVisible = isKeyboardVisible, + npsViewModel = npsViewModel, ) } } @@ -245,6 +248,7 @@ private fun NpsMainScreen( screenState: NPSScreenContract.NPSScreenState, scrollState: ScrollState, isKeyboardVisible: Boolean, + npsViewModel: NPSViewModel, ) { val bottomSheetState = rememberModalBottomSheetState( @@ -335,46 +339,50 @@ private fun NpsMainScreen( ) { val screenWidth = LocalConfiguration.current.screenWidthDp.dp Column(modifier = Modifier.fillMaxSize().verticalScroll(scrollState)) { - if (screenState.naviCoinState.rewardsInfoV2.isNotNull()) { - OfferExperienceBanner( - burnDetails = screenState.naviCoinState.rewardsInfoV2?.burnDetails, - isDiscountApplied = screenState.naviCoinState.isDiscountApplied, - onDiscountClick = { isDiscountApplied -> - onEvent( - NPSScreenContract.NPSScreenEvent.OnDiscountClicked( - isDiscountApplied + if (npsViewModel.isOfferApplicable()) { + if (screenState.naviCoinState.rewardsInfoV2.isNotNull()) { + OfferExperienceBanner( + burnDetails = + screenState.naviCoinState.rewardsInfoV2?.burnDetails, + isDiscountApplied = screenState.naviCoinState.isDiscountApplied, + onDiscountClick = { isDiscountApplied -> + onEvent( + NPSScreenContract.NPSScreenEvent.OnDiscountClicked( + isDiscountApplied + ) ) - ) - }, - earnDetails = screenState.naviCoinState.rewardsInfoV2?.earnDetails, - offset = - (if (screenState.npsBaseState.paymentAmount < 100) - screenWidth - 70.dp - else screenWidth - 78.dp), - isDiscountPreApplied = - screenState.naviCoinState.isDiscountPreApplied, - ) - } else if ( - screenState.naviCoinState.coinBurnDetails.isNotNull() && - screenState.naviCoinState.isDiscountPreApplied.not() - ) { - CoinBurnBanner( - paymentAmount = screenState.npsBaseState.paymentAmount, - coinBurnDetails = screenState.naviCoinState.coinBurnDetails, - isDiscountApplied = screenState.naviCoinState.isDiscountApplied, - onDiscountClick = { isDiscountApplied -> - onEvent( - NPSScreenContract.NPSScreenEvent.OnDiscountClicked( - isDiscountApplied + }, + earnDetails = + screenState.naviCoinState.rewardsInfoV2?.earnDetails, + offset = + (if (screenState.npsBaseState.paymentAmount < 100) + screenWidth - 70.dp + else screenWidth - 78.dp), + isDiscountPreApplied = + screenState.naviCoinState.isDiscountPreApplied, + ) + } else if ( + screenState.naviCoinState.coinBurnDetails.isNotNull() && + screenState.naviCoinState.isDiscountPreApplied.not() + ) { + CoinBurnBanner( + paymentAmount = screenState.npsBaseState.paymentAmount, + coinBurnDetails = screenState.naviCoinState.coinBurnDetails, + isDiscountApplied = screenState.naviCoinState.isDiscountApplied, + onDiscountClick = { isDiscountApplied -> + onEvent( + NPSScreenContract.NPSScreenEvent.OnDiscountClicked( + isDiscountApplied + ) ) - ) - }, - offset = - (if (screenState.npsBaseState.paymentAmount < 100) - screenWidth - 70.dp - else screenWidth - 78.dp), - modifier = Modifier.padding(vertical = 4.dp), - ) + }, + offset = + (if (screenState.npsBaseState.paymentAmount < 100) + screenWidth - 70.dp + else screenWidth - 78.dp), + modifier = Modifier.padding(vertical = 4.dp), + ) + } } Spacer(modifier = Modifier.height(24.dp)) screenState.paymentInstrumentsOrderList?.forEach { diff --git a/android/navi-payment/src/main/java/com/navi/payment/nativepayment/viewmodel/NPSViewModel.kt b/android/navi-payment/src/main/java/com/navi/payment/nativepayment/viewmodel/NPSViewModel.kt index a719b1523f..01d340b3c7 100644 --- a/android/navi-payment/src/main/java/com/navi/payment/nativepayment/viewmodel/NPSViewModel.kt +++ b/android/navi-payment/src/main/java/com/navi/payment/nativepayment/viewmodel/NPSViewModel.kt @@ -1530,4 +1530,10 @@ constructor( else -> {} } } + + fun isOfferApplicable(): Boolean { + return npsScreenState.paymentInstrumentsOrderList + ?.contains(UpiLinkedAccountPaymentInstrument.PAYMENT_INSTRUMENT_TYPE) + .orFalse() + } }