TP-49806 | Shankar | Fix Pending bottomsheet dismiss issue (#9822)
Co-authored-by: Ashutosh Y <ashutosh.y@navi.com> Co-authored-by: Mehul Garg <mehul.garg@navi.com>
This commit is contained in:
@@ -130,7 +130,8 @@ fun PayBillScreen(
|
||||
payBillViewModel.updateIsTokenLoading(isLoading = false)
|
||||
}
|
||||
PaymentSdkTypes.TRANSACTION_SUCCESS.name,
|
||||
PaymentSdkTypes.TRANSACTION_FAILURE.name -> {
|
||||
PaymentSdkTypes.TRANSACTION_FAILURE.name,
|
||||
PaymentSdkTypes.TRANSACTION_PENDING.name -> {
|
||||
val dataJSONObject = data?.stringToJsonObject()
|
||||
|
||||
naviBbpsAnalytics.onPaymentCompleted(
|
||||
@@ -612,7 +613,8 @@ private fun startPaymentFlow(
|
||||
) {
|
||||
when (payload[PAYMENT_RESULT_TYPE]) {
|
||||
PaymentSdkTypes.TRANSACTION_FAILURE.name,
|
||||
PaymentSdkTypes.TRANSACTION_SUCCESS.name -> {
|
||||
PaymentSdkTypes.TRANSACTION_SUCCESS.name,
|
||||
PaymentSdkTypes.TRANSACTION_PENDING.name -> {
|
||||
val dataJSONObject = payload.get(DATA).toJsonObject()
|
||||
|
||||
naviBbpsAnalytics.onPaymentCompleted(
|
||||
|
||||
@@ -196,6 +196,7 @@ import com.navi.payment.razorpay.RazorpayHelper
|
||||
import com.navi.payment.utils.Constants.FULL_PAYMENT_SCREEN
|
||||
import com.navi.payment.utils.Constants.PAYMENT_METHOD_REQUEST_CODE
|
||||
import com.navi.payment.utils.Constants.TRANSACTION_FAILURE
|
||||
import com.navi.payment.utils.Constants.TRANSACTION_PENDING
|
||||
import com.navi.payment.utils.Constants.TRANSACTION_SUCCESS
|
||||
import com.navi.payment.utils.PaymentAnalytics
|
||||
import com.navi.payment.utils.toCommonGenericErrorResponse
|
||||
@@ -1781,12 +1782,14 @@ class DigitalGoldHomeActivity : BasePaymentActivity(), WidgetCallback, NewBottom
|
||||
PaymentSdkTypes.DISMISS_LOADER.name -> {
|
||||
// NO-OP
|
||||
}
|
||||
PaymentSdkTypes.TRANSACTION_SUCCESS.name, PaymentSdkTypes.TRANSACTION_FAILURE.name -> {
|
||||
PaymentSdkTypes.TRANSACTION_SUCCESS.name, PaymentSdkTypes.TRANSACTION_FAILURE.name , PaymentSdkTypes.TRANSACTION_PENDING.name-> {
|
||||
showProcessingBottomSheet()
|
||||
buyVM.setPostPaymentResponseStatus(
|
||||
PaymentStatusData(
|
||||
status = if(PaymentSdkTypes.TRANSACTION_SUCCESS.name == TRANSACTION_SUCCESS)
|
||||
FirebaseStatusType.SUCCESS
|
||||
else if(PaymentSdkTypes.TRANSACTION_PENDING.name == TRANSACTION_PENDING)
|
||||
FirebaseStatusType.PENDING
|
||||
else FirebaseStatusType.FAILURE,
|
||||
requestId = buyVM.goldBuyOrderResponse.value?.requestId
|
||||
)
|
||||
|
||||
@@ -22,5 +22,6 @@ data class PaymentSdkInitParams(
|
||||
enum class PaymentSdkTypes {
|
||||
TRANSACTION_SUCCESS,
|
||||
TRANSACTION_FAILURE,
|
||||
TRANSACTION_PENDING,
|
||||
DISMISS_LOADER
|
||||
}
|
||||
@@ -20,5 +20,6 @@ data class TurboCheckoutScreenStructure(
|
||||
val renderActions: WidgetModelDefinition.RenderActions? = null,
|
||||
val backgroundColor: String? = DEFAULT_BACKGROUND_COLOR,
|
||||
val backgroundBrushData: BrushData? = null,
|
||||
var bottomsheets: List<TurboCheckoutScreenStructure>? = null
|
||||
var bottomsheets: List<TurboCheckoutScreenStructure>? = null,
|
||||
val isCancelable: Boolean = false
|
||||
) : Parcelable, TransactionResponseMetaData()
|
||||
@@ -9,4 +9,5 @@ sealed class PaymentButtonLoaderState {
|
||||
|
||||
data class Failure(val title: String) : PaymentButtonLoaderState()
|
||||
|
||||
object Nothing: PaymentButtonLoaderState()
|
||||
}
|
||||
@@ -75,6 +75,7 @@ import com.navi.payment.utils.Constants.CHANNEL_PL
|
||||
import com.navi.payment.utils.Constants.KEY_CTA_URL
|
||||
import com.navi.payment.utils.Constants.KEY_FLOW_NAME
|
||||
import com.navi.payment.utils.Constants.SOURCE
|
||||
import com.navi.payment.utils.Constants.TRANSACTION_PENDING
|
||||
import com.navi.payment.utils.Constants.TRANSACTION_SUCCESS
|
||||
import com.navi.payment.utils.Constants.TURBO_CHECKOUT_BOTTOMSHEET
|
||||
import com.navi.paymentclients.viewmodel.base.PaymentSdkClientVM
|
||||
@@ -181,7 +182,7 @@ class PaymentLoaderFragment : PaymentScreenBaseFragment(), PaymentBackListener {
|
||||
PENDING -> {
|
||||
if (!response.nextStatusCheckRequired.orTrue()) {
|
||||
stopApiPoll()
|
||||
openPendingBottomSheet()
|
||||
openPendingBottomSheet(response.data)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -434,7 +435,9 @@ class PaymentLoaderFragment : PaymentScreenBaseFragment(), PaymentBackListener {
|
||||
listener = null
|
||||
}
|
||||
|
||||
private fun openPendingBottomSheet() {
|
||||
private fun openPendingBottomSheet(
|
||||
transactionStatusResponseData: TransactionStatusResponseData? = null,
|
||||
) {
|
||||
val bottomSheetConfig =
|
||||
viewModel.pendingBottomSheetData.value?.bottomSheetType?.let {
|
||||
PaymentScreenUtil.getBottomSheetConfigByType(
|
||||
@@ -449,7 +452,12 @@ class PaymentLoaderFragment : PaymentScreenBaseFragment(), PaymentBackListener {
|
||||
override fun onClick(ctaData: CtaData) {
|
||||
onCtaClick(ctaData)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCancelDialog() {
|
||||
postResultAndFinish(transactionStatusResponseData, TRANSACTION_PENDING)
|
||||
}
|
||||
},
|
||||
true
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -494,7 +502,7 @@ class PaymentLoaderFragment : PaymentScreenBaseFragment(), PaymentBackListener {
|
||||
apiPollScheduler =
|
||||
ApiPollScheduler(
|
||||
doOnTimeout = {
|
||||
openPendingBottomSheet()
|
||||
openPendingBottomSheet(viewModel.transactionStatusResponse.value?.data)
|
||||
if (viewModel.signalStatusApiCallStatus.value == false) {
|
||||
postPaymentStatus(viewModel.getUpdatedSdkAction())
|
||||
}
|
||||
@@ -523,7 +531,7 @@ class PaymentLoaderFragment : PaymentScreenBaseFragment(), PaymentBackListener {
|
||||
apiPollScheduler =
|
||||
ApiPollScheduler(
|
||||
doOnTimeout = {
|
||||
openPendingBottomSheet()
|
||||
openPendingBottomSheet(viewModel.transactionStatusResponse.value?.data)
|
||||
postPaymentStatus(viewModel.getUpdatedSdkAction())
|
||||
},
|
||||
numberOfRetry = requestConfig?.numOfRetries
|
||||
|
||||
@@ -536,6 +536,8 @@ class PaymentMethodFragment : PaymentScreenBaseFragment(), PaymentBackListener,
|
||||
hideLoader()
|
||||
// TODO Handle error
|
||||
}
|
||||
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@ private val deserializer: Gson) :
|
||||
get() = _payAmountResponse
|
||||
|
||||
private val _paymentAmount =
|
||||
MutableStateFlow<PaymentButtonLoaderState>(PaymentButtonLoaderState.Loading)
|
||||
MutableStateFlow<PaymentButtonLoaderState>(PaymentButtonLoaderState.Nothing)
|
||||
val paymentAmount = _paymentAmount.asStateFlow()
|
||||
|
||||
private val _paymentApiConfig = MutableLiveData<PaymentMethodApiConfig?>()
|
||||
@@ -138,11 +138,11 @@ private val deserializer: Gson) :
|
||||
when {
|
||||
response.data != null -> {
|
||||
_payAmountResponse.value = response.data
|
||||
_paymentAmount.emit(PaymentButtonLoaderState.Success(response.data))
|
||||
val upiAction = initiatePayAmountAction.upiAction?.apply {
|
||||
payload = response.data.providerPayload
|
||||
}
|
||||
upiAction?.let { handleAction(it) }
|
||||
_paymentAmount.emit(PaymentButtonLoaderState.Success(response.data))
|
||||
}
|
||||
else -> {
|
||||
setErrorData(
|
||||
|
||||
@@ -29,6 +29,7 @@ import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
||||
import com.navi.base.deeplink.DeepLinkManager
|
||||
import com.navi.base.utils.isNotNull
|
||||
import com.navi.base.utils.orFalse
|
||||
import com.navi.base.utils.orTrue
|
||||
import com.navi.common.R
|
||||
import com.navi.common.firebasedb.FirebaseStatusType
|
||||
@@ -136,6 +137,7 @@ class TurboCheckoutFragment : BottomSheetDialogFragment() {
|
||||
}
|
||||
|
||||
is TurboCheckoutScreenState.Success -> {
|
||||
isCancelable = screenState.turboCheckoutScreenStructure.isCancelable.orFalse()
|
||||
ScaffoldRenderer(
|
||||
turboCheckoutScreenStructure = screenState.turboCheckoutScreenStructure,
|
||||
uiTronViewModel = turboCheckoutFragmentVM,
|
||||
@@ -584,6 +586,13 @@ class TurboCheckoutFragment : BottomSheetDialogFragment() {
|
||||
)
|
||||
)
|
||||
turboCheckoutFragmentVM.postSdkExitSignal(paymentSdkInitParams?.token, null)
|
||||
} else if (state is TurboCheckoutScreenState.Success && state.turboCheckoutScreenStructure.screenId == "TURBO_CHECKOUT_PAYMENT_PENDING_SCAFFOLD_SCREEN") {
|
||||
paymentManager.setPaymentResultSuccessData(
|
||||
type = PaymentSdkTypes.TRANSACTION_PENDING.name,
|
||||
tag = Constants.CLIENT_POLL_REQUIRED_TAG,
|
||||
data = (turboCheckoutFragmentVM.paymentTransactionStatusPolling.value as? TransactionPollingApiState.Success)?.data?.data?.transactionDetails
|
||||
)
|
||||
turboCheckoutFragmentVM.postSdkExitSignal(paymentSdkInitParams?.token, null)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -72,6 +72,7 @@ object Constants {
|
||||
const val CLIENT_POLL_REQUIRED_TAG = "CLIENT_POLL_REQUIRED"
|
||||
const val TRANSACTION_SUCCESS = "TRANSACTION_SUCCESS"
|
||||
const val TRANSACTION_FAILURE = "TRANSACTION_FAILURE"
|
||||
const val TRANSACTION_PENDING = "TRANSACTION_PENDING"
|
||||
const val OTHER_PAYMENT_METHODS = "OTHER_PAYMENT_METHODS"
|
||||
const val PAYMENT_SDK_INIT_DATA = "PAYMENT_SDK_INIT_DATA"
|
||||
const val PAYMENT_RESULT_PAYLOAD = "PAYMENT_RESULT_PAYLOAD"
|
||||
|
||||
Reference in New Issue
Block a user