NTP-65041 | Shiv Natani | crash fix polling screen size limit (#16229)
This commit is contained in:
@@ -7,7 +7,6 @@
|
||||
|
||||
package com.navi.payment.nativepayment.model
|
||||
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.os.Parcelable
|
||||
import com.navi.common.network.models.GenericErrorResponse
|
||||
@@ -16,8 +15,6 @@ import com.navi.common.upi.PAYER_BANK_ACCOUNT_ID
|
||||
import com.navi.common.upi.T_STORE_ORDER_REFERENCE_ID
|
||||
import com.navi.common.utils.EMPTY
|
||||
import com.navi.common.utils.log
|
||||
import com.navi.pay.management.common.sendmoney.model.view.PayeeEntity
|
||||
import com.navi.pay.management.moneytransfer.scanpay.util.getPayeeEntity
|
||||
import com.navi.pay.utils.NAVI_PAY_UPI_URI_KEY
|
||||
import com.navi.payment.paymentscreen.model.PaymentErrorData
|
||||
import kotlinx.parcelize.Parcelize
|
||||
@@ -50,7 +47,7 @@ sealed class WebPaymentData : Parcelable {
|
||||
val tstoreOrderReferenceId: String,
|
||||
val metadata: String,
|
||||
val payerBankAccountId: String,
|
||||
val payeeEntity: PayeeEntity,
|
||||
val naviPayUpiUriKey: String?,
|
||||
) : WebPaymentData() {
|
||||
companion object {
|
||||
fun from(bundle: Bundle): WebViewSendMoneyData {
|
||||
@@ -58,9 +55,7 @@ sealed class WebPaymentData : Parcelable {
|
||||
tstoreOrderReferenceId = bundle.getString(T_STORE_ORDER_REFERENCE_ID).orEmpty(),
|
||||
metadata = bundle.getString(METADATA).orEmpty(),
|
||||
payerBankAccountId = bundle.getString(PAYER_BANK_ACCOUNT_ID).orEmpty(),
|
||||
payeeEntity =
|
||||
Uri.parse(bundle.getString(NAVI_PAY_UPI_URI_KEY).orEmpty())
|
||||
.getPayeeEntity(true),
|
||||
naviPayUpiUriKey = bundle.getString(NAVI_PAY_UPI_URI_KEY).orEmpty(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
|
||||
package com.navi.payment.nativepayment.screens
|
||||
|
||||
import android.net.Uri
|
||||
import androidx.activity.compose.BackHandler
|
||||
import androidx.activity.compose.rememberLauncherForActivityResult
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
@@ -55,7 +54,6 @@ import com.navi.pay.common.ui.NaviPayModalBottomSheetLayout
|
||||
import com.navi.pay.management.common.sendmoney.model.view.BankAccountsState
|
||||
import com.navi.pay.management.common.sendmoney.model.view.SendMoneyScreenSource
|
||||
import com.navi.pay.management.common.sendmoney.ui.PaymentFailedRetryBottomSheetContent
|
||||
import com.navi.pay.management.moneytransfer.scanpay.util.getPayeeEntity
|
||||
import com.navi.pay.onboarding.account.detail.model.view.LinkedAccountEntity
|
||||
import com.navi.pay.utils.isAccountIdOfTypeUpiLite
|
||||
import com.navi.payment.R as PaymentR
|
||||
@@ -178,10 +176,9 @@ fun MPSScreen(
|
||||
),
|
||||
naviUpiTransactionInfo =
|
||||
NaviUpiTransactionInfo(
|
||||
payeeEntity =
|
||||
Uri.parse(payload?.naviPayUpiUriKey).getPayeeEntity(true),
|
||||
naviPayUpiUriKey = payload?.naviPayUpiUriKey,
|
||||
upiRequestId = pmsSendMoneyStatus.upiRequestId,
|
||||
selectedBankAccount = selectedBankAccount,
|
||||
selectedBankAccountId = selectedBankAccount?.accountId.orEmpty(),
|
||||
credBlock = pmsSendMoneyStatus.credBlock.orEmpty(),
|
||||
metaData = Gson().toJson(payload?.metadata),
|
||||
txnTimeStamp = mpsViewModel.txnTimeStamp,
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
|
||||
package com.navi.payment.nativepayment.screens
|
||||
|
||||
import android.net.Uri
|
||||
import androidx.activity.compose.BackHandler
|
||||
import androidx.activity.compose.rememberLauncherForActivityResult
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
@@ -38,7 +37,6 @@ import com.navi.pay.common.theme.color.NaviPayColor
|
||||
import com.navi.pay.common.ui.NaviPayModalBottomSheet
|
||||
import com.navi.pay.management.common.sendmoney.model.view.SendMoneyScreenSource
|
||||
import com.navi.pay.management.common.sendmoney.ui.PaymentFailedRetryBottomSheetContent
|
||||
import com.navi.pay.management.moneytransfer.scanpay.util.getPayeeEntity
|
||||
import com.navi.payment.nativepayment.NaviPaymentAnalyticScreenName
|
||||
import com.navi.payment.nativepayment.NaviPaymentAnalytics
|
||||
import com.navi.payment.nativepayment.activity.NaviPaymentActivity
|
||||
@@ -331,9 +329,10 @@ private fun navigateToTransactionPollingScreen(
|
||||
),
|
||||
naviUpiTransactionInfo =
|
||||
NaviUpiTransactionInfo(
|
||||
payeeEntity = Uri.parse(payload?.naviPayUpiUriKey).getPayeeEntity(true),
|
||||
naviPayUpiUriKey = payload?.naviPayUpiUriKey,
|
||||
upiRequestId = pmsSendMoneyStatus.upiRequestId,
|
||||
selectedBankAccount = oneClickCheckoutViewModel.linkedAccountEntity,
|
||||
selectedBankAccountId =
|
||||
oneClickCheckoutViewModel.linkedAccountEntity?.accountId.orEmpty(),
|
||||
credBlock = pmsSendMoneyStatus.credBlock.orEmpty(),
|
||||
metaData = Gson().toJson(payload?.metadata),
|
||||
txnTimeStamp = oneClickCheckoutViewModel.txnTimeStamp,
|
||||
|
||||
@@ -171,9 +171,8 @@ fun WebPaymentMainScreen(
|
||||
val tstoreOrderReferenceId = data?.tstoreOrderReferenceId
|
||||
val metadata = data?.metadata
|
||||
val payerBankAccountId = data?.payerBankAccountId
|
||||
val payeeEntity = data?.payeeEntity
|
||||
webPaymentViewModel.startNaviUpiPayment(
|
||||
payeeEntity = payeeEntity,
|
||||
naviPayUpiUriKey = data?.naviPayUpiUriKey,
|
||||
tstoreOrderId = tstoreOrderReferenceId.orEmpty(),
|
||||
metaData = metadata,
|
||||
bankAccountId = payerBankAccountId.orEmpty(),
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
package com.navi.payment.nativepayment.usecase
|
||||
|
||||
import android.net.Uri
|
||||
import com.navi.base.AppServiceManager
|
||||
import com.navi.base.utils.ResourceProvider
|
||||
import com.navi.base.utils.UNDERSCORE
|
||||
@@ -21,6 +22,7 @@ import com.navi.pay.common.model.view.NaviPayButtonAction
|
||||
import com.navi.pay.common.model.view.NaviPayButtonTheme
|
||||
import com.navi.pay.common.model.view.NaviPayErrorButtonConfig
|
||||
import com.navi.pay.common.model.view.NaviPayErrorConfig
|
||||
import com.navi.pay.common.usecase.LinkedAccountsUseCase
|
||||
import com.navi.pay.common.usecase.SendMoneyUseCase
|
||||
import com.navi.pay.common.usecase.UpiRequestIdUseCase
|
||||
import com.navi.pay.common.utils.DeviceInfoProvider
|
||||
@@ -32,6 +34,7 @@ import com.navi.pay.management.common.sendmoney.model.network.TransactionRespons
|
||||
import com.navi.pay.management.common.sendmoney.model.view.PayeeEntity
|
||||
import com.navi.pay.management.common.sendmoney.model.view.SendMoneyScreenSource
|
||||
import com.navi.pay.management.common.sendmoney.model.view.UpiTransactionType
|
||||
import com.navi.pay.management.moneytransfer.scanpay.util.getPayeeEntity
|
||||
import com.navi.pay.onboarding.account.detail.model.view.LinkedAccountEntity
|
||||
import com.navi.pay.onboarding.binding.model.view.NaviPayCustomerOnboardingEntity
|
||||
import com.navi.pay.utils.NAVI_AXIS_UPI_HANDLE
|
||||
@@ -41,6 +44,7 @@ import com.navi.payment.nativepayment.NaviPaymentAnalytics
|
||||
import com.navi.payment.nativepayment.model.PMSSendMoneyStatus
|
||||
import com.navi.payment.paymentscreen.model.NaviUpiTransactionInfo
|
||||
import javax.inject.Inject
|
||||
import kotlinx.coroutines.flow.first
|
||||
|
||||
class PmsSendMoneyUseCase
|
||||
@Inject
|
||||
@@ -51,6 +55,7 @@ constructor(
|
||||
private val deviceInfoProvider: DeviceInfoProvider,
|
||||
private val upiRequestIdUseCase: UpiRequestIdUseCase,
|
||||
private val sendMoneyUseCase: SendMoneyUseCase,
|
||||
private val linkedAccountUseCase: LinkedAccountsUseCase,
|
||||
) {
|
||||
|
||||
private val naviPaymentAnalytics = NaviPaymentAnalytics.INSTANCE.CommonAnalytics()
|
||||
@@ -304,18 +309,23 @@ constructor(
|
||||
onInitialChecksFailure(errorConfig)
|
||||
return
|
||||
}
|
||||
naviUpiTransactionInfo.selectedBankAccount?.isArcProtected =
|
||||
naviUpiTransactionInfo.isArcProtected
|
||||
val selectedBankAccount =
|
||||
fetchLinkedAccountEntity(accountId = naviUpiTransactionInfo.selectedBankAccountId)
|
||||
if (selectedBankAccount == null) {
|
||||
onInitialChecksFailure(getGenericErrorConfig())
|
||||
return
|
||||
}
|
||||
selectedBankAccount.isArcProtected = naviUpiTransactionInfo.isArcProtected
|
||||
sendMoneyUseCase.executeSendMoney(
|
||||
payeeEntity = naviUpiTransactionInfo.payeeEntity,
|
||||
payeeEntity =
|
||||
Uri.parse(naviUpiTransactionInfo.naviPayUpiUriKey)
|
||||
.getPayeeEntity(isVerifiedVpa = true),
|
||||
upiRequestId = naviUpiTransactionInfo.upiRequestId,
|
||||
selectedBankAccount = naviUpiTransactionInfo.selectedBankAccount!!,
|
||||
selectedBankAccount = selectedBankAccount,
|
||||
txnTimeStamp = naviUpiTransactionInfo.txnTimeStamp,
|
||||
credBlock = naviUpiTransactionInfo.credBlock,
|
||||
isPaymentFromLiteAccount =
|
||||
naviUpiTransactionInfo.selectedBankAccount.accountId
|
||||
.isAccountIdOfTypeUpiLite()
|
||||
.orFalse(),
|
||||
selectedBankAccount.accountId.isAccountIdOfTypeUpiLite().orFalse(),
|
||||
sendMoneyScreenSource = SendMoneyScreenSource.PMS,
|
||||
transactionType = UpiTransactionType.INTENT_PAY,
|
||||
tstoreOrderId = tstoreOrderId,
|
||||
@@ -329,4 +339,9 @@ constructor(
|
||||
customerOnboardingEntity = naviUpiTransactionInfo.onboardingDataEntity,
|
||||
)
|
||||
}
|
||||
|
||||
private suspend fun fetchLinkedAccountEntity(accountId: String): LinkedAccountEntity? {
|
||||
val accounts = linkedAccountUseCase.execute(includeAllDetails = true).first()
|
||||
return accounts.firstOrNull { it.accountId == accountId }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1485,12 +1485,13 @@ constructor(
|
||||
payNowResponse = payNowResponse,
|
||||
naviUpiTransactionInfo =
|
||||
NaviUpiTransactionInfo(
|
||||
selectedBankAccount =
|
||||
npsScreenState.naviUpiPaymentState.selectedBankAccount,
|
||||
selectedBankAccountId =
|
||||
npsScreenState.naviUpiPaymentState.selectedBankAccount
|
||||
?.accountId
|
||||
.orEmpty(),
|
||||
credBlock = pmsSendMoneyStatus.credBlock.orEmpty(),
|
||||
upiRequestId = pmsSendMoneyStatus.upiRequestId,
|
||||
payeeEntity =
|
||||
Uri.parse(payload?.naviPayUpiUriKey).getPayeeEntity(true),
|
||||
naviPayUpiUriKey = payload?.naviPayUpiUriKey,
|
||||
metaData = Gson().toJson(payload?.metadata),
|
||||
txnTimeStamp = txnTimeStamp,
|
||||
isArcProtected =
|
||||
|
||||
@@ -242,9 +242,8 @@ constructor(
|
||||
response = sendMoneyResponse,
|
||||
sourceDestination = sourceDestination,
|
||||
isPaymentThroughLiteAccount =
|
||||
naviUpiTransactionInfo.selectedBankAccount
|
||||
?.accountId
|
||||
?.isAccountIdOfTypeUpiLite()
|
||||
naviUpiTransactionInfo.selectedBankAccountId
|
||||
.isAccountIdOfTypeUpiLite()
|
||||
.orFalse(),
|
||||
)
|
||||
)
|
||||
|
||||
@@ -599,15 +599,18 @@ constructor(
|
||||
payNowResponse = payNowResponse,
|
||||
naviUpiTransactionInfo =
|
||||
NaviUpiTransactionInfo(
|
||||
selectedBankAccount =
|
||||
selectedBankAccountId =
|
||||
getLinkedAccountEntityFromVpaIfAvailable(
|
||||
vpa =
|
||||
upiScreenState.npsBaseState.upiCollectOptionState.upiCollectVpa
|
||||
.text
|
||||
),
|
||||
vpa =
|
||||
upiScreenState.npsBaseState.upiCollectOptionState
|
||||
.upiCollectVpa
|
||||
.text
|
||||
)
|
||||
?.accountId
|
||||
.orEmpty(),
|
||||
credBlock = pmsSendMoneyStatus.credBlock.orEmpty(),
|
||||
upiRequestId = pmsSendMoneyStatus.upiRequestId,
|
||||
payeeEntity = Uri.parse(payload?.naviPayUpiUriKey).getPayeeEntity(true),
|
||||
naviPayUpiUriKey = payload?.naviPayUpiUriKey,
|
||||
metaData = Gson().toJson(payload?.metadata),
|
||||
txnTimeStamp = txnTimeStamp,
|
||||
onboardingDataEntity = pmsSendMoneyStatus.onboardingDataEntity,
|
||||
|
||||
@@ -40,7 +40,6 @@ import com.navi.pay.common.setup.NaviPayManager
|
||||
import com.navi.pay.common.usecase.LinkedAccountsUseCase
|
||||
import com.navi.pay.common.viewmodel.NaviPayBaseVM.Companion.ERROR_DEFAULT_TAG
|
||||
import com.navi.pay.management.common.sendmoney.model.view.BankAccountsState
|
||||
import com.navi.pay.management.common.sendmoney.model.view.PayeeEntity
|
||||
import com.navi.pay.management.common.utils.NaviPayPspManager
|
||||
import com.navi.pay.management.moneytransfer.scanpay.util.getPayeeEntity
|
||||
import com.navi.pay.onboarding.account.detail.model.view.LinkedAccountEntity
|
||||
@@ -424,7 +423,7 @@ constructor(
|
||||
}
|
||||
|
||||
fun startNaviUpiPayment(
|
||||
payeeEntity: PayeeEntity?,
|
||||
naviPayUpiUriKey: String?,
|
||||
tstoreOrderId: String,
|
||||
metaData: String?,
|
||||
bankAccountId: String,
|
||||
@@ -442,7 +441,7 @@ constructor(
|
||||
linkedAccountEntity.accountId.isAccountIdOfTypeUpiLite() ->
|
||||
handleLiteAccountPayment(
|
||||
linkedAccountEntity = linkedAccountEntity,
|
||||
payeeEntity = payeeEntity,
|
||||
naviPayUpiUriKey = naviPayUpiUriKey,
|
||||
tstoreOrderId = tstoreOrderId,
|
||||
metaData = metaData,
|
||||
txnTimeStamp = txnTimeStamp,
|
||||
@@ -450,7 +449,7 @@ constructor(
|
||||
else ->
|
||||
handleNonLiteAccountPayment(
|
||||
linkedAccountEntity = linkedAccountEntity,
|
||||
payeeEntity = payeeEntity,
|
||||
naviPayUpiUriKey = naviPayUpiUriKey,
|
||||
tstoreOrderId = tstoreOrderId,
|
||||
metaData = metaData,
|
||||
txnTimeStamp = txnTimeStamp,
|
||||
@@ -461,7 +460,7 @@ constructor(
|
||||
|
||||
private suspend fun handleLiteAccountPayment(
|
||||
linkedAccountEntity: LinkedAccountEntity,
|
||||
payeeEntity: PayeeEntity?,
|
||||
naviPayUpiUriKey: String?,
|
||||
tstoreOrderId: String,
|
||||
metaData: String?,
|
||||
txnTimeStamp: String,
|
||||
@@ -495,7 +494,7 @@ constructor(
|
||||
|
||||
pspEvaluationResult.onboardingDataEntity?.let { onboardingEntity ->
|
||||
proceedToCLPinPage(
|
||||
payeeEntity = payeeEntity,
|
||||
naviPayUpiUriKey = naviPayUpiUriKey,
|
||||
linkedAccountEntity = linkedAccountEntity,
|
||||
txnTimeStamp = txnTimeStamp,
|
||||
metaData = metaData,
|
||||
@@ -509,7 +508,7 @@ constructor(
|
||||
|
||||
private suspend fun handleNonLiteAccountPayment(
|
||||
linkedAccountEntity: LinkedAccountEntity,
|
||||
payeeEntity: PayeeEntity?,
|
||||
naviPayUpiUriKey: String?,
|
||||
tstoreOrderId: String,
|
||||
metaData: String?,
|
||||
txnTimeStamp: String,
|
||||
@@ -533,7 +532,7 @@ constructor(
|
||||
return@evaluateAndOnboardPspForFlow
|
||||
}
|
||||
proceedToCLPinPage(
|
||||
payeeEntity = payeeEntity,
|
||||
naviPayUpiUriKey = naviPayUpiUriKey,
|
||||
linkedAccountEntity = linkedAccountEntity,
|
||||
txnTimeStamp = txnTimeStamp,
|
||||
metaData = metaData,
|
||||
@@ -545,7 +544,7 @@ constructor(
|
||||
}
|
||||
|
||||
private suspend fun proceedToCLPinPage(
|
||||
payeeEntity: PayeeEntity?,
|
||||
naviPayUpiUriKey: String?,
|
||||
linkedAccountEntity: LinkedAccountEntity,
|
||||
txnTimeStamp: String,
|
||||
metaData: String?,
|
||||
@@ -555,7 +554,7 @@ constructor(
|
||||
|
||||
val sendMoneyStatus =
|
||||
pmsSendMoneyUseCase.performChecksAndGenerateCredBlock(
|
||||
payeeEntity = payeeEntity!!,
|
||||
payeeEntity = Uri.parse(naviPayUpiUriKey).getPayeeEntity(isVerifiedVpa = true),
|
||||
linkedAccountEntity = linkedAccountEntity,
|
||||
screenName = NaviPaymentAnalyticScreenName.WEB_PAYMENT_SCREEN.screenName,
|
||||
baseAnalyticsParam = getBaseAnalyticParams(),
|
||||
@@ -565,7 +564,7 @@ constructor(
|
||||
_showPayNowLoader.update { false }
|
||||
handlePinPageResult(
|
||||
sendMoneyStatus = sendMoneyStatus,
|
||||
payeeEntity = payeeEntity,
|
||||
naviPayUpiUriKey = naviPayUpiUriKey,
|
||||
txnTimeStamp = txnTimeStamp,
|
||||
linkedAccountEntity = linkedAccountEntity,
|
||||
metaData = metaData,
|
||||
@@ -577,7 +576,7 @@ constructor(
|
||||
|
||||
private fun handlePinPageResult(
|
||||
sendMoneyStatus: PMSSendMoneyStatus,
|
||||
payeeEntity: PayeeEntity,
|
||||
naviPayUpiUriKey: String?,
|
||||
txnTimeStamp: String,
|
||||
linkedAccountEntity: LinkedAccountEntity,
|
||||
metaData: String?,
|
||||
@@ -591,11 +590,11 @@ constructor(
|
||||
onInitialChecksFailure = {},
|
||||
naviUpiTransactionInfo =
|
||||
NaviUpiTransactionInfo(
|
||||
payeeEntity = payeeEntity,
|
||||
naviPayUpiUriKey = naviPayUpiUriKey,
|
||||
txnTimeStamp = txnTimeStamp,
|
||||
credBlock = sendMoneyStatus.credBlock!!,
|
||||
upiRequestId = sendMoneyStatus.upiRequestId,
|
||||
selectedBankAccount = linkedAccountEntity,
|
||||
selectedBankAccountId = linkedAccountEntity.accountId,
|
||||
metaData = metaData,
|
||||
onboardingDataEntity = onboardingEntity,
|
||||
),
|
||||
@@ -653,10 +652,8 @@ constructor(
|
||||
payNowResponse = response.data
|
||||
(response.data as? InternalPayNowResponse)?.let {
|
||||
val payLoad = it.providerPayload
|
||||
val payeeEntity =
|
||||
Uri.parse(payLoad?.naviPayUpiUriKey).getPayeeEntity(isVerifiedVpa = true)
|
||||
startNaviUpiPayment(
|
||||
payeeEntity = payeeEntity,
|
||||
naviPayUpiUriKey = payLoad?.naviPayUpiUriKey,
|
||||
tstoreOrderId = payLoad?.tstoreOrderReferenceId.orEmpty(),
|
||||
metaData = Gson().toJson(payLoad?.metadata),
|
||||
bankAccountId = selectedBankAccount.value?.accountId.orEmpty(),
|
||||
|
||||
@@ -9,16 +9,14 @@ package com.navi.payment.paymentscreen.model
|
||||
|
||||
import android.os.Parcelable
|
||||
import com.navi.common.constants.EMPTY
|
||||
import com.navi.pay.management.common.sendmoney.model.view.PayeeEntity
|
||||
import com.navi.pay.onboarding.account.detail.model.view.LinkedAccountEntity
|
||||
import com.navi.pay.onboarding.binding.model.view.NaviPayCustomerOnboardingEntity
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
@Parcelize
|
||||
data class NaviUpiTransactionInfo(
|
||||
val payeeEntity: PayeeEntity,
|
||||
val naviPayUpiUriKey: String?,
|
||||
val txnTimeStamp: String,
|
||||
val selectedBankAccount: LinkedAccountEntity? = null,
|
||||
val selectedBankAccountId: String,
|
||||
val credBlock: String,
|
||||
val metaData: String? = null,
|
||||
val upiRequestId: String = EMPTY,
|
||||
|
||||
Reference in New Issue
Block a user