From 6adbc8866902d5cc90b21af28e59bdae06bce812 Mon Sep 17 00:00:00 2001 From: Hitesh Kumar Date: Fri, 23 May 2025 17:03:12 +0530 Subject: [PATCH] NTP-67328 add widget cleanup event in navi widgets module (#16289) --- .../navi/naviwidgets/RadioButtonItemDeserializer.kt | 11 +++++++++++ .../com/navi/naviwidgets/WidgetDataDeserializer.kt | 11 +++++++++++ .../validations/ValidationJsonDeserializer.kt | 8 ++++++++ .../viewholder/DashboardHolderFactoryImpl.kt | 12 ++---------- .../viewholder/NaviChatViewHolderFactoryImpl.kt | 12 ++---------- .../naviwidgets/viewholder/ViewHolderFactoryImpl.kt | 12 ++---------- .../widgets/NaviWidgetJsonDeserializer.kt | 11 +++++++++++ .../widgets/ParameterValueJsonDeserializer.kt | 9 +++++++++ 8 files changed, 56 insertions(+), 30 deletions(-) diff --git a/android/navi-widgets/src/main/java/com/navi/naviwidgets/RadioButtonItemDeserializer.kt b/android/navi-widgets/src/main/java/com/navi/naviwidgets/RadioButtonItemDeserializer.kt index dbd1c828e7..9d9155bc59 100644 --- a/android/navi-widgets/src/main/java/com/navi/naviwidgets/RadioButtonItemDeserializer.kt +++ b/android/navi-widgets/src/main/java/com/navi/naviwidgets/RadioButtonItemDeserializer.kt @@ -11,6 +11,7 @@ import com.google.gson.Gson import com.google.gson.JsonDeserializationContext import com.google.gson.JsonDeserializer import com.google.gson.JsonElement +import com.navi.analytics.utils.NaviTrackEvent import com.navi.naviwidgets.models.response.CTATextItem import com.navi.naviwidgets.models.response.CustomRadioButtonListTypes import com.navi.naviwidgets.models.response.ImageWithTextItem @@ -25,6 +26,16 @@ class RadioButtonItemDeserializer : JsonDeserializer { ): RadioButtonBaseItem? { json?.let { val jsonObject = it.asJsonObject + jsonObject["widgetName"].asString?.let { widgetName -> + NaviTrackEvent.trackEvent( + eventName = "dev_navi_widget_cleanup", + eventValues = + mapOf( + "widgetName" to widgetName, + "deserializer" to "RadioButtonItemDeserializer", + ), + ) + } return when (jsonObject["widgetName"].asString) { CustomRadioButtonListTypes.CTA_TEXT_WIDGET.value -> { Gson().fromJson(jsonObject, CTATextItem::class.java) diff --git a/android/navi-widgets/src/main/java/com/navi/naviwidgets/WidgetDataDeserializer.kt b/android/navi-widgets/src/main/java/com/navi/naviwidgets/WidgetDataDeserializer.kt index 68867fcef1..ea5d0a9124 100644 --- a/android/navi-widgets/src/main/java/com/navi/naviwidgets/WidgetDataDeserializer.kt +++ b/android/navi-widgets/src/main/java/com/navi/naviwidgets/WidgetDataDeserializer.kt @@ -8,6 +8,7 @@ package com.navi.naviwidgets import com.google.gson.* +import com.navi.analytics.utils.NaviTrackEvent import com.navi.insurance.models.response.BenefitExplainerTabsData import com.navi.insurance.models.response.BenefitExplainerTabsList import com.navi.insurance.models.response.BenefitExplainerTabsWidgetList @@ -51,6 +52,16 @@ class WidgetDataDeserializer : JsonDeserializer { ): GenericWidgetDataInfo? { json?.let { val jsonObject = it.asJsonObject + jsonObject["widgetName"].asString?.let { widgetName -> + NaviTrackEvent.trackEvent( + eventName = "dev_navi_widget_cleanup", + eventValues = + mapOf( + "widgetName" to widgetName, + "deserializer" to "WidgetDataDeserializer", + ), + ) + } return when (jsonObject["widgetName"].asString) { WidgetTypes.DASHBOARD_INSURANCE_DETAILS_WIDGET_V2.value -> { Gson().fromJson(jsonObject, DashboardInsuranceDetailsWidgetV2::class.java) diff --git a/android/navi-widgets/src/main/java/com/navi/naviwidgets/validations/ValidationJsonDeserializer.kt b/android/navi-widgets/src/main/java/com/navi/naviwidgets/validations/ValidationJsonDeserializer.kt index 3e30cddd29..937815f33f 100644 --- a/android/navi-widgets/src/main/java/com/navi/naviwidgets/validations/ValidationJsonDeserializer.kt +++ b/android/navi-widgets/src/main/java/com/navi/naviwidgets/validations/ValidationJsonDeserializer.kt @@ -11,6 +11,7 @@ import com.google.gson.Gson import com.google.gson.JsonDeserializationContext import com.google.gson.JsonDeserializer import com.google.gson.JsonElement +import com.navi.analytics.utils.NaviTrackEvent import java.lang.reflect.Type class ValidationJsonDeserializer : JsonDeserializer { @@ -21,6 +22,13 @@ class ValidationJsonDeserializer : JsonDeserializer { ): BaseInputValidation? { if (json != null) { val jsonObject = json.asJsonObject + jsonObject["name"].asString?.let { name -> + NaviTrackEvent.trackEvent( + eventName = "dev_navi_widget_cleanup", + eventValues = + mapOf("name" to name, "deserializer" to "ValidationJsonDeserializer"), + ) + } val className = when (jsonObject["name"].asString) { NotEmptyValidation.VALIDATION_NAME -> NotEmptyValidation::class.java diff --git a/android/navi-widgets/src/main/java/com/navi/naviwidgets/viewholder/DashboardHolderFactoryImpl.kt b/android/navi-widgets/src/main/java/com/navi/naviwidgets/viewholder/DashboardHolderFactoryImpl.kt index 31f55ad614..55859691a2 100644 --- a/android/navi-widgets/src/main/java/com/navi/naviwidgets/viewholder/DashboardHolderFactoryImpl.kt +++ b/android/navi-widgets/src/main/java/com/navi/naviwidgets/viewholder/DashboardHolderFactoryImpl.kt @@ -172,14 +172,6 @@ class DashboardHolderFactoryImpl : ViewHolderTypeFacto STRIP_TITLE_SUBTITLE_WIDGET -> StripWithTItleAndSubtitleWidgetVH(parent) ICON_LOTTIE_ANIMATION_WIDGET -> IconLottieAnimationVH(parent) else -> UnknownWidgetVH(parent) - }.also { - NaviTrackEvent.trackEvent( - eventName = "dev_navi_widget_cleanup", - eventValues = - mapOf( - "viewHolder" to it::class.java.simpleName.toString(), - "factory" to "DashboardHolderFactoryImpl", - ), - ) - } as BaseViewHolder + } + as BaseViewHolder } diff --git a/android/navi-widgets/src/main/java/com/navi/naviwidgets/viewholder/NaviChatViewHolderFactoryImpl.kt b/android/navi-widgets/src/main/java/com/navi/naviwidgets/viewholder/NaviChatViewHolderFactoryImpl.kt index 864dc244ac..e4541db640 100644 --- a/android/navi-widgets/src/main/java/com/navi/naviwidgets/viewholder/NaviChatViewHolderFactoryImpl.kt +++ b/android/navi-widgets/src/main/java/com/navi/naviwidgets/viewholder/NaviChatViewHolderFactoryImpl.kt @@ -121,14 +121,6 @@ class NaviChatViewHolderFactoryImpl( NAVI_CHAT_CALL_STATUS_WIDGET -> NaviChatCallStatusWidgetVH(viewDataBinding = parent) UNKNOWN_WIDGET -> UnknownWidgetVH(view = parent) else -> UnknownWidgetVH(view = parent) - }.also { - NaviTrackEvent.trackEvent( - eventName = "dev_navi_widget_cleanup", - eventValues = - mapOf( - "viewHolder" to it::class.java.simpleName.toString(), - "factory" to "NaviChatViewHolderFactoryImpl", - ), - ) - } as BaseViewHolder + } + as BaseViewHolder } diff --git a/android/navi-widgets/src/main/java/com/navi/naviwidgets/viewholder/ViewHolderFactoryImpl.kt b/android/navi-widgets/src/main/java/com/navi/naviwidgets/viewholder/ViewHolderFactoryImpl.kt index 03f9b257c0..8d6b7c84ff 100644 --- a/android/navi-widgets/src/main/java/com/navi/naviwidgets/viewholder/ViewHolderFactoryImpl.kt +++ b/android/navi-widgets/src/main/java/com/navi/naviwidgets/viewholder/ViewHolderFactoryImpl.kt @@ -1247,14 +1247,6 @@ class ViewHolderFactoryImpl : ViewHolderTypeFactory FUND_DETAILS_WIDGET -> FundDetailsWidgetVH(parent) NOTE_WIDGET -> NoteWidgetVH(parent) else -> UnknownWidgetVH(parent) - }.also { - NaviTrackEvent.trackEvent( - eventName = "dev_navi_widget_cleanup", - eventValues = - mapOf( - "viewHolder" to it::class.java.simpleName.toString(), - "factory" to "ViewHolderFactoryImpl", - ), - ) - } as BaseViewHolder + } + as BaseViewHolder } diff --git a/android/navi-widgets/src/main/java/com/navi/naviwidgets/widgets/NaviWidgetJsonDeserializer.kt b/android/navi-widgets/src/main/java/com/navi/naviwidgets/widgets/NaviWidgetJsonDeserializer.kt index 5698ba1fb6..d107302656 100644 --- a/android/navi-widgets/src/main/java/com/navi/naviwidgets/widgets/NaviWidgetJsonDeserializer.kt +++ b/android/navi-widgets/src/main/java/com/navi/naviwidgets/widgets/NaviWidgetJsonDeserializer.kt @@ -10,6 +10,7 @@ package com.navi.naviwidgets.widgets import com.google.gson.JsonDeserializationContext import com.google.gson.JsonDeserializer import com.google.gson.JsonElement +import com.navi.analytics.utils.NaviTrackEvent import com.navi.naviwidgets.models.* import com.navi.naviwidgets.models.ActionButtonWidget import com.navi.naviwidgets.models.NoteWidget @@ -36,6 +37,16 @@ class NaviWidgetJsonDeserializer : JsonDeserializer { ): NaviWidget? { if (json != null) { val jsonObject = json.asJsonObject + jsonObject["widgetName"].asString?.let { widgetName -> + NaviTrackEvent.trackEvent( + eventName = "dev_navi_widget_cleanup", + eventValues = + mapOf( + "widgetName" to widgetName, + "deserializer" to "NaviWidgetJsonDeserializer", + ), + ) + } val className = when (jsonObject["widgetName"].asString) { VideoPlayerWidget.WIDGET_NAME -> VideoPlayerWidget::class.java diff --git a/android/navi-widgets/src/main/java/com/navi/naviwidgets/widgets/ParameterValueJsonDeserializer.kt b/android/navi-widgets/src/main/java/com/navi/naviwidgets/widgets/ParameterValueJsonDeserializer.kt index 0ddc6d0e77..3fba213063 100644 --- a/android/navi-widgets/src/main/java/com/navi/naviwidgets/widgets/ParameterValueJsonDeserializer.kt +++ b/android/navi-widgets/src/main/java/com/navi/naviwidgets/widgets/ParameterValueJsonDeserializer.kt @@ -10,6 +10,7 @@ package com.navi.naviwidgets.widgets import com.google.gson.JsonDeserializationContext import com.google.gson.JsonDeserializer import com.google.gson.JsonElement +import com.navi.analytics.utils.NaviTrackEvent import com.navi.base.model.AnalyticsEvent import com.navi.base.model.CtaData import com.navi.base.model.DropOffInfo @@ -45,6 +46,14 @@ class ParameterValueJsonDeserializer : JsonDeserializer { val type = jsonObject[KEY_TYPE]?.asString val data = jsonObject[KEY_DATA] + type?.let { + NaviTrackEvent.trackEvent( + eventName = "dev_navi_widget_cleanup", + eventValues = + mapOf("type" to type, "deserializer" to "ParameterValueJsonDeserializer"), + ) + } + ParameterValue( type, when {