From 88e8e486e1b40eda8f82503e30e1ad80d16b5af2 Mon Sep 17 00:00:00 2001 From: Mohit Rajput Date: Wed, 6 Sep 2023 12:41:16 +0530 Subject: [PATCH] TP-000000 | onboarding flow fetching loader issue (#7754) --- .../com/navi/pay/analytics/NaviPayAnalytics.kt | 16 ++++++++++++++++ .../binding/NaviPayOnboardingViewModel.kt | 14 +++++++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/navi-pay/src/main/kotlin/com/navi/pay/analytics/NaviPayAnalytics.kt b/navi-pay/src/main/kotlin/com/navi/pay/analytics/NaviPayAnalytics.kt index 8d83dfc301..ff39692ac2 100644 --- a/navi-pay/src/main/kotlin/com/navi/pay/analytics/NaviPayAnalytics.kt +++ b/navi-pay/src/main/kotlin/com/navi/pay/analytics/NaviPayAnalytics.kt @@ -225,6 +225,22 @@ class NaviPayAnalytics private constructor() { } } + fun onGetCustomerCallAfterBindingEnd( + deviceData: DeviceData?, + errors: List?, + customerStatus: String + ) { + deviceData?.let { + NaviTrackEvent.trackEventOnClickStream( + "Dev_NaviPay_OnGetCustomerCallAfterBindingEnds", mapOf( + Pair("deviceData", it.toString()), + Pair("error", errors?.firstOrNull().toString()), + Pair("customerStatus", customerStatus), + ) + ) + } + } + fun onBindDeviceCallForBinding(deviceDetails: DeviceDetails) { NaviTrackEvent.trackEventOnClickStream( "Dev_NaviPay_OnBindDeviceCallForBinding", mapOf( diff --git a/navi-pay/src/main/kotlin/com/navi/pay/onboarding/binding/NaviPayOnboardingViewModel.kt b/navi-pay/src/main/kotlin/com/navi/pay/onboarding/binding/NaviPayOnboardingViewModel.kt index 888621fe45..c7436853e9 100644 --- a/navi-pay/src/main/kotlin/com/navi/pay/onboarding/binding/NaviPayOnboardingViewModel.kt +++ b/navi-pay/src/main/kotlin/com/navi/pay/onboarding/binding/NaviPayOnboardingViewModel.kt @@ -500,6 +500,12 @@ class NaviPayOnboardingViewModel @Inject constructor( val customerAPIResponse = commonRepository.getCustomer(customerRequest = CustomerRequest(deviceData = deviceInfoProvider.getDeviceData())) + naviPayAnalytics.onGetCustomerCallAfterBindingEnd( + deviceData = deviceInfoProvider.getDeviceData(), + errors = customerAPIResponse.errors, + customerStatus = customerAPIResponse.data?.customerStatus ?: "" + ) + if (customerAPIResponse.isError()) { onBindingError(customerAPIResponse) return@launch @@ -653,15 +659,17 @@ class NaviPayOnboardingViewModel @Inject constructor( // Grant phone state permission before calling this method viewModelScope.launch(Dispatchers.IO) { val customerStatus = naviPayCustomerStatusHandler.getCustomerStatusOnMainThread() - val isCustomerStatusOnboarded = - customerStatus == NaviPayCustomerStatus.LINKED_VPA || customerStatus == NaviPayCustomerStatus.DEVICE_BOUNDED + val isCustomerStatusSet = customerStatus != NaviPayCustomerStatus.NOT_SET val isLocalDeviceDataNotAvailable = !isLocalDeviceDataAvailable() naviPayAnalytics.verifySetupCalled( customerStatus = customerStatus.name, isLocalDeviceDataNotAvailable = isLocalDeviceDataNotAvailable ) Timber.d("verifyNaviPaySetup(): initial customerStatus: $customerStatus, isLocalDeviceDataNotAvailable: $isLocalDeviceDataNotAvailable") - if (isCustomerStatusOnboarded || isLocalDeviceDataNotAvailable) { + + // isCustomerStatusSet - If customer status is set, then no need to call customer status api here. Next action will happen based on onSetupSuccess() + // base on available customer status + if (isCustomerStatusSet || isLocalDeviceDataNotAvailable) { // Setup is done at app launch. App can proceed with the normal flow onSetupSuccess(customerStatus = customerStatus.name) return@launch