TP-34890: Fix DG KYC page navigation issue if verification fails internally (#7142)

This commit is contained in:
Siddiboina Susai
2023-07-06 15:40:39 +05:30
committed by GitHub Enterprise
parent 76350b80b5
commit 2888afefb3
2 changed files with 26 additions and 14 deletions

View File

@@ -12,6 +12,7 @@ import com.navi.base.model.ActionData
import com.navi.base.model.BottomSheetData
import com.navi.common.model.ActionCheckResponse
import com.navi.naviwidgets.models.NaviWidget
import com.naviapp.home.model.WidgetBottomSheetWithParams
import com.naviapp.models.response.AppActionObjective
data class GoldKycCheckResponse(
@@ -21,6 +22,8 @@ data class GoldKycCheckResponse(
val bottomSheetData: BottomSheetData? = null,
@SerializedName("widgetisedBottomSheetData")
val widgetisedBottomSheetData: List<NaviWidget>? = null,
@SerializedName("successBottomSheetWithParams")
val successBottomSheet: WidgetBottomSheetWithParams? = null,
@SerializedName("actionData")
val actionData: ActionData? = null,
)

View File

@@ -226,7 +226,7 @@ class DigitalGoldKycFragment : BaseFragment(), WidgetCallback, NewBottomSheetLis
naviWidget.widgetData?.inputTextData?.savedText = viewModel.getPanNumber()
}
}
if(naviWidget is LabeledDateInputWidgetModel) {
if (naviWidget is LabeledDateInputWidgetModel) {
if (viewModel.getDob()
.isNotNullAndNotEmpty() && naviWidget?.widgetData?.fieldName == DOB
) {
@@ -237,12 +237,16 @@ class DigitalGoldKycFragment : BaseFragment(), WidgetCallback, NewBottomSheetLis
naviAdapter.setData(listOfNaviWidget)
}
private fun handlePanVerifyResponse(goldKycResponse: GoldKycCheckResponse) {
goldKycResponse.bottomSheetData?.let { showCommonBottomSheet(it) } ?: kotlin.run {
goldKycResponse.paymentCheckResponse?.let {
private fun handlePanVerifyResponse(kycVerifyResponse: GoldKycCheckResponse) {
kycVerifyResponse.bottomSheetData?.let { showCommonBottomSheet(it) } ?: run {
kycVerifyResponse.paymentCheckResponse?.let {
navigateToNextScreen(it)
} ?: kotlin.run {
viewModel.digitalGoldKycWidgets.value?.extraData?.successBottomSheet?.let { successBottomSheet ->
} ?: run {
kycVerifyResponse.successBottomSheet?.let { successBottomSheet ->
val displayTime = successBottomSheet.displayTime ?: 1000L
successBottomSheet.bottomSheetData?.data?.let { widgetList ->
val bottomSheet = showWidgetBottomSheet(
@@ -252,14 +256,14 @@ class DigitalGoldKycFragment : BaseFragment(), WidgetCallback, NewBottomSheetLis
lifecycleScope.launchWhenResumed {
delay(displayTime)
bottomSheet.safelyDismissDialog()
navigateWith(goldKycResponse)
navigateWith(kycVerifyResponse)
}
} ?: kotlin.run {
navigateWith(goldKycResponse)
} ?: run {
navigateWith(kycVerifyResponse)
}
} ?: kotlin.run {
navigateWith(goldKycResponse)
} ?: run {
navigateWith(kycVerifyResponse)
}
}
}
@@ -385,7 +389,7 @@ class DigitalGoldKycFragment : BaseFragment(), WidgetCallback, NewBottomSheetLis
}
private fun fetchPanVerifyResponse(actionData: ActionData?) {
if(!isInputValid()) {
if (!isInputValid()) {
updateNextButton()
return
}
@@ -407,12 +411,16 @@ class DigitalGoldKycFragment : BaseFragment(), WidgetCallback, NewBottomSheetLis
val itemView = binding.rvGoldItems.findViewHolderForAdapterPosition(index)?.itemView
val input = (itemView as? BaseInputWidget)?.getUserInputPostValidation()
if (itemView is BaseInputWidget && input.isNullOrEmpty()) {
widgetUserData((naviBaseAdapterModel as? InputWidgetModel)?.widgetData?.fieldName.orEmpty(), input.orEmpty())
widgetUserData(
(naviBaseAdapterModel as? InputWidgetModel)?.widgetData?.fieldName.orEmpty(),
input.orEmpty()
)
allValidationsPassed = false
}
}
return allValidationsPassed
}
private fun showShimmer() {
binding.shimmerLayout.startShimmer()
binding.shimmerLayout.isVisible = true
@@ -479,6 +487,7 @@ class DigitalGoldKycFragment : BaseFragment(), WidgetCallback, NewBottomSheetLis
viewModel.setPinCode(value as String)
updateNextButton()
}
DOB -> {
viewModel.setDob(value as String)
updateNextButton()
@@ -530,7 +539,7 @@ class DigitalGoldKycFragment : BaseFragment(), WidgetCallback, NewBottomSheetLis
naviAdapterModel.widgetData?.inputTextData?.savedText = viewModel.getPanNumber()
}
}
if(naviAdapterModel is LabeledDateInputWidgetModel) {
if (naviAdapterModel is LabeledDateInputWidgetModel) {
if (viewModel.getDob()
.isNotNullAndNotEmpty() && naviAdapterModel.widgetData?.fieldName == DOB
&& !(viewModel.getDob()