TP-45172 | Re-init hyperverge for HL (#8240)
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user