From 170e9c2dbd06f0f44eb203f966c657acde025827 Mon Sep 17 00:00:00 2001 From: Shaurya Rehan Date: Wed, 13 Mar 2024 20:55:44 +0530 Subject: [PATCH] TP-60712 | isLiteAccountEligible logic fix (#10120) --- .../sendmoney/viewmodel/SendMoneyViewModel.kt | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/navi-pay/src/main/kotlin/com/navi/pay/management/common/sendmoney/viewmodel/SendMoneyViewModel.kt b/navi-pay/src/main/kotlin/com/navi/pay/management/common/sendmoney/viewmodel/SendMoneyViewModel.kt index 7251e70034..944a813bc7 100644 --- a/navi-pay/src/main/kotlin/com/navi/pay/management/common/sendmoney/viewmodel/SendMoneyViewModel.kt +++ b/navi-pay/src/main/kotlin/com/navi/pay/management/common/sendmoney/viewmodel/SendMoneyViewModel.kt @@ -896,7 +896,8 @@ constructor( // If transaction via Upi Lite return if ( source.isTransactionViaUpiLite && - shouldUseLiteAccount( + linkedAccounts.size > 0 && + isLiteAccountEligible( linkedAccounts = linkedAccounts, accountsEligibility = accountsEligibility ) @@ -992,11 +993,13 @@ constructor( ): LinkedAccountEntity { // First preference is lite account + val linkedAccountsSize = linkedAccounts.size if ( - shouldUseLiteAccount( - linkedAccounts = linkedAccounts, - accountsEligibility = accountsEligibility - ) + linkedAccountsSize > 0 && + isLiteAccountEligible( + linkedAccounts = linkedAccounts, + accountsEligibility = accountsEligibility + ) ) { return linkedAccounts.first() } @@ -1012,16 +1015,6 @@ constructor( ) } - private fun shouldUseLiteAccount( - linkedAccounts: List, - accountsEligibility: Map - ): Boolean { - return _isActiveLiteAccountPresent.value && - linkedAccounts.isNotEmpty() && - (_liteAccountBalance.value.toDoubleOrNull() ?: 0.0) > 0.0 && - accountsEligibility[linkedAccounts[0].accountId]?.isAccountEligible == true - } - private fun isAccountEligible( accountId: String, accountsEligibility: Map @@ -1048,22 +1041,29 @@ constructor( accountsEligibility: Map ): LinkedAccountEntity { val linkedAccountsSize = linkedAccounts.size - - fun isLiteAccountEligible(): Boolean { - return isActiveLiteAccountPresent.value && - linkedAccountsSize > 0 && - (liteAccountBalance.value.toDoubleOrNull() ?: 0.0) >= - (paymentAmount.value.toDoubleOrNull() ?: 0.0) && - accountsEligibility[linkedAccounts[0].accountId]?.isAccountEligible == true - } - - return if (isLiteAccountEligible()) { + return if ( + linkedAccountsSize > 0 && + isLiteAccountEligible( + linkedAccounts = linkedAccounts, + accountsEligibility = accountsEligibility + ) + ) { linkedAccounts.first() } else { linkedAccounts.getOrElse(1) { linkedAccounts.first() } } } + private fun isLiteAccountEligible( + linkedAccounts: List, + accountsEligibility: Map + ): Boolean { + return isActiveLiteAccountPresent.value && + (liteAccountBalance.value.toDoubleOrNull() ?: 0.0) >= + (paymentAmount.value.toDoubleOrNull() ?: 0.0) && + accountsEligibility[linkedAccounts[0].accountId]?.isAccountEligible == true + } + private fun checkIsInternetAvailableOrShowError(): Boolean { if (!naviPayNetworkConnectivity.isInternetConnected()) { notifyError(getNoInternetErrorConfig())