From 4fbf13dd862bd4bb621fa796172d57df8eb5308d Mon Sep 17 00:00:00 2001 From: Aditya Narayan Malik Date: Mon, 24 Feb 2025 20:29:44 +0530 Subject: [PATCH] NTP-39209 | Narayan | Qr code image generation failure logging (#15074) --- .../kotlin/com/navi/pay/analytics/NaviPayAnalytics.kt | 7 +++++++ .../com/navi/pay/common/utils/NaviPayCommonUtils.kt | 5 ++++- .../com/navi/pay/common/utils/VpaQRCodeManager.kt | 10 ++++++++-- 3 files changed, 19 insertions(+), 3 deletions(-) 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 7e2c9ce4ee..a01d952eb3 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 @@ -93,6 +93,13 @@ class NaviPayAnalytics private constructor() { mapOf("height" to height.toString(), "width" to width.toString()), ) } + + fun onQrCodeImageGenerationFailure(exception: Exception) { + NaviTrackEvent.trackEventOnClickStream( + "NaviPay_QrCode_Image_Generation_Failure", + mapOf("exception" to exception.toString()), + ) + } } inner class SetupUseCaseEvents { diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/common/utils/NaviPayCommonUtils.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/common/utils/NaviPayCommonUtils.kt index 1a9bfaff4e..5d03fbfb07 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/common/utils/NaviPayCommonUtils.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/common/utils/NaviPayCommonUtils.kt @@ -721,7 +721,10 @@ fun createQrCode(qrCodeData: String, context: Context): Bitmap? { qrCodeCanvas.drawBitmap(logoBitmap, xLogo, yLogo, null) return qrCodeDataBitmap - } catch (_: Exception) { + } catch (exception: Exception) { + val naviPayAnalytics: NaviPayAnalytics.UtilityEvents = + NaviPayAnalytics.INSTANCE.UtilityEvents() + naviPayAnalytics.onQrCodeImageGenerationFailure(exception = exception) return null } } diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/common/utils/VpaQRCodeManager.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/common/utils/VpaQRCodeManager.kt index 223aab7a62..5dab737290 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/common/utils/VpaQRCodeManager.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/common/utils/VpaQRCodeManager.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2024 by Navi Technologies Limited + * * Copyright © 2024-2025 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -11,6 +11,7 @@ import android.content.Context import android.graphics.Bitmap import android.net.Uri import androidx.core.content.FileProvider +import com.navi.pay.analytics.NaviPayAnalytics import com.navi.pay.utils.QR_CODE_IMAGE_EXTENSION import com.navi.pay.utils.VPA_QR_CODE_IMAGES import dagger.hilt.android.qualifiers.ApplicationContext @@ -26,6 +27,9 @@ interface VpaQRCodeManager { class VpaQRCodeManagerImpl @Inject constructor(@ApplicationContext private val context: Context) : VpaQRCodeManager { + private val naviPayAnalytics: NaviPayAnalytics.UtilityEvents = + NaviPayAnalytics.INSTANCE.UtilityEvents() + override fun getVpaUri(vpa: String, upiUri: String): Uri? { val imagesFolder = File(context.cacheDir, VPA_QR_CODE_IMAGES) var uri: Uri? = null @@ -44,7 +48,9 @@ class VpaQRCodeManagerImpl @Inject constructor(@ApplicationContext private val c uri = getUriOfFile(file) } } - } catch (_: IOException) {} + } catch (exception: IOException) { + naviPayAnalytics.onQrCodeImageGenerationFailure(exception = exception) + } return uri }