TP-59232 | KYC Bug Fix (#10023)
This commit is contained in:
committed by
GitHub
parent
d3ac8108e9
commit
30a544f795
@@ -18,6 +18,7 @@ import androidx.databinding.DataBindingUtil
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.google.gson.reflect.TypeToken
|
||||
import com.moengage.core.internal.REQUEST_ATTR_QUERY_PARAMS
|
||||
import com.navi.base.model.CtaData
|
||||
import com.navi.base.model.CtaType
|
||||
import com.navi.base.utils.orFalse
|
||||
@@ -37,9 +38,11 @@ import com.navi.insurance.common.viewmodel.PolicyStatusViewModel
|
||||
import com.navi.insurance.databinding.LayoutPolicyStatusBinding
|
||||
import com.navi.insurance.health.activity.InsuranceContainerActivity
|
||||
import com.navi.insurance.health.viewmodel.InsuranceContainerActivityVM
|
||||
import com.navi.insurance.models.request.AadhaarVerificationData
|
||||
import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator
|
||||
import com.navi.insurance.util.APPLICATION_TYPE_EXTRA
|
||||
import com.navi.insurance.util.INITIAL_PAGE_UI
|
||||
import com.navi.insurance.util.PAGE_TYPE
|
||||
import com.navi.insurance.util.QUOTE_ID_EXTRA
|
||||
import com.navi.insurance.util.SOURCE_TYPE
|
||||
import com.navi.naviwidgets.extensions.getJsonObject
|
||||
@@ -88,6 +91,12 @@ class PolicyStatusFragment : GiBaseFragment() {
|
||||
quoteId = arguments?.getString(QUOTE_ID_EXTRA)
|
||||
?: run { activity?.intent?.getStringExtra(QUOTE_ID_EXTRA) }
|
||||
viewModel.sourceType = arguments?.getString(SOURCE_TYPE).orEmpty()
|
||||
val type = object: TypeToken<AadhaarVerificationData>(){}.type
|
||||
viewModel.requestBody = getJsonObject<AadhaarVerificationData>(
|
||||
type,
|
||||
arguments?.getString(REQUEST_ATTR_QUERY_PARAMS)
|
||||
) ?: AadhaarVerificationData()
|
||||
viewModel.pageType = arguments?.getString(PAGE_TYPE).orEmpty()
|
||||
applicationType = arguments?.getString(APPLICATION_TYPE_EXTRA)
|
||||
initialPageUI = arguments?.getString(INITIAL_PAGE_UI)
|
||||
parentActivity = activity as? InsuranceContainerActivity
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
package com.navi.insurance.common.repository
|
||||
|
||||
import com.navi.base.utils.isNotNull
|
||||
import com.navi.common.network.models.RepoResult
|
||||
import com.navi.common.network.retrofit.ResponseCallback
|
||||
import com.navi.common.uitron.model.action.SourceType
|
||||
@@ -28,11 +29,11 @@ class PolicyStatusRepository @Inject constructor(private val retrofitService: Re
|
||||
retrofitService.generateQuoteID(quoteId)
|
||||
)
|
||||
|
||||
suspend fun fetchPostPurchaseStatus(sourceType: String): RepoResult<PolicyStatusResponse> =
|
||||
suspend fun fetchPostPurchaseStatus(sourceType: String, formNextPageRequest: FormNextPageRequest? = null): RepoResult<PolicyStatusResponse> =
|
||||
apiResponseCallback(
|
||||
retrofitService.postNaviOneProfileData(
|
||||
sourceType = sourceType,
|
||||
formNextPageRequest = FormNextPageRequest(),
|
||||
formNextPageRequest = if(formNextPageRequest.isNotNull()) FormNextPageRequest() else FormNextPageRequest()
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -17,6 +17,9 @@ import com.navi.insurance.common.models.GiErrorMetaData
|
||||
import com.navi.insurance.common.models.PolicyStatusResponse
|
||||
import com.navi.insurance.common.repository.PolicyStatusRepository
|
||||
import com.navi.insurance.common.util.ActionHandler
|
||||
import com.navi.insurance.models.request.AadhaarVerificationData
|
||||
import com.navi.insurance.models.request.FormNextPageRequest
|
||||
import com.navi.insurance.models.request.FormTypedKeyData
|
||||
import com.navi.insurance.network.ApiErrorTagType
|
||||
import com.navi.insurance.util.POST_PURCHASE_JOURNEY
|
||||
import com.navi.insurance.util.TRIAL_POLICY
|
||||
@@ -38,6 +41,8 @@ class PolicyStatusViewModel @Inject constructor(
|
||||
MutableStateFlow<ResponseState<PolicyStatusResponse>>(ResponseState.Idle)
|
||||
val policyStatusFlow: StateFlow<ResponseState<PolicyStatusResponse>> get() = _policyStatusFlow.asStateFlow()
|
||||
var sourceType: String = ""
|
||||
var requestBody: AadhaarVerificationData = AadhaarVerificationData()
|
||||
var pageType: String = ""
|
||||
|
||||
private fun exceptionHandler(errorTag: String) = CoroutineExceptionHandler { _, exception ->
|
||||
viewModelScope.launch {
|
||||
@@ -58,6 +63,20 @@ class PolicyStatusViewModel @Inject constructor(
|
||||
}
|
||||
}
|
||||
|
||||
private fun getFormRequestData(
|
||||
aadhaarVerificationData: AadhaarVerificationData,
|
||||
pageType: String?
|
||||
): FormNextPageRequest {
|
||||
return FormNextPageRequest(
|
||||
pageType = pageType.orEmpty(),
|
||||
data = listOf(
|
||||
FormTypedKeyData(
|
||||
attributes = aadhaarVerificationData
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
fun fetchPolicyCurrentStatus(quoteId: String?, isPolling: Boolean, applicationType: String? = null) {
|
||||
viewModelScope.launch(dispatcher.io + exceptionHandler(ApiErrorTagType.POLICY_STATUS_RESPONSE_ERROR.value)) {
|
||||
if (!isPolling) {
|
||||
@@ -67,7 +86,12 @@ class PolicyStatusViewModel @Inject constructor(
|
||||
}
|
||||
val response =
|
||||
if (applicationType == POST_PURCHASE_JOURNEY) {
|
||||
repository.fetchPostPurchaseStatus(sourceType)
|
||||
repository.fetchPostPurchaseStatus(
|
||||
sourceType, formNextPageRequest = getFormRequestData(
|
||||
requestBody,
|
||||
pageType
|
||||
)
|
||||
)
|
||||
} else if (applicationType == TRIAL_POLICY) {
|
||||
repository.generateQuoteID(quoteId)
|
||||
} else repository.fetchCurrentPolicyStatus(quoteId, applicationType)
|
||||
|
||||
@@ -17,7 +17,10 @@ import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.digitap.dtokyc.exception.DTException
|
||||
import com.digitap.dtokyc.handler.OKYCListener
|
||||
import com.google.gson.reflect.TypeToken
|
||||
import com.moengage.core.internal.REQUEST_ATTR_QUERY_PARAMS
|
||||
import com.navi.base.model.CtaData
|
||||
import com.navi.base.model.LineItem
|
||||
import com.navi.base.utils.isNotNull
|
||||
import com.navi.common.ResponseState
|
||||
import com.navi.common.constants.GI
|
||||
@@ -44,11 +47,14 @@ import com.navi.insurance.models.response.AadhaarVerifyInitDetails
|
||||
import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator
|
||||
import com.navi.insurance.network.ApiConstants
|
||||
import com.navi.insurance.network.ApiErrorTagType
|
||||
import com.navi.insurance.util.Constants
|
||||
import com.navi.insurance.util.JOURNEY_KEY_EXTRA
|
||||
import com.navi.insurance.util.TRUE
|
||||
import com.navi.naviwidgets.extensions.addOnMultipleClicksHandler
|
||||
import com.navi.naviwidgets.extensions.getJsonObject
|
||||
import com.navi.naviwidgets.extensions.setTextFieldData
|
||||
import com.navi.naviwidgets.utils.NaviWidgetIconUtils
|
||||
import com.navi.naviwidgets.utils.convertObjectToJsonString
|
||||
import com.navi.naviwidgets.utils.loadUrlIntoImageView
|
||||
import com.navi.naviwidgets.views.NaviErrorPageView
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
@@ -77,8 +83,11 @@ class GiAadhaarVerificationFragment : GiBaseFragment(), OKYCListener {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
initObservers()
|
||||
viewModel.setNaviOneProfileStatus(
|
||||
arguments?.getBoolean(IS_NAVI_ONE_PROFILE_ENABLED) ?: false
|
||||
arguments?.getString(IS_NAVI_ONE_PROFILE_ENABLED).toBoolean()
|
||||
)
|
||||
val type = object : TypeToken<CtaData?>() {}.type
|
||||
val ctaData = getJsonObject<CtaData>(type, arguments?.getString(Constants.KEY_CTA_DATA))
|
||||
viewModel.setNavigationCta(ctaData)
|
||||
if (arguments?.getString(OKYC_FORM_ENABLED_KEY) == TRUE) {
|
||||
viewModel.okycFormEnabled = true
|
||||
viewModel.setAadhaarInitData(
|
||||
@@ -392,7 +401,15 @@ class GiAadhaarVerificationFragment : GiBaseFragment(), OKYCListener {
|
||||
}
|
||||
if (error?.errorCode != ApiConstants.AADHAAR_USER_CANCELLED) {
|
||||
viewModel.saveAadhaarVerificationData(aadhaarVerificationData)
|
||||
viewModel.postAadhaarVerificationData(aadhaarVerificationData)
|
||||
if(viewModel.isNaviOnePRofileEnabled) {
|
||||
val params = viewModel.ctaData?.parameters?.toMutableList()
|
||||
params?.add(LineItem(REQUEST_ATTR_QUERY_PARAMS, convertObjectToJsonString(aadhaarVerificationData)))
|
||||
params?.add(LineItem(PAGE_TYPE, arguments?.getString(PAGE_TYPE)))
|
||||
var redirectionCta = viewModel.ctaData?.copy(
|
||||
parameters = params
|
||||
)
|
||||
handleCta(viewModel.ctaData)
|
||||
} else {viewModel.postAadhaarVerificationData(aadhaarVerificationData)}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.navi.insurance.kyc.viewModel
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import com.navi.base.model.CtaData
|
||||
import com.navi.common.ResponseState
|
||||
import com.navi.common.constants.VENDOR_NAVI_API
|
||||
import com.navi.common.di.CoroutineDispatcherProvider
|
||||
@@ -70,6 +71,7 @@ class AadhaarVerificationVM @Inject constructor(
|
||||
var okycFormEnabled = false
|
||||
|
||||
var isNaviOnePRofileEnabled = false
|
||||
var ctaData: CtaData? = null
|
||||
|
||||
var screenName: String? = null
|
||||
|
||||
@@ -112,6 +114,10 @@ class AadhaarVerificationVM @Inject constructor(
|
||||
isNaviOnePRofileEnabled = enabled
|
||||
}
|
||||
|
||||
fun setNavigationCta(cta: CtaData?) {
|
||||
ctaData = cta
|
||||
}
|
||||
|
||||
fun fetchAadhaarInitResponse() {
|
||||
viewModelScope.launch(coroutineExceptionHandler(ApiErrorTagType.AADHAAR_INIT_RESPONSE_ERROR.value)) {
|
||||
_aadhaarVerificationInitResponseStateFlow.value = AadhaarInitResponseState.Loading
|
||||
@@ -136,24 +142,15 @@ class AadhaarVerificationVM @Inject constructor(
|
||||
if(okycFormEnabled) {
|
||||
_formNextPageCtaResponseFlow.emit(ResponseState.Loading)
|
||||
(_aadhaarVerificationInitResponseStateFlow.value as? AadhaarInitResponseState.Success)?.data?.let { aadhaarVerifyInitDetails ->
|
||||
val response = if (isNaviOnePRofileEnabled) {
|
||||
aadhaarVerificationRepository.postNaviOneProfileData(
|
||||
getFormRequestData(
|
||||
aadhaarVerificationData,
|
||||
aadhaarVerifyInitDetails.pageType
|
||||
)
|
||||
)
|
||||
} else {
|
||||
aadhaarVerificationRepository.doNextPageFormRequest(
|
||||
getFormRequestData(
|
||||
aadhaarVerificationData,
|
||||
aadhaarVerifyInitDetails.pageType
|
||||
),
|
||||
aadhaarVerifyInitDetails.applicationId.orEmpty(),
|
||||
aadhaarVerifyInitDetails.transitionKey.orEmpty(),
|
||||
aadhaarVerifyInitDetails.journeyKey.orEmpty()
|
||||
)
|
||||
}
|
||||
val response = aadhaarVerificationRepository.doNextPageFormRequest(
|
||||
getFormRequestData(
|
||||
aadhaarVerificationData,
|
||||
aadhaarVerifyInitDetails.pageType
|
||||
),
|
||||
aadhaarVerifyInitDetails.applicationId.orEmpty(),
|
||||
aadhaarVerifyInitDetails.transitionKey.orEmpty(),
|
||||
aadhaarVerifyInitDetails.journeyKey.orEmpty()
|
||||
)
|
||||
if (response.error == null && response.errors.isNullOrEmpty() && response.data != null) {
|
||||
_formNextPageCtaResponseFlow.emit(ResponseState.Success(response.data!!))
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user