NTP-4194 | Added support for auto decline collect request (#12681)

This commit is contained in:
Ujjwal Kumar
2024-09-22 14:04:54 +05:30
committed by GitHub
parent 376f88a9fd
commit 8f7bb039a9
6 changed files with 39 additions and 7 deletions

View File

@@ -165,7 +165,8 @@ fun CollectRequestsScreen(
collectRequestViewModel.onProceedButtonClicked(
collectRequestEntity = collectRequest,
totalPendingRequest = totalPendingRequests
totalPendingRequest = totalPendingRequests,
sendMoneyAction = null
)
}

View File

@@ -25,6 +25,7 @@ import com.navi.pay.management.collectrequest.model.network.CollectRequestsReque
import com.navi.pay.management.collectrequest.model.view.CollectRequestEntity
import com.navi.pay.management.collectrequest.repository.CollectRequestsRepository
import com.navi.pay.management.common.sendmoney.model.view.PayeeEntity
import com.navi.pay.management.common.sendmoney.model.view.SendMoneyAction
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.mandate.model.network.MandateDetailRequest
@@ -103,6 +104,9 @@ constructor(
) {
val collectRequestTransactionId =
naviPayActivityDataProvider.getIntentData()?.getString("gatewayTransactionId") ?: return
val collectRequestAction =
naviPayActivityDataProvider.getIntentData()?.getString("SendMoneyAction") ?: return
val sendMoneyActionForCollectRequest = SendMoneyAction.fromString(collectRequestAction)
val collectRequestEntity =
collectRequests.firstOrNull { it.transactionId == collectRequestTransactionId }
@@ -113,7 +117,8 @@ constructor(
onProceedButtonClicked(
collectRequestEntity = collectRequestEntity,
totalPendingRequest = collectRequests.size
totalPendingRequest = collectRequests.size,
sendMoneyAction = sendMoneyActionForCollectRequest
)
}
@@ -171,7 +176,8 @@ constructor(
fun onProceedButtonClicked(
collectRequestEntity: CollectRequestEntity,
totalPendingRequest: Int
totalPendingRequest: Int,
sendMoneyAction: SendMoneyAction?
) {
viewModelScope.launch(Dispatchers.IO) {
_collectRequestUIState.update { CollectRequestUIState.Loading }
@@ -180,7 +186,8 @@ constructor(
SendMoneyScreenSource.CollectRequest(
collectType = collectRequestEntity.collectType,
totalPendingRequests = totalPendingRequest,
payerVpa = collectRequestEntity.payerVpa
payerVpa = collectRequestEntity.payerVpa,
autoTriggerSendMoneyAction = sendMoneyAction
)
naviPaySessionHelper.createNewSessionId()

View File

@@ -11,5 +11,11 @@ enum class SendMoneyAction {
StartPayment,
Approve,
Decline,
SetPin
SetPin;
companion object {
fun fromString(value: String): SendMoneyAction? {
return entries.find { it.name == value }
}
}
}

View File

@@ -211,7 +211,8 @@ sealed class SendMoneyScreenSource : Parcelable {
val totalPendingRequests: Int = 0,
val payerVpa: String,
val umn: String? = null,
val source: CollectRequestSource = CollectRequestSource.CollectRequestScreen
val source: CollectRequestSource = CollectRequestSource.CollectRequestScreen,
val autoTriggerSendMoneyAction: SendMoneyAction?
) : SendMoneyScreenSource()
@Parcelize

View File

@@ -480,6 +480,7 @@ constructor(
paymentAmountChangeListener()
customerStatusListener()
selectedAccountChangeListener()
autoTriggerCollectRequestActionListener()
}
private fun customerStatusListener() {
@@ -530,6 +531,21 @@ constructor(
}
}
private fun autoTriggerCollectRequestActionListener() {
viewModelScope.launch(Dispatchers.IO) {
// Waiting for all listeners before triggering auto actions
delay(300.milliseconds)
if (source !is SendMoneyScreenSource.CollectRequest) {
return@launch
}
// Auto trigger decline for Collect Request
if (source.autoTriggerSendMoneyAction == SendMoneyAction.Decline) {
declineCollectRequest()
}
}
}
private fun checkFtueNudgeVisibility() {
viewModelScope.launch(Dispatchers.IO) {
val ftueNudgeCounter =

View File

@@ -426,7 +426,8 @@ constructor(
payerVpa = collectRequestEntity.payerVpa,
source =
if (isFromInAppNotification) CollectRequestSource.IAN
else CollectRequestSource.PN
else CollectRequestSource.PN,
autoTriggerSendMoneyAction = null
)
if (collectRequestEntity.collectType == REQUEST_TYPE_MANDATE) {