TP-45172 | Re-init hyperverge for HL (#8240)

This commit is contained in:
nikhil kumar
2023-10-12 18:16:55 +05:30
committed by GitHub
parent 14f4ac8b8a
commit 52373e93b8
3 changed files with 62 additions and 3 deletions

View File

@@ -74,5 +74,6 @@
<string name="please_upload_document">Please upload document</string>
<string name="page_load_fail_title">Looks like something went wrong</string>
<string name="page_load_fail_message">Sorry we are failed to send your request. Please try again after some time.</string>
<string name="something_went_wrong_please_try_later">Something went wrong. Please try again after some time.</string>
<string name="page_load_try_again">Try again</string>
</resources>

View File

@@ -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)

View File

@@ -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
}