From 52373e93b832f8e19253c8f2c2290896b135459c Mon Sep 17 00:00:00 2001 From: nikhil kumar Date: Thu, 12 Oct 2023 18:16:55 +0530 Subject: [PATCH] TP-45172 | Re-init hyperverge for HL (#8240) --- navi-hl/src/main/res/values/strings.xml | 1 + .../HomeLoanSelfieVerificationFragment.kt | 61 ++++++++++++++++++- .../main/java/com/navi/hl/utils/Constants.kt | 3 + 3 files changed, 62 insertions(+), 3 deletions(-) diff --git a/navi-hl/src/main/res/values/strings.xml b/navi-hl/src/main/res/values/strings.xml index f20e96ed8b..18e2d17a45 100644 --- a/navi-hl/src/main/res/values/strings.xml +++ b/navi-hl/src/main/res/values/strings.xml @@ -74,5 +74,6 @@ Please upload document Looks like something went wrong Sorry we are failed to send your request. Please try again after some time. + Something went wrong. Please try again after some time. Try again diff --git a/navi_hl_dynamic/src/main/java/com/navi/hl/steps/fragment/HomeLoanSelfieVerificationFragment.kt b/navi_hl_dynamic/src/main/java/com/navi/hl/steps/fragment/HomeLoanSelfieVerificationFragment.kt index eeacd30da2..a9d411362f 100644 --- a/navi_hl_dynamic/src/main/java/com/navi/hl/steps/fragment/HomeLoanSelfieVerificationFragment.kt +++ b/navi_hl_dynamic/src/main/java/com/navi/hl/steps/fragment/HomeLoanSelfieVerificationFragment.kt @@ -26,6 +26,8 @@ import androidx.core.view.isVisible import androidx.fragment.app.viewModels import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope +import co.hyperverge.hypersnapsdk.HyperSnapSDK +import co.hyperverge.hypersnapsdk.objects.HyperSnapParams import com.bumptech.glide.Glide import com.navi.analytics.utils.NaviTrackEvent import com.navi.base.model.CtaData @@ -54,6 +56,9 @@ import com.navi.hl.steps.viewmodel.HomeLoanSelfieVerificationSharedVM import com.navi.hl.steps.viewmodel.PermissionVM import com.navi.hl.utils.Constants import com.navi.hl.utils.Constants.ACTION +import com.navi.hl.utils.Constants.HYPERVERGE_INIT_DELAY_TIME +import com.navi.hl.utils.Constants.HYPERVERGE_INIT_FAILED +import com.navi.hl.utils.Constants.HYPERVERGE_INIT_MAX_RETRY_LIMIT import com.navi.hl.utils.Constants.KYC_VERIFICATION import com.navi.hl.utils.Constants.LOAN_ACTION_TYPE import com.navi.hl.utils.Constants.POLLING_TIMEOUT @@ -75,6 +80,8 @@ import com.navi.homeloan.common.models.HomeLoanSelfieVerificationContent import com.navi.homeloan.common.models.SelfieErrorData import com.navi.homeloan.common.models.SelfieSetting import com.navi.homeloan.databinding.FragmentHomeLoanSelfieVerificationBinding +import com.naviapp.BuildConfig +import com.naviapp.app.NaviApplication import java.io.ByteArrayOutputStream import java.io.File import java.io.FileInputStream @@ -99,6 +106,7 @@ class HomeLoanSelfieVerificationFragment : HomeLoanBaseFragment(), HLFooterListe registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {} private var savedToByteArray: ByteArray? = null private var savedRequestData: HomeLoanSelfieUploadRequestData? = null + private var hyperVergeInitMaxRetry = 0 override fun onCreateView( inflater: LayoutInflater, @@ -266,7 +274,7 @@ class HomeLoanSelfieVerificationFragment : HomeLoanBaseFragment(), HLFooterListe private fun handleFirebaseResult(status: String, isPolling: Boolean = true) { if ( TextUtils.equals(status, FirebaseStatusType.SUCCESS) || - TextUtils.equals(status, FirebaseStatusType.FAILURE) + TextUtils.equals(status, FirebaseStatusType.FAILURE) ) { deInitializeFirebaseListener() apiPollScheduler?.stopApiPoll() @@ -360,7 +368,7 @@ class HomeLoanSelfieVerificationFragment : HomeLoanBaseFragment(), HLFooterListe private val onPollingEnd = { hideLoader() - handleTimeOutError(ApiErrorTagType.SELFIE_UPLOAD) + handleTimeOutError(SELFIE_UPLOAD) logDownTimeEvent() } @@ -440,8 +448,16 @@ class HomeLoanSelfieVerificationFragment : HomeLoanBaseFragment(), HLFooterListe private fun handleSelectSelfie(selfieSetting: SelfieSetting?) { when (selfieSetting?.provider?.uppercase(Locale.ENGLISH)) { HYPERVERGE -> { - selfieCaptureListener?.onSelfieCaptureClick(selfieSetting) + if (HyperSnapSDK.isInitialised()) { + selfieCaptureListener?.onSelfieCaptureClick(selfieSetting) + } else { + showLoader() + initHyperVergeSDK() + hyperVergeInitMaxRetry = 0 + checkHypervergeInitStatus(selfieSetting) + } } + PROVIDER_MOCK -> { if (buildConfigDetails.flavor == PROD) return val dummyData = @@ -456,6 +472,44 @@ class HomeLoanSelfieVerificationFragment : HomeLoanBaseFragment(), HLFooterListe } } + private fun checkHypervergeInitStatus(selfieSetting: SelfieSetting?) { + hyperVergeInitMaxRetry++ + lifecycleScope.launch { + delay(HYPERVERGE_INIT_DELAY_TIME) + if (HyperSnapSDK.isInitialised()) { + hideLoader() + selfieCaptureListener?.onSelfieCaptureClick(selfieSetting) + } else { + if (hyperVergeInitMaxRetry > HYPERVERGE_INIT_MAX_RETRY_LIMIT) { + hideLoader() + context?.toast( + getString(homeLoanR.string.something_went_wrong_please_try_later), + Toast.LENGTH_LONG + ) + analyticsEventTracker.onHLThirdPartyErrors( + homeLoanType = queryMap[LOAN_ACTION_TYPE], + screenName = screenName, + flowName = KYC_VERIFICATION, + methodName = SELFIE_UPLOAD, + vendorName = HYPERVERGE, + errorCode = HYPERVERGE_INIT_FAILED + ) + } else { + checkHypervergeInitStatus(selfieSetting) + } + } + } + } + + private fun initHyperVergeSDK() { + HyperSnapSDK.init( + NaviApplication.instance, + BuildConfig.HYPERVERGE_APP_ID, + BuildConfig.HYPERVERGE_APP_KEY, + HyperSnapParams.Region.India + ) + } + private fun postHomeLoanSelfieRequest(request: HomeLoanSelfieUploadRequestData?) { request?.let { showLoader() @@ -480,6 +534,7 @@ class HomeLoanSelfieVerificationFragment : HomeLoanBaseFragment(), HLFooterListe bitmapImage = BitmapFactory.decodeFile(imgFile.absolutePath, bmOptions) } } + else -> { val inputStream: FileInputStream? = activity?.openFileInput(url) bitmapImage = BitmapFactory.decodeStream(inputStream) diff --git a/navi_hl_dynamic/src/main/java/com/navi/hl/utils/Constants.kt b/navi_hl_dynamic/src/main/java/com/navi/hl/utils/Constants.kt index 61ef741e76..e1b8d2409e 100644 --- a/navi_hl_dynamic/src/main/java/com/navi/hl/utils/Constants.kt +++ b/navi_hl_dynamic/src/main/java/com/navi/hl/utils/Constants.kt @@ -55,6 +55,7 @@ object Constants { const val KYC_VERIFICATION = "KYC_VERIFICATION" const val AADHAAR_OTP = "AADHAAR_OTP" const val AADHAAR_OTP_VERIFICATION_UNSUCCESSFUL = "AADHAAR_OTP_VERIFICATION_UNSUCCESSFUL" + const val HYPERVERGE_INIT_FAILED = "HYPERVERGE_INIT_FAILED" const val SELFIE_URI_NULL = "SELFIE_URI_NULL" const val SELFIE_BITMAP_NULL = "SELFIE_BITMAP_NULL" const val SELFIE_BITMAP_ISSUE = "SELFIE_BITMAP_ISSUE" @@ -114,4 +115,6 @@ object Constants { const val HL_PERMISSION_REQUEST_CODE = 301 const val KEY_API_VERSION = "version" const val KEY_HL_INTRO_API_VERSION = "hl_intro_api_version" + const val HYPERVERGE_INIT_DELAY_TIME = 1000L + const val HYPERVERGE_INIT_MAX_RETRY_LIMIT = 10 }