diff --git a/android/app/src/main/java/com/naviapp/home/viewmodel/HomeViewModel.kt b/android/app/src/main/java/com/naviapp/home/viewmodel/HomeViewModel.kt index 89369e169d..89c69868da 100644 --- a/android/app/src/main/java/com/naviapp/home/viewmodel/HomeViewModel.kt +++ b/android/app/src/main/java/com/naviapp/home/viewmodel/HomeViewModel.kt @@ -239,6 +239,9 @@ constructor( activity: HomePageActivity, callBackToActivityScreen: (callback: HomeScreenCallbackListener) -> Unit, ) { + if (naviClickAction.url == "naviPay/NAVI_PAY_QR_SCANNER_SCREEN") { + TemporaryStorageHelper.scanAndPayClickTime = System.currentTimeMillis() + } ctaHandler.handleCtaData(naviClickAction, activity, callBackToActivityScreen) { sendEvent(HpEvents.ShowProfile) } diff --git a/android/navi-common/src/main/java/com/navi/common/utils/TemporaryStorageHelper.kt b/android/navi-common/src/main/java/com/navi/common/utils/TemporaryStorageHelper.kt index 4d61b48a56..45a8580153 100644 --- a/android/navi-common/src/main/java/com/navi/common/utils/TemporaryStorageHelper.kt +++ b/android/navi-common/src/main/java/com/navi/common/utils/TemporaryStorageHelper.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2023-2024 by Navi Technologies Limited + * * Copyright © 2023-2025 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -36,6 +36,9 @@ object TemporaryStorageHelper { var isOkHttpRetryEnabled: Boolean = false var customDnsValue: String = "8.8.8.8" + // temporary changes, will be removed in the next release + var scanAndPayClickTime = 0L + /** * Used to store custom key-value pairs with a scope limited to the session. For example, in * React Native, it can track if a bottom sheet has been viewed during a session and disable it diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/analytics/NaviPayAnalytics.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/analytics/NaviPayAnalytics.kt index d0afad0e16..366107d3da 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/analytics/NaviPayAnalytics.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/analytics/NaviPayAnalytics.kt @@ -1772,6 +1772,7 @@ class NaviPayAnalytics private constructor() { fun onQrCameraStateChange( streamState: PreviewView.StreamState, naviPaySessionAttributes: Map, + qrScreenStateLoadTime: Long, ) { NaviTrackEvent.trackEventOnClickStream( eventName = "NaviPay_QrScanner_CameraStateChange", @@ -1782,6 +1783,7 @@ class NaviPayAnalytics private constructor() { naviPaySessionAttributes["naviPaySessionId"].orEmpty(), "naviPayCustomerStatusMap" to naviPaySessionAttributes["naviPayCustomerStatusMap"].orEmpty(), + "qrScreenStateLoadTime" to qrScreenStateLoadTime.toString(), ), ) } diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/scanpay/ui/QrScannerScreen.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/scanpay/ui/QrScannerScreen.kt index b6e4fac498..10ca70f74d 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/scanpay/ui/QrScannerScreen.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/management/moneytransfer/scanpay/ui/QrScannerScreen.kt @@ -83,6 +83,7 @@ import com.google.mlkit.vision.barcode.common.Barcode import com.google.mlkit.vision.common.InputImage import com.navi.alfred.AlfredManager import com.navi.common.R as CommonR +import com.navi.common.utils.TemporaryStorageHelper import com.navi.common.utils.log import com.navi.common.utils.navigateUp import com.navi.design.font.FontWeightEnum @@ -664,10 +665,19 @@ private fun QrCamera( this.implementationMode = PreviewView.ImplementationMode.COMPATIBLE } previewView.previewStreamState.observe(lifecycleOwner) { + var qrScreenStateLoadTime = -1L + if (TemporaryStorageHelper.scanAndPayClickTime != 0L) { + qrScreenStateLoadTime = + System.currentTimeMillis() - TemporaryStorageHelper.scanAndPayClickTime + } naviPayAnalytics.onQrCameraStateChange( streamState = it, naviPaySessionAttributes = naviPaySessionAttributes, + qrScreenStateLoadTime = qrScreenStateLoadTime, ) + if (it.name == "STREAMING") { + TemporaryStorageHelper.scanAndPayClickTime = 0L + } } previewView }