NTP-67328 add widget cleanup event in navi widgets module (#16289)

This commit is contained in:
Hitesh Kumar
2025-05-23 17:03:12 +05:30
committed by GitHub
parent 67f1f3f54a
commit 6adbc88669
8 changed files with 56 additions and 30 deletions

View File

@@ -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> {
): 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)

View File

@@ -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> {
): 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)

View File

@@ -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<BaseInputValidation> {
@@ -21,6 +22,13 @@ class ValidationJsonDeserializer : JsonDeserializer<BaseInputValidation> {
): 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

View File

@@ -172,14 +172,6 @@ class DashboardHolderFactoryImpl<T : NaviBaseAdapterModel> : 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<T>
}
as BaseViewHolder<T>
}

View File

@@ -121,14 +121,6 @@ class NaviChatViewHolderFactoryImpl<T : NaviBaseAdapterModel>(
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<T>
}
as BaseViewHolder<T>
}

View File

@@ -1247,14 +1247,6 @@ class ViewHolderFactoryImpl<T : NaviBaseAdapterModel> : ViewHolderTypeFactory<T>
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<T>
}
as BaseViewHolder<T>
}

View File

@@ -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> {
): 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

View File

@@ -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<ParameterValue> {
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 {