diff --git a/App/Container/Navi-Insurance/network/BenefitPageApi.ts b/App/Container/Navi-Insurance/network/BenefitPageApi.ts index cd264a1e92..0afc269c86 100644 --- a/App/Container/Navi-Insurance/network/BenefitPageApi.ts +++ b/App/Container/Navi-Insurance/network/BenefitPageApi.ts @@ -24,6 +24,7 @@ export const getBenefitPageData = async ( setScreenData: Dispatch>, ) => { const url = "benefits/v2"; + const startTime = Date.now(); const cacheKey = buildUrlWithParams(url, screenMetaData.data); const cachePromise = getScreenDataFromCache(cacheKey); const apiPromise = get>( @@ -60,6 +61,7 @@ export const getBenefitPageData = async ( screenMetaData, AnalyticsFlowNameConstant.GI_RN_BENEFIT, AnalyticsMethodNameConstant.FETCH_BENEFIT_LIST, + startTime, ); isScreenLoaded = true; } else { diff --git a/App/Container/Navi-Insurance/network/MarketBenefitComparePageApi.ts b/App/Container/Navi-Insurance/network/MarketBenefitComparePageApi.ts index b0fe669a62..b2cd06c494 100644 --- a/App/Container/Navi-Insurance/network/MarketBenefitComparePageApi.ts +++ b/App/Container/Navi-Insurance/network/MarketBenefitComparePageApi.ts @@ -22,6 +22,7 @@ export const getMarketBenefitComparePageData = async ( setScreenData: Dispatch>, ) => { const url = "market-benefit-compare"; + const startTime = Date.now(); const cachePromise = getScreenDataFromCache(url); const apiPromise = get>( url, @@ -56,6 +57,7 @@ export const getMarketBenefitComparePageData = async ( screenMetaData, AnalyticsFlowNameConstant.GI_RN_BENEFIT_COMPARE, AnalyticsMethodNameConstant.MARKET_BENEFIT_COMPARE_LIST, + startTime, ); isScreenLoaded = true; } else { diff --git a/App/Container/Navi-Insurance/network/QuotePageApi.ts b/App/Container/Navi-Insurance/network/QuotePageApi.ts index ebf447f756..4ae80150e8 100644 --- a/App/Container/Navi-Insurance/network/QuotePageApi.ts +++ b/App/Container/Navi-Insurance/network/QuotePageApi.ts @@ -37,6 +37,7 @@ export const createQuote = async ( "X-Target": GI.toLocaleUpperCase(), }, }; + const startTime = Date.now(); return post>(url, screenMetaData.data, requestConfig) .then(response => { if (response) { @@ -66,6 +67,7 @@ export const createQuote = async ( screenMetaData, AnalyticsFlowNameConstant.GI_RN_QUOTE, AnalyticsMethodNameConstant.FETCH_QUOTE_V4, + startTime, ); }); }; @@ -88,6 +90,7 @@ export const getQuotePageData = async ( }, }; const url = `v3/quotes/${quoteId}`; + const startTime = Date.now(); return get>(url, requestConfig, screenMetaData.data) .then(response => { handleResponseData(setScreenData, response); @@ -99,6 +102,7 @@ export const getQuotePageData = async ( screenMetaData, AnalyticsFlowNameConstant.GI_RN_QUOTE, AnalyticsMethodNameConstant.FETCH_INSURANCE_QUOTE_PAGE_FROM_BACKEND, + startTime, ); }); }; @@ -119,6 +123,7 @@ export const fetchComparisonPlanList = async ( screenMetaData: ActionMetaData, setScreenData: Dispatch>, ) => { + const startTime = Date.now(); return post>( "quotes/compare-plans", screenMetaData.data, @@ -138,6 +143,7 @@ export const fetchComparisonPlanList = async ( screenMetaData, AnalyticsFlowNameConstant.GI_RN_QUOTE, AnalyticsMethodNameConstant.COMPARE_PLAN_LIST, + startTime, ); }); }; diff --git a/App/Container/Navi-Insurance/network/WaitingPeriodApi.ts b/App/Container/Navi-Insurance/network/WaitingPeriodApi.ts index 6fd0ca9a24..da29f12363 100644 --- a/App/Container/Navi-Insurance/network/WaitingPeriodApi.ts +++ b/App/Container/Navi-Insurance/network/WaitingPeriodApi.ts @@ -22,6 +22,7 @@ export const getWaitingPeriodScreenData = async ( setScreenData: Dispatch>, ) => { const url = "waiting-period"; + const startTime = Date.now(); const cachePromise = getScreenDataFromCache(url); const apiPromise = get>( url, @@ -56,6 +57,7 @@ export const getWaitingPeriodScreenData = async ( screenMetaData, AnalyticsFlowNameConstant.GI_WAITING_PERIOD, AnalyticsMethodNameConstant.WAITING_PERIOD_SCREEN, + startTime, ); isScreenLoaded = true; } else { diff --git a/App/common/constants/StringConstant.ts b/App/common/constants/StringConstant.ts index 6763980fd8..6699c0c05f 100644 --- a/App/common/constants/StringConstant.ts +++ b/App/common/constants/StringConstant.ts @@ -34,7 +34,7 @@ export enum BundleState { } export const CODEPUSH_METHOD = "onCodepushStatusChange"; -export const ERROR_TITLE = "Something went wrong"; +export const ERROR_TITLE = "Something went wrong!"; export const ERROR_INTERNET_TITLE = "No internet connection!"; export const ERROR_SUBTITLE = "Please try again after some time"; export const ERROR_INTERNET_SUBTITLE = diff --git a/App/common/hooks/useAnalyticsEvent.ts b/App/common/hooks/useAnalyticsEvent.ts index d4715dd21d..8a7e954efd 100644 --- a/App/common/hooks/useAnalyticsEvent.ts +++ b/App/common/hooks/useAnalyticsEvent.ts @@ -71,6 +71,9 @@ export const sendAsGlobalErrorEvent = (event: GlobalErrorData) => { extras = null, journeySource = null, isAppDowntimeEvent = null, + errorCode = null, + errorTitle = null, + latency = null, } = event; const updatedSource = moduleName + "_" + REACT_NATIVE + "_" + source; @@ -88,6 +91,9 @@ export const sendAsGlobalErrorEvent = (event: GlobalErrorData) => { extras, journeySource, isAppDowntimeEvent, + errorCode, + errorTitle, + latency, }); }; diff --git a/App/common/interface/analytics/GlobalErrorData.ts b/App/common/interface/analytics/GlobalErrorData.ts index c7b45c8af6..5f5b239050 100644 --- a/App/common/interface/analytics/GlobalErrorData.ts +++ b/App/common/interface/analytics/GlobalErrorData.ts @@ -1,14 +1,17 @@ interface GlobalErrorData { - reason?: string | null; - source?: string | null; - moduleName: string; - globalErrorType: string; - statusCode?: number | null; - networkType?: string | null; - flowName?: string | null; - methodName?: string | null; - vendorName?: string | null; - extras?: Map | null; - journeySource?: string | null; - isAppDowntimeEvent?: boolean | null; - } \ No newline at end of file + reason?: string | null; + source?: string | null; + moduleName: string; + globalErrorType: string; + statusCode?: number | null; + networkType?: string | null; + flowName?: string | null; + methodName?: string | null; + vendorName?: string | null; + extras?: Map | null; + journeySource?: string | null; + isAppDowntimeEvent?: boolean | null; + latency?: number | null; + errorCode?: string | null; + errorTitle?: string | null; +} diff --git a/App/common/screen/ScreenActionHandler.tsx b/App/common/screen/ScreenActionHandler.tsx index 458d24ff7d..d65a6a3013 100644 --- a/App/common/screen/ScreenActionHandler.tsx +++ b/App/common/screen/ScreenActionHandler.tsx @@ -18,7 +18,10 @@ import { sendAsGlobalErrorEvent, } from "../hooks/useAnalyticsEvent"; import { ScreenData } from "../interface/widgets/screenData/ScreenData"; -import { getErrorTypeFromStatusCode } from "../utilities/ErrorUtils"; +import { + getErrorTitleFromError, + getErrorTypeFromStatusCode, +} from "../utilities/ErrorUtils"; import { ScreenState } from "./BaseScreen"; import { ScreenActionTypes } from "./ScreenActionTypes"; @@ -79,6 +82,7 @@ export const handleErrorData = ( screenMetaData: ActionMetaData, flowName: string, methodName: string, + startTime: number, ) => { sendAsAnalyticsEvent({ name: AnalyticsEventNameConstants.HI_RN_INVALID_DATA_ERROR, @@ -88,6 +92,7 @@ export const handleErrorData = ( methodName: "handleScreenAction", }, }); + const latency = Date.now() - startTime; const errorEvent: GlobalErrorData = { reason: `${error.message}, axiosError: ${error.axiosCode}`, source: screenMetaData.screenName || "", @@ -97,6 +102,9 @@ export const handleErrorData = ( methodName: methodName, globalErrorType: getErrorTypeFromStatusCode(error.statusCode || -1), isAppDowntimeEvent: false, + errorCode: error.axiosCode, + errorTitle: getErrorTitleFromError(error.statusCode || -1), + latency: latency, }; sendAsGlobalErrorEvent(errorEvent); const updatedScreenData: ScreenData = { diff --git a/App/common/utilities/ErrorUtils.ts b/App/common/utilities/ErrorUtils.ts index b2b186b242..9268ea1352 100644 --- a/App/common/utilities/ErrorUtils.ts +++ b/App/common/utilities/ErrorUtils.ts @@ -19,6 +19,16 @@ export const getErrorTypeFromStatusCode = (statusCode: number) => { return AnalyticsGlobalErrorTypeConstant.GLOBAL_INTERNAL_ERRORS; }; +export const getErrorTitleFromError = (statusCode: number) => { + const statusCodeforInternetIssues = [20, 21, 23, 24]; + + if (statusCodeforInternetIssues.includes(statusCode)) { + return ERROR_INTERNET_TITLE; + } + + return ERROR_TITLE; +}; + export const getErrorResponseFromStatusCode = ( statusCode?: number, ): ErrorResponse => { diff --git a/android/app/src/main/java/com/naviapp/common/tab/InsuranceTabRepository.kt b/android/app/src/main/java/com/naviapp/common/tab/InsuranceTabRepository.kt index 016412f554..e7af565e7f 100644 --- a/android/app/src/main/java/com/naviapp/common/tab/InsuranceTabRepository.kt +++ b/android/app/src/main/java/com/naviapp/common/tab/InsuranceTabRepository.kt @@ -7,6 +7,7 @@ package com.naviapp.common.tab +import com.navi.common.checkmate.model.MetricInfo import com.navi.common.model.ModuleName import com.navi.common.model.ModuleNameV2 import com.navi.common.network.models.RepoResult @@ -25,35 +26,50 @@ class InsuranceTabRepository constructor(@SuperAppRetroFit private val apiService: RetrofitService) : ResponseCallback() { private val giTabId = "GI" - suspend fun fetchInsuranceTabPage(): RepoResult { + suspend fun fetchInsuranceTabPage( + metricInfo: MetricInfo.InsuranceMetricInfo + ): RepoResult { return apiResponseCallback( apiService.fetchInsuranceTabForgeScreen( acceptEncoding = GZIP, target = ModuleNameV2.FORGE.name, giTabId - ) + ), + metricInfo = metricInfo ) } - suspend fun dismissCta(toastReferenceId: String) = + suspend fun dismissCta( + toastReferenceId: String, + metricInfo: MetricInfo.InsuranceMetricInfo + ) = apiResponseCallback( apiService.dismissToast( target = ModuleName.GI.name, request = ToastRequestBody(toastIdentifier = toastReferenceId) - ) + ), + metricInfo = metricInfo ) - suspend fun closePolicyCard(quoteId: String): RepoResult { + suspend fun closePolicyCard( + quoteId: String, + metricInfo: MetricInfo.InsuranceMetricInfo + ): RepoResult { return apiResponseCallback( - apiService.closePolicyCard(applicationId = quoteId, target = ModuleName.GI.name) + apiService.closePolicyCard(applicationId = quoteId, target = ModuleName.GI.name), + metricInfo = metricInfo ) } - suspend fun clearCache(): RepoResult { + suspend fun clearCache( + metricInfo: MetricInfo.InsuranceMetricInfo + ): RepoResult { + return apiResponseCallback( apiService.clearCache( target = ModuleName.GI.name, - ) + ), + metricInfo = metricInfo ) } } diff --git a/android/app/src/main/java/com/naviapp/common/tab/InsuranceTabViewModel.kt b/android/app/src/main/java/com/naviapp/common/tab/InsuranceTabViewModel.kt index ef7f3afac9..d0cf7e9ce6 100644 --- a/android/app/src/main/java/com/naviapp/common/tab/InsuranceTabViewModel.kt +++ b/android/app/src/main/java/com/naviapp/common/tab/InsuranceTabViewModel.kt @@ -26,15 +26,20 @@ import com.navi.common.analytics.NaviAnalytics import com.navi.common.analytics.NaviAnalytics.Companion.CACHE_API_LOAD_ERROR import com.navi.common.analytics.NaviAnalytics.Companion.INSURANCE_TAB_INIT import com.navi.common.callback.RequestToCallbackHandler +import com.navi.common.checkmate.model.MetricInfo import com.navi.common.model.ModuleNameV2 import com.navi.common.network.models.ErrorMetaData +import com.navi.common.network.models.isSuccessWithData import com.navi.common.react.ReactPreLoadHeadLessActivity import com.navi.common.uitron.model.action.CtaAction import com.navi.common.utils.SingleLiveEvent import com.navi.common.utils.isValidResponse import com.navi.common.viewmodel.BaseVM +import com.navi.insurance.common.models.ClearCacheResponse import com.navi.insurance.common.models.GiErrorMetaData +import com.navi.insurance.common.models.InsuranceTabResponse import com.navi.insurance.common.models.InsuranceTabState +import com.navi.insurance.models.response.ClosePolicyCardResponse import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator import com.navi.insurance.network.ApiErrorTagType import com.navi.insurance.util.Constants @@ -75,7 +80,16 @@ constructor( _insuranceTabDataFlow.update { it.copy(isLoading = true) } } viewModelScope.safeLaunch(coroutineContext = Dispatchers.IO) { - val response = repository.fetchInsuranceTabPage() + val metricInfo = + MetricInfo.InsuranceMetricInfo( + screen = INSURANCE_TAB_INIT, + isNae = { + !it.isSuccessWithData() || + (it.data?.listOfUiTronWidgets.isNullOrEmpty() && + it.data?.listOfNativeWidgets.isNullOrEmpty()) + } + ) + val response = repository.fetchInsuranceTabPage(metricInfo) if ( response.error.isNull() && response.errors.isNullOrEmpty() && @@ -116,7 +130,12 @@ constructor( private fun dismissCta(toastIdentifier: String) { viewModelScope.safeLaunch(coroutineContext = Dispatchers.IO) { - val response = repository.dismissCta(toastIdentifier) + val metricInfo = + MetricInfo.InsuranceMetricInfo( + screen = INSURANCE_TAB_INIT, + isNae = { false } + ) + val response = repository.dismissCta(toastIdentifier, metricInfo) if (response.statusCode.orZero().equals(200)) {} else { val errorUnifiedResponse = getErrorUnifiedResponse( @@ -148,7 +167,12 @@ constructor( private fun closePolicyCard(quoteId: String) { _insuranceTabDataFlow.update { it.copy(isLoading = true, data = null) } viewModelScope.safeLaunch(coroutineContext = Dispatchers.IO) { - val response = repository.closePolicyCard(quoteId) + val metricInfo = + MetricInfo.InsuranceMetricInfo( + screen = INSURANCE_TAB_INIT, + isNae = { false } + ) + val response = repository.closePolicyCard(quoteId, metricInfo) if ( response.error.isNull() && response.errors.isNullOrEmpty() && @@ -211,7 +235,12 @@ constructor( fun clearCacheOnVersionUpgrade() { viewModelScope.safeLaunch(coroutineContext = Dispatchers.IO) { - val response = repository.clearCache() + val metricInfo = + MetricInfo.InsuranceMetricInfo( + screen = INSURANCE_TAB_INIT, + isNae = { false } + ) + val response = repository.clearCache(metricInfo) if (response.isValidResponse()) { response.data?.pageVersionList?.forEach { item -> val entity = naviCacheRepository.get(key = item.pageName.orEmpty()) diff --git a/android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/NativeAnalyticsConnector.kt b/android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/NativeAnalyticsConnector.kt index e2b2d51099..1714ccdaff 100644 --- a/android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/NativeAnalyticsConnector.kt +++ b/android/app/src/main/java/com/naviapp/react_native/native_bridge/connectors/NativeAnalyticsConnector.kt @@ -12,7 +12,11 @@ import com.facebook.react.bridge.ReactContextBaseJavaModule import com.facebook.react.bridge.ReactMethod import com.facebook.react.bridge.ReadableMap import com.navi.base.utils.orFalse +import com.navi.base.utils.orZero +import com.navi.common.checkmate.core.CheckMateManager +import com.navi.common.model.ModuleNameV2 import com.navi.common.utils.CommonNaviAnalytics +import com.naviapp.react_native.native_bridge.connectors.NativeAnalyticsConnector.Companion.moduleNameListForGI import com.naviapp.utils.toMap class NativeAnalyticsConnector internal constructor(context: ReactApplicationContext?) : @@ -96,8 +100,42 @@ class NativeAnalyticsConnector internal constructor(context: ReactApplicationCon extras = extras.toMutableMap(), journeySource = journeySource ) + + val latency = (propsMap["latency"] as? Double)?.toLong() ?: 0L + val errorCode = propsMap["errorCode"] as? String + val errorTitle = propsMap["errorTitle"] as? String + + CheckMateManager.recordNetworkEvent( + statusCode = statusCode?.toInt().orZero(), + actualLatency = latency.orZero(), + networkLatency = latency.orZero(), + isNae = statusCode?.toInt() != 20, + httpStatusCode = statusCode?.toInt().orZero(), + vertical = getModuleNameForCheckMate(moduleName), + screen = source.orEmpty(), + endpoint = methodName.orEmpty(), + errorCode = errorCode.orEmpty(), + errorTitle = errorTitle.orEmpty(), + errorDes = reason.orEmpty(), + exception = reason.orEmpty(), + ) if (isAppDowntimeEvent.orFalse()) { sendAsAppDowntimeEvent(eventProps) } } + + companion object { + val moduleNameListForGI = listOf("gi", "hi", "Insurance") + } } + +fun getModuleNameForCheckMate(moduleName: String) = + when { + moduleName in moduleNameListForGI -> ModuleNameV2.Insurance.name + moduleName.contains("home", ignoreCase = true) || + moduleName.contains("notification", ignoreCase = true) -> ModuleNameV2.App.name + moduleName.contains("investment", ignoreCase = true) || + moduleName.contains("amc", ignoreCase = true) -> ModuleNameV2.AMC.name + moduleName.contains("gold", ignoreCase = true) -> ModuleNameV2.GOLD.name + else -> "Unknown" + } diff --git a/android/navi-common/src/main/java/com/navi/common/checkmate/core/CheckMateManager.kt b/android/navi-common/src/main/java/com/navi/common/checkmate/core/CheckMateManager.kt index 0dbf4a1aee..9d8acf952b 100644 --- a/android/navi-common/src/main/java/com/navi/common/checkmate/core/CheckMateManager.kt +++ b/android/navi-common/src/main/java/com/navi/common/checkmate/core/CheckMateManager.kt @@ -48,13 +48,14 @@ object CheckMateManager { * about the type of error, its latency metrics, and additional context such as the vertical and * screen. */ - fun recordNetworkEvent( - metricInfo: MetricInfo, + fun recordNetworkEvent( statusCode: Int, actualLatency: Long, networkLatency: Long, isNae: Boolean, httpStatusCode: Int, + vertical: String, + screen: String, endpoint: String, errorCode: String, errorTitle: String, @@ -62,7 +63,7 @@ object CheckMateManager { exception: String, ) { NaviTrackEvent.trackEventOnClickStream( - eventName = getEventNameWithVerticalPrefix("nap_metric", metricInfo.vertical), + eventName = getEventNameWithVerticalPrefix("nap_metric", vertical), eventValues = mapOf( "type" to EventType.Backend.name, @@ -71,8 +72,8 @@ object CheckMateManager { "networkLatency" to networkLatency.toString(), "statusCode" to statusCode.toString(), "httpStatusCode" to httpStatusCode.toString(), - "vertical" to metricInfo.vertical, - "screen" to metricInfo.screen, + "vertical" to vertical, + "screen" to screen, "errorTitle" to errorTitle, "errorDes" to errorDes, "errorCode" to errorCode, @@ -159,13 +160,16 @@ object CheckMateManager { apiResponse?.raw()?.sentRequestAtMillis.orZero() val httpStatusCode = apiResponse?.raw()?.code.orZero() val isNae = metricInfo.isNae(handledResponse) + val vertical = metricInfo.vertical + val screen = metricInfo.screen recordNetworkEvent( - metricInfo = metricInfo, statusCode = handledResponse.statusCode ?: httpStatusCode, actualLatency = actualLatency, networkLatency = apiLatency, isNae = isNae, httpStatusCode = httpStatusCode, + vertical = vertical, + screen = screen, endpoint = apiResponse?.raw()?.request?.url.toString(), errorCode = handledResponse.errors?.firstOrNull()?.code.orEmpty(), errorTitle = diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/claim/document/vm/DocumentReviewFragmentVM.kt b/android/navi-insurance/src/main/java/com/navi/insurance/claim/document/vm/DocumentReviewFragmentVM.kt index 16b9b0c785..5ca2b3444d 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/claim/document/vm/DocumentReviewFragmentVM.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/claim/document/vm/DocumentReviewFragmentVM.kt @@ -19,6 +19,7 @@ import com.navi.insurance.common.GiBaseVM import com.navi.insurance.common.models.* import com.navi.insurance.common.util.ActionHandler import com.navi.insurance.network.ApiErrorTagType +import com.navi.insurance.util.logGiAppErrorEvent import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.CoroutineExceptionHandler @@ -53,6 +54,12 @@ constructor( private fun exceptionHandler(tag: String? = null) = CoroutineExceptionHandler { _, exception -> if (tag == ApiErrorTagType.FETCH_UPLOADED_CARD_WIDGETS_ERROR.value) { updateErrorMessage(handleException(exception, tag)) + logGiAppErrorEvent( + screen = insuranceAnalyticsHandler?.getCurrentScreen().toString(), + errorTitle = tag, + errorDes = exception.message.toString(), + isSourceExternal = false + ) } else { insuranceAnalyticsHandler?.sendDebugEvent( "Message : ${exception.message}, Cause : ${exception.cause}, StackTrace : ${exception.stackTrace.getOrNull(0)}", diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/claim/document/vm/DocumentUploadByCategoryVM.kt b/android/navi-insurance/src/main/java/com/navi/insurance/claim/document/vm/DocumentUploadByCategoryVM.kt index 80e7541166..67917acabb 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/claim/document/vm/DocumentUploadByCategoryVM.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/claim/document/vm/DocumentUploadByCategoryVM.kt @@ -27,6 +27,7 @@ import com.navi.insurance.common.util.DocumentUploadCommonUtil import com.navi.insurance.models.request.FlowType import com.navi.insurance.models.request.UploadDocumentRequest import com.navi.insurance.network.ApiErrorTagType +import com.navi.insurance.util.logGiAppErrorEvent import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.CoroutineExceptionHandler @@ -87,6 +88,12 @@ constructor( private fun exceptionHandler(tag: String? = null) = CoroutineExceptionHandler { _, exception -> if (tag == ApiErrorTagType.FETCH_UPLOAD_CARD_WIDGETS_ERROR.value) { updateErrorMessage(handleException(exception, tag)) + logGiAppErrorEvent( + screen = insuranceAnalyticsHandler?.getCurrentScreen().toString(), + errorTitle = tag, + errorDes = exception.message.toString(), + isSourceExternal = false + ) } else { insuranceAnalyticsHandler?.sendDebugEvent( "Message : ${exception.message}, Cause : ${exception.cause}, StackTrace : ${ diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/AhcOdcTabularBottomsheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/AhcOdcTabularBottomsheet.kt index e04af1c432..78df63d492 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/AhcOdcTabularBottomsheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/AhcOdcTabularBottomsheet.kt @@ -46,6 +46,7 @@ import com.navi.insurance.databinding.LayoutClaimsStepsBottomSheetBinding import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator import com.navi.insurance.util.CONTENT_DATA_JSON_STRING import com.navi.insurance.util.Constants +import com.navi.insurance.util.logGiAppErrorEvent import com.navi.naviwidgets.callbacks.WidgetCallback import com.navi.naviwidgets.composewidget.reusable.FooterButtonComposable import com.navi.naviwidgets.composewidget.reusable.whiteColor @@ -238,6 +239,13 @@ class AhcOdcTabularBottomsheet : BaseBottomSheet(), WidgetCallback { VENDOR_NAVI_API, isDownTime = true ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = GiErrorMetaData.GET_JSON_OBJECT, + errorDes = error.stackTrace.getOrNull(0).toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } override val screenName = AHC_ODC_TABULAR_BOTTOMSHEET diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/CheckboxWithDropdownBottomsheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/CheckboxWithDropdownBottomsheet.kt index 4c551f03d0..3a7987723c 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/CheckboxWithDropdownBottomsheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/CheckboxWithDropdownBottomsheet.kt @@ -57,6 +57,7 @@ import com.navi.insurance.pre.purchase.journey.composables.CheckBoxWithDropDownS import com.navi.insurance.util.CONTENT_DATA_JSON_STRING import com.navi.insurance.util.Constants import com.navi.insurance.util.PAGE_TYPE +import com.navi.insurance.util.logGiAppErrorEvent import com.navi.naviwidgets.callbacks.WidgetCallback import com.navi.naviwidgets.composewidget.reusable.FooterButtonComposable import com.navi.naviwidgets.extensions.getJsonObject @@ -303,6 +304,13 @@ class CheckboxWithDropdownBottomsheet : BaseBottomSheet(), WidgetCallback { GiErrorMetaData.GET_JSON_OBJECT, VENDOR_NAVI_API ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = GiErrorMetaData.GET_JSON_OBJECT, + errorDes = error.stackTrace.getOrNull(0).toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } override val screenName = InsuranceAnalyticsConstants.CHECKBOX_WITH_DROPDOWN_BOTTOMSHEET diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/ClaimsStepsBottomSheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/ClaimsStepsBottomSheet.kt index 7bc7e1f1de..67ddd59cbe 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/ClaimsStepsBottomSheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/ClaimsStepsBottomSheet.kt @@ -45,6 +45,7 @@ import com.navi.insurance.common.models.GiErrorMetaData import com.navi.insurance.databinding.LayoutClaimsStepsBottomSheetBinding import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator import com.navi.insurance.util.CONTENT_DATA_JSON_STRING +import com.navi.insurance.util.logGiAppErrorEvent import com.navi.naviwidgets.extensions.ClickableNaviText import com.navi.naviwidgets.extensions.NaviImage import com.navi.naviwidgets.extensions.NaviTextWidgetized @@ -250,6 +251,13 @@ class ClaimsStepsBottomSheet : BaseBottomSheet() { GiErrorMetaData.GET_JSON_OBJECT, VENDOR_NAVI_API ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = GiErrorMetaData.GET_JSON_OBJECT, + errorDes = error.stackTrace.getOrNull(0).toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } override val screenName = InsuranceAnalyticsConstants.CLAIMS_STEPS_BOTTOM_SHEET diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/HeaderItemFooterBottomSheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/HeaderItemFooterBottomSheet.kt index f54e3f70ba..f0d78ff7ba 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/HeaderItemFooterBottomSheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/HeaderItemFooterBottomSheet.kt @@ -50,6 +50,7 @@ import com.navi.insurance.databinding.LayoutClaimsStepsBottomSheetBinding import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator import com.navi.insurance.util.CONTENT_DATA_JSON_STRING import com.navi.insurance.util.Constants +import com.navi.insurance.util.logGiAppErrorEvent import com.navi.naviwidgets.callbacks.WidgetCallback import com.navi.naviwidgets.composewidget.reusable.FooterButtonComposable import com.navi.naviwidgets.composewidget.reusable.colorCTASecondary @@ -233,6 +234,13 @@ class HeaderItemFooterBottomSheet : BaseBottomSheet(), WidgetCallback { GiErrorMetaData.GET_JSON_OBJECT, VENDOR_NAVI_API ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = GiErrorMetaData.GET_JSON_OBJECT, + errorDes = error.stackTrace.getOrNull(0).toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } override val screenName = InsuranceAnalyticsConstants.HEADER_WITH_LIST_ITEMS_AND_FOOTER diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/HeaderWithIconContentFooterBottomSheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/HeaderWithIconContentFooterBottomSheet.kt index 42442b7884..ea65a41bc4 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/HeaderWithIconContentFooterBottomSheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/HeaderWithIconContentFooterBottomSheet.kt @@ -51,6 +51,7 @@ import com.navi.insurance.databinding.LayoutClaimsStepsBottomSheetBinding import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator import com.navi.insurance.util.CONTENT_DATA_JSON_STRING import com.navi.insurance.util.Constants +import com.navi.insurance.util.logGiAppErrorEvent import com.navi.naviwidgets.callbacks.WidgetCallback import com.navi.naviwidgets.composewidget.reusable.FooterButtonComposable import com.navi.naviwidgets.composewidget.reusable.colorCTASecondary @@ -238,6 +239,13 @@ class HeaderWithIconContentFooterBottomSheet : BaseBottomSheet(), WidgetCallback GiErrorMetaData.GET_JSON_OBJECT, VENDOR_NAVI_API ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = GiErrorMetaData.GET_JSON_OBJECT, + errorDes = error.stackTrace.firstOrNull().toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } override val screenName = InsuranceAnalyticsConstants.HEADER_WITH_ICON_CONTENT_FOOTER diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/IconWithListBottomSheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/IconWithListBottomSheet.kt index eb3e2df86d..10e66f0b05 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/IconWithListBottomSheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/IconWithListBottomSheet.kt @@ -42,6 +42,7 @@ import com.navi.insurance.databinding.LayoutClaimsStepsBottomSheetBinding import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator import com.navi.insurance.util.CONTENT_DATA_JSON_STRING import com.navi.insurance.util.Constants +import com.navi.insurance.util.logGiAppErrorEvent import com.navi.naviwidgets.callbacks.WidgetCallback import com.navi.naviwidgets.composewidget.reusable.FooterButtonComposable import com.navi.naviwidgets.extensions.NaviImage @@ -230,6 +231,13 @@ class IconWithListBottomSheet : BaseBottomSheet(), WidgetCallback { GiErrorMetaData.GET_JSON_OBJECT, VENDOR_NAVI_API ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = GiErrorMetaData.GET_JSON_OBJECT, + errorDes = error.stackTrace.getOrNull(0).toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } override val screenName = InsuranceAnalyticsConstants.ICON_WITH_LIST_BOTTOM_SHEET diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/LottieWithTitleBottomSheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/LottieWithTitleBottomSheet.kt index f1fb7f275a..c47527acc2 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/LottieWithTitleBottomSheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/LottieWithTitleBottomSheet.kt @@ -59,6 +59,7 @@ import com.navi.insurance.pre.purchase.journey.pre.purchase.journey.theme.LocalD import com.navi.insurance.util.CONTENT_DATA_JSON_STRING import com.navi.insurance.util.Constants import com.navi.insurance.util.PAGE_TYPE +import com.navi.insurance.util.logGiAppErrorEvent import com.navi.naviwidgets.callbacks.WidgetCallback import com.navi.naviwidgets.composewidget.reusable.FooterButtonComposable import com.navi.naviwidgets.extensions.NaviImage @@ -267,6 +268,13 @@ class LottieWithTitleBottomSheet : BaseBottomSheet(), WidgetCallback { GiErrorMetaData.GET_JSON_OBJECT, VENDOR_NAVI_API ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = GiErrorMetaData.GET_JSON_OBJECT, + errorDes = error.stackTrace.getOrNull(0).toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } override val screenName = InsuranceAnalyticsConstants.LOTTIE_WITH_TITLE_BOTTOMSHEET diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/PolicySelectorBottomsheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/PolicySelectorBottomsheet.kt index c117c13ac2..6376ac43c2 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/PolicySelectorBottomsheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/PolicySelectorBottomsheet.kt @@ -50,6 +50,7 @@ import com.navi.insurance.databinding.LayoutClaimsStepsBottomSheetBinding import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator import com.navi.insurance.util.CONTENT_DATA_JSON_STRING import com.navi.insurance.util.Constants +import com.navi.insurance.util.logGiAppErrorEvent import com.navi.insurance.util.pxToDp import com.navi.naviwidgets.callbacks.WidgetCallback import com.navi.naviwidgets.composewidget.reusable.darkShadowColor @@ -252,6 +253,13 @@ class PolicySelectorBottomsheet : BaseBottomSheet(), WidgetCallback { VENDOR_NAVI_API, isDownTime = true ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = GiErrorMetaData.GET_JSON_OBJECT, + errorDes = error.stackTrace.getOrNull(0).toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } override val screenName = InsuranceAnalyticsConstants.POLICY_SELECTOR_BOTTOMSHEET diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/TIExplainerBottomSheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/TIExplainerBottomSheet.kt index 5ca5059999..cbc2e3a4f9 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/TIExplainerBottomSheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/TIExplainerBottomSheet.kt @@ -48,6 +48,7 @@ import com.navi.insurance.databinding.LayoutClaimsStepsBottomSheetBinding import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator import com.navi.insurance.util.CONTENT_DATA_JSON_STRING import com.navi.insurance.util.Constants +import com.navi.insurance.util.logGiAppErrorEvent import com.navi.naviwidgets.callbacks.WidgetCallback import com.navi.naviwidgets.composewidget.reusable.FooterButtonComposable import com.navi.naviwidgets.composewidget.reusable.colorBorderAlt @@ -278,6 +279,13 @@ class TIExplainerBottomSheet : BaseBottomSheet(), WidgetCallback { GiErrorMetaData.GET_JSON_OBJECT, VENDOR_NAVI_API ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = GiErrorMetaData.GET_JSON_OBJECT, + errorDes = error.stackTrace.getOrNull(0).toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } override val screenName = InsuranceAnalyticsConstants.TI_EXPLAINER_BOTTOM_SHEET diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/TabularContentBottomSheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/TabularContentBottomSheet.kt index 7b8227c461..b5dd9fab20 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/TabularContentBottomSheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/TabularContentBottomSheet.kt @@ -44,6 +44,7 @@ import com.navi.insurance.common.models.GiErrorMetaData import com.navi.insurance.common.models.TabularContentBottomSheetData import com.navi.insurance.databinding.LayoutTabularContentBottomsheetBinding import com.navi.insurance.util.CONTENT_DATA_JSON_STRING +import com.navi.insurance.util.logGiAppErrorEvent import com.navi.naviwidgets.extensions.NaviTextWidgetized import com.navi.naviwidgets.extensions.getJsonObject import com.navi.naviwidgets.extensions.hexToColor @@ -277,6 +278,13 @@ class TabularContentBottomSheet : BaseBottomSheet() { GiErrorMetaData.GET_JSON_OBJECT, VENDOR_NAVI_API ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = GiErrorMetaData.GET_JSON_OBJECT, + errorDes = error.stackTrace.getOrNull(0).toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } override val screenName = InsuranceAnalyticsConstants.TABULAR_CONTENT_BOTTOMSHEET diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/TitleWithFooterCardBottomSheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/TitleWithFooterCardBottomSheet.kt index 075ed2f091..83c02d6936 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/TitleWithFooterCardBottomSheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/TitleWithFooterCardBottomSheet.kt @@ -50,6 +50,7 @@ import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator import com.navi.insurance.pre.purchase.journey.pre.purchase.journey.theme.LocalDimensions import com.navi.insurance.util.CONTENT_DATA_JSON_STRING import com.navi.insurance.util.Constants +import com.navi.insurance.util.logGiAppErrorEvent import com.navi.naviwidgets.callbacks.WidgetCallback import com.navi.naviwidgets.composewidget.reusable.FooterButtonComposable import com.navi.naviwidgets.composewidget.widgets.screenWidth @@ -351,6 +352,13 @@ class TitleWithFooterCardBottomSheet : BaseBottomSheet(), WidgetCallback { GiErrorMetaData.GET_JSON_OBJECT, VENDOR_NAVI_API ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = GiErrorMetaData.GET_JSON_OBJECT, + errorDes = error.stackTrace.getOrNull(0).toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } override val screenName = InsuranceAnalyticsConstants.TITLE_WITH_FOOTER_CARD_BOTTOMSHEET diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/TitleWithGridBottomSheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/TitleWithGridBottomSheet.kt index 0216f2aa57..896f317887 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/TitleWithGridBottomSheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/TitleWithGridBottomSheet.kt @@ -54,6 +54,7 @@ import com.navi.insurance.databinding.LayoutClaimsStepsBottomSheetBinding import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator import com.navi.insurance.util.CONTENT_DATA_JSON_STRING import com.navi.insurance.util.Constants +import com.navi.insurance.util.logGiAppErrorEvent import com.navi.naviwidgets.callbacks.WidgetCallback import com.navi.naviwidgets.extensions.NaviImage import com.navi.naviwidgets.extensions.NaviTextWidgetized @@ -221,6 +222,13 @@ class TitleWithGridBottomSheet : BaseBottomSheet(), WidgetCallback { GiErrorMetaData.GET_JSON_OBJECT, VENDOR_NAVI_API ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = GiErrorMetaData.GET_JSON_OBJECT, + errorDes = error.stackTrace.getOrNull(0).toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } override val screenName = InsuranceAnalyticsConstants.TITLE_WITH_GRID_BOTTOM_SHEET diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/TitleWithImageListBottomSheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/TitleWithImageListBottomSheet.kt index f9720cdf81..2065cf8d8d 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/TitleWithImageListBottomSheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/TitleWithImageListBottomSheet.kt @@ -47,6 +47,7 @@ import com.navi.insurance.databinding.LayoutClaimsStepsBottomSheetBinding import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator import com.navi.insurance.util.CONTENT_DATA_JSON_STRING import com.navi.insurance.util.Constants +import com.navi.insurance.util.logGiAppErrorEvent import com.navi.insurance.util.pxToDp import com.navi.naviwidgets.callbacks.WidgetCallback import com.navi.naviwidgets.composewidget.reusable.FooterButtonComposable @@ -204,6 +205,13 @@ class TitleWithImageListBottomSheet : BaseBottomSheet(), WidgetCallback { GiErrorMetaData.GET_JSON_OBJECT, VENDOR_NAVI_API ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = GiErrorMetaData.GET_JSON_OBJECT, + errorDes = error.stackTrace.getOrNull(0).toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } override val screenName = InsuranceAnalyticsConstants.TITLE_WITH_IMAGE_LIST_BOTTOM_SHEET diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/TrialInfoBottomSheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/TrialInfoBottomSheet.kt index 657ee61373..ec0ace15d9 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/TrialInfoBottomSheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/TrialInfoBottomSheet.kt @@ -56,6 +56,7 @@ import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator import com.navi.insurance.util.CONTENT_DATA_JSON_STRING import com.navi.insurance.util.Constants import com.navi.insurance.util.PAGE_TYPE +import com.navi.insurance.util.logGiAppErrorEvent import com.navi.naviwidgets.callbacks.WidgetCallback import com.navi.naviwidgets.composewidget.reusable.CardWithTitleBulletPointsEndTag import com.navi.naviwidgets.composewidget.reusable.GREEN_TURQUOISE @@ -243,6 +244,13 @@ class TrialInfoBottomSheet : BaseBottomSheet(), WidgetCallback { GiErrorMetaData.GET_JSON_OBJECT, VENDOR_NAVI_API ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = GiErrorMetaData.GET_JSON_OBJECT, + errorDes = error.stackTrace.getOrNull(0).toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } override val screenName = TRIAL_INFO_BOTTOM_SHEET diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/UITronBottomSheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/UITronBottomSheet.kt index fa17a54551..14074810c2 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/UITronBottomSheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/bottom_sheet/UITronBottomSheet.kt @@ -37,6 +37,7 @@ import com.navi.insurance.common.viewmodel.UITronBottomSheetVM import com.navi.insurance.databinding.LayoutClaimsStepsBottomSheetBinding import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator import com.navi.insurance.util.CONTENT_DATA_JSON_STRING +import com.navi.insurance.util.logGiAppErrorEvent import com.navi.naviwidgets.callbacks.WidgetCallback import com.navi.uitron.render.UiTronRenderer import dagger.hilt.android.AndroidEntryPoint @@ -129,6 +130,13 @@ class UITronBottomSheet : BaseBottomSheet(), WidgetCallback { GiErrorMetaData.GET_JSON_OBJECT, VENDOR_NAVI_API ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = GiErrorMetaData.GET_JSON_OBJECT, + errorDes = error.stackTrace.getOrNull(0).toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } override val screenName = InsuranceAnalyticsConstants.UITRON_BOTTOM_SHEET diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/AutoPaySetUpBottomSheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/AutoPaySetUpBottomSheet.kt index 52267fd8fa..90c5c280b5 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/AutoPaySetUpBottomSheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/AutoPaySetUpBottomSheet.kt @@ -266,6 +266,13 @@ class AutoPaySetUpBottomSheet : BaseBottomSheet() { GET_JSON_OBJECT, VENDOR_NAVI_API ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = GET_JSON_OBJECT, + errorDes = e.stackTrace.getOrNull(0).toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } return bottomSheetData } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/AutopaySetupBackBottomSheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/AutopaySetupBackBottomSheet.kt index 0df49cf323..fa56210040 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/AutopaySetupBackBottomSheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/AutopaySetupBackBottomSheet.kt @@ -194,6 +194,13 @@ class AutopaySetupBackBottomSheet : BaseBottomSheet() { getJsonObject, VENDOR_NAVI_API ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = getJsonObject, + errorDes = e.stackTrace.getOrNull(0).toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } return bottomSheetData } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/GiSurveyBottomSheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/GiSurveyBottomSheet.kt index d8e9676e1c..115327ad4d 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/GiSurveyBottomSheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/GiSurveyBottomSheet.kt @@ -117,6 +117,13 @@ class GiSurveyBottomSheet : BaseBottomSheet() { GET_JSON_OBJECT, VENDOR_NAVI_API ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = GET_JSON_OBJECT, + errorDes = e.stackTrace.getOrNull(0).toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } return bottomSheetData } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/WebViewFragment.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/WebViewFragment.kt index f0c5d84503..47fd557289 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/WebViewFragment.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/fragment/WebViewFragment.kt @@ -54,6 +54,7 @@ import com.navi.insurance.util.Constants.POLICY_ID import com.navi.insurance.util.Constants.POLICY_PROVIDER_URL import com.navi.insurance.util.Constants.PROPERTY_URL import com.navi.insurance.util.Constants.WEB_VIEW_FAILURE +import com.navi.insurance.util.logGiAppErrorEvent import com.navi.insurance.util.observeNonNull import dagger.hilt.android.AndroidEntryPoint @@ -126,6 +127,13 @@ class WebViewFragment : BaseFragment() { VENDOR_NAVI_API, getExtrasForError() ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = "Policy Id and redirection url are null", + errorDes = getExtrasForError().toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) showErrorToast() } } @@ -142,6 +150,13 @@ class WebViewFragment : BaseFragment() { VENDOR_NAVI_API, getExtrasForError() ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = "Benefit type and redirection url are null", + errorDes = getExtrasForError().toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) showErrorToast() } } @@ -161,6 +176,13 @@ class WebViewFragment : BaseFragment() { VENDOR_NAVI_API, getExtrasForError() ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = "null redirection url received from server", + errorDes = getExtrasForError().toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) showErrorToast() } } @@ -375,6 +397,14 @@ class WebViewFragment : BaseFragment() { VENDOR_MEDIBUDDY, getExtrasForError().apply { put(PROPERTY_URL, url) } ) + logGiAppErrorEvent( + screen = screenName, + errorCode = error?.errorCode.toString(), + errorTitle = methodOnReceiveError, + errorDes = error?.description.toString(), + isSourceExternal = true, + vendor = VENDOR_MEDIBUDDY + ) } } settings.domStorageEnabled = true diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/viewmodel/IncentiviseAutopayVM.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/viewmodel/IncentiviseAutopayVM.kt index b04b782ae7..90e6a986c1 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/viewmodel/IncentiviseAutopayVM.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/viewmodel/IncentiviseAutopayVM.kt @@ -35,6 +35,7 @@ import com.navi.insurance.common.util.NavigationHandler.Companion.SUMMARY_INSURA import com.navi.insurance.models.response.IncentiviseAutopayResponse import com.navi.insurance.network.ApiErrorTagType import com.navi.insurance.util.GiRetroFit +import com.navi.insurance.util.logGiAppErrorEvent import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.CoroutineExceptionHandler @@ -98,6 +99,13 @@ constructor( ApiErrorTagType.FETCH_INCENTIVISE_AUTOPAY_ERROR.value, VENDOR_NAVI_API ) + logGiAppErrorEvent( + screen = screenName.toString(), + errorTitle = ApiErrorTagType.FETCH_INCENTIVISE_AUTOPAY_ERROR.value, + errorDes = throwable.stackTrace.getOrNull(0).toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } viewModelScope.launch { _incentiviseAutopayResponseStateFlow.emit( diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/engagement/hi_quiz/viewmodel/HiQuizVM.kt b/android/navi-insurance/src/main/java/com/navi/insurance/engagement/hi_quiz/viewmodel/HiQuizVM.kt index 17a4183c3e..1317f7c532 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/engagement/hi_quiz/viewmodel/HiQuizVM.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/engagement/hi_quiz/viewmodel/HiQuizVM.kt @@ -23,6 +23,7 @@ import com.navi.insurance.engagement.hi_quiz.models.QuestionnaireResponse import com.navi.insurance.engagement.hi_quiz.models.QuizResultResponse import com.navi.insurance.engagement.hi_quiz.repository.HiQuizRepository import com.navi.insurance.network.ApiErrorTagType +import com.navi.insurance.util.logGiAppErrorEvent import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.CoroutineExceptionHandler @@ -97,6 +98,12 @@ constructor( GiErrorMetaData.HI_QUIZ, errorTag ) + logGiAppErrorEvent( + screen = insuranceAnalyticsHandler?.getCurrentScreen().toString(), + errorTitle = errorTag, + errorDes = exception.message.toString(), + isSourceExternal = false + ) when (errorTag) { ApiErrorTagType.GET_HI_QUIZ_QUESTIONNAIRE_ERROR.value -> { _questionnaireResponseFlow.emit(ResponseState.Failure(errorTag)) diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/engagement/pre_diabetes_check/viewmodel/PreDiabetesVM.kt b/android/navi-insurance/src/main/java/com/navi/insurance/engagement/pre_diabetes_check/viewmodel/PreDiabetesVM.kt index 9cd7946cd6..a59ab64a45 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/engagement/pre_diabetes_check/viewmodel/PreDiabetesVM.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/engagement/pre_diabetes_check/viewmodel/PreDiabetesVM.kt @@ -27,6 +27,7 @@ import com.navi.insurance.engagement.pre_diabetes_check.models.PdSaveScoreRespon import com.navi.insurance.engagement.pre_diabetes_check.repository.PreDiabetesRepository import com.navi.insurance.network.ApiErrorTagType import com.navi.insurance.util.GiRetroFit +import com.navi.insurance.util.logGiAppErrorEvent import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.CoroutineExceptionHandler @@ -101,6 +102,12 @@ constructor( GiErrorMetaData.PRE_DIABETES_CHECKER, errorTag ) + logGiAppErrorEvent( + screen = insuranceAnalyticsHandler?.getCurrentScreen().toString(), + errorTitle = errorTag, + errorDes = exception.message.toString(), + isSourceExternal = false + ) when (errorTag) { ApiErrorTagType.SAVE_PRE_DIABETES_SCORE_ERROR.value -> { _scoreResponseFlow.emit(ResponseState.Failure(errorTag)) diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/external_porting/view_model/PolicyDocumentReviewFragmentVM.kt b/android/navi-insurance/src/main/java/com/navi/insurance/external_porting/view_model/PolicyDocumentReviewFragmentVM.kt index f558e2ae83..efdd794c69 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/external_porting/view_model/PolicyDocumentReviewFragmentVM.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/external_porting/view_model/PolicyDocumentReviewFragmentVM.kt @@ -18,6 +18,7 @@ import com.navi.insurance.common.util.ActionHandler import com.navi.insurance.external_porting.repo.PolicyDocumentUploadRepository import com.navi.insurance.external_porting.states.PolicyDocumentReviewState import com.navi.insurance.network.ApiErrorTagType +import com.navi.insurance.util.logGiAppErrorEvent import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.CoroutineExceptionHandler @@ -49,6 +50,12 @@ constructor( private fun exceptionHandler(tag: String? = null) = CoroutineExceptionHandler { _, exception -> if (tag == ApiErrorTagType.FETCH_UPLOADED_CARD_WIDGETS_ERROR.value) { updateErrorMessage(handleException(exception, tag)) + logGiAppErrorEvent( + screen = insuranceAnalyticsHandler?.getCurrentScreen().toString(), + errorTitle = tag, + errorDes = exception.message.toString(), + isSourceExternal = false + ) } } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/external_porting/view_model/PolicyDocumentUploadFragmentVM.kt b/android/navi-insurance/src/main/java/com/navi/insurance/external_porting/view_model/PolicyDocumentUploadFragmentVM.kt index 546ab51aee..dd2b6ff1d6 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/external_porting/view_model/PolicyDocumentUploadFragmentVM.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/external_porting/view_model/PolicyDocumentUploadFragmentVM.kt @@ -27,6 +27,7 @@ import com.navi.insurance.external_porting.repo.PolicyDocumentUploadRepository import com.navi.insurance.external_porting.states.PolicyDocumentUploadState import com.navi.insurance.models.request.UploadDocumentRequest import com.navi.insurance.network.ApiErrorTagType +import com.navi.insurance.util.logGiAppErrorEvent import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.CoroutineExceptionHandler @@ -79,6 +80,12 @@ constructor( private fun exceptionHandler(tag: String? = null) = CoroutineExceptionHandler { _, exception -> if (tag == ApiErrorTagType.FETCH_UPLOAD_CARD_WIDGETS_ERROR.value) { updateErrorMessage(handleException(exception, tag)) + logGiAppErrorEvent( + screen = insuranceAnalyticsHandler?.getCurrentScreen().toString(), + errorTitle = tag, + errorDes = exception.message.toString(), + isSourceExternal = false + ) } } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/formbase/post_purchase/vm/PostPurchaseFormFragmentVM.kt b/android/navi-insurance/src/main/java/com/navi/insurance/formbase/post_purchase/vm/PostPurchaseFormFragmentVM.kt index e8b9a49315..6095f0bb17 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/formbase/post_purchase/vm/PostPurchaseFormFragmentVM.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/formbase/post_purchase/vm/PostPurchaseFormFragmentVM.kt @@ -24,6 +24,7 @@ import com.navi.common.utils.CommonNaviAnalytics import com.navi.common.utils.CommonNaviAnalytics.Companion.GLOBAL_INTERNAL_ERRORS import com.navi.common.utils.Constants import com.navi.insurance.R +import com.navi.insurance.analytics.InsuranceAnalyticsConstants import com.navi.insurance.common.GiBaseVM import com.navi.insurance.common.models.GiErrorMetaData import com.navi.insurance.common.models.PolicyStatusResponse @@ -49,6 +50,7 @@ import com.navi.insurance.util.PAGE_SOURCE import com.navi.insurance.util.QUOTE_ID_EXTRA import com.navi.insurance.util.SOURCE_TYPE import com.navi.insurance.util.StatusCode +import com.navi.insurance.util.logGiAppErrorEvent import com.navi.insurance.util.showErrorMessageToast import com.navi.naviwidgets.extensions.getJsonObject import dagger.hilt.android.lifecycle.HiltViewModel @@ -362,7 +364,12 @@ constructor( GiErrorMetaData.FLOW_POST_PURCHASE, "performActionFromCta.URL_GI_POLICY_ACTIVATION" ) - + logGiAppErrorEvent( + screen = InsuranceAnalyticsConstants.POLICY_CREATION_FORM_SCREEN, + errorTitle = POLICY_ACTIVATION_ERROR, + errorDes = "performActionFromCta.URL_GI_POLICY_ACTIVATION", + isSourceExternal = false + ) showErrorMessageToast( actionOwner, actionOwner.getString(R.string.something_went_wrong) diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/formbase/renewal/vm/RenewalFormBasedFragmentVM.kt b/android/navi-insurance/src/main/java/com/navi/insurance/formbase/renewal/vm/RenewalFormBasedFragmentVM.kt index 36c8303c0a..c0a5cdface 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/formbase/renewal/vm/RenewalFormBasedFragmentVM.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/formbase/renewal/vm/RenewalFormBasedFragmentVM.kt @@ -31,6 +31,7 @@ import com.navi.insurance.models.response.* import com.navi.insurance.network.ApiErrorTagType import com.navi.insurance.util.StatusCode import com.navi.insurance.util.TRUE +import com.navi.insurance.util.logGiAppErrorEvent import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.CoroutineExceptionHandler @@ -98,6 +99,12 @@ constructor( GiErrorMetaData.FLOW_RENEWAL, errorTag ) + logGiAppErrorEvent( + screen = insuranceAnalyticsHandler?.getCurrentScreen().toString(), + errorTitle = errorTag, + errorDes = exception.message.toString(), + isSourceExternal = false + ) when (errorTag) { ApiErrorTagType.GET_RENEWAL_FORM_DATA.value -> { _formResponseStateFlow.emit(RenewalFormPageResponseState.Error(errorTag)) diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/health/activity/PaymentActivity.kt b/android/navi-insurance/src/main/java/com/navi/insurance/health/activity/PaymentActivity.kt index 38bb9ea5f0..68732568e7 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/health/activity/PaymentActivity.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/health/activity/PaymentActivity.kt @@ -118,6 +118,7 @@ import com.navi.insurance.util.SPACE import com.navi.insurance.util.TRUE import com.navi.insurance.util.fadeOut import com.navi.insurance.util.log +import com.navi.insurance.util.logGiAppErrorEvent import com.navi.insurance.util.observeNonNull import com.navi.insurance.util.showErrorMessageToast import com.navi.insurance.util.toJuspayProcessPayload @@ -960,6 +961,14 @@ class PaymentActivity : put(NaviInsuranceAnalytics.DESCRIPTION, description) } ) + logGiAppErrorEvent( + screen = screenName, + errorCode = code.toString(), + errorTitle = methodRazorPayError, + errorDes = reason, + isSourceExternal = true, + vendor = VENDOR_GI_RAZORPAY + ) } if (paymentType == PolicyPaymentType.AUTO_PAY) paymentVM.getMandateStatus( @@ -1448,6 +1457,13 @@ class PaymentActivity : put(NaviInsuranceAnalytics.APPLICATION_TYPE, applicationType.orEmpty()) } ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = methodPayUError, + errorDes = Gson().toJson(response), + isSourceExternal = true, + vendor = VENDOR_GI_PAYU + ) onPaymentError() } @@ -1651,6 +1667,13 @@ class PaymentActivity : put(NaviInsuranceAnalytics.APPLICATION_TYPE, applicationType.orEmpty()) } ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = methodJuspayError, + errorDes = status, + isSourceExternal = true, + vendor = VENDOR_GI_JUSPAY + ) } override fun onJusPayPaymentCancel(status: String?) { diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/health/adapter/PolicyDocumentsRecyclerViewFragment.kt b/android/navi-insurance/src/main/java/com/navi/insurance/health/adapter/PolicyDocumentsRecyclerViewFragment.kt index d35b222792..aa2b1d9a21 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/health/adapter/PolicyDocumentsRecyclerViewFragment.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/health/adapter/PolicyDocumentsRecyclerViewFragment.kt @@ -169,6 +169,12 @@ class PolicyDocumentsRecyclerViewFragment : GiBaseFragment(), View.OnClickListen GiErrorMetaData.FLOW_POLICY_DOCUMENTS, "initRecyclerview" ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = ex.toString(), + errorDes = "initRecyclerview", + isSourceExternal = false + ) context?.let { showErrorMessageToast(it, null) } } } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/EmiInfoBottomSheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/EmiInfoBottomSheet.kt index 21e2301c8c..e05a670608 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/EmiInfoBottomSheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/EmiInfoBottomSheet.kt @@ -26,6 +26,7 @@ import com.navi.insurance.databinding.EmiInfoBottomSheetBinding import com.navi.insurance.models.response.BottomSheetWidgetContent import com.navi.insurance.util.CONTENT_DATA_JSON_STRING import com.navi.insurance.util.Constants +import com.navi.insurance.util.logGiAppErrorEvent import com.navi.naviwidgets.extensions.getJsonObject import dagger.hilt.android.AndroidEntryPoint @@ -82,6 +83,13 @@ class EmiInfoBottomSheet : BaseBottomSheet() { GiErrorMetaData.GET_JSON_OBJECT, VENDOR_NAVI_API ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = GiErrorMetaData.GET_JSON_OBJECT, + errorDes = error.stackTrace.getOrNull(0).toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } private fun initUI( diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/FullPaymentInfoBottomSheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/FullPaymentInfoBottomSheet.kt index 687a8eeed7..5b277f7d99 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/FullPaymentInfoBottomSheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/FullPaymentInfoBottomSheet.kt @@ -25,6 +25,7 @@ import com.navi.insurance.databinding.FullPaymentInfoBottomSheetBinding import com.navi.insurance.models.response.FullPaymentInfoBottomSheetResponse import com.navi.insurance.util.CONTENT_DATA_JSON_STRING import com.navi.insurance.util.Constants +import com.navi.insurance.util.logGiAppErrorEvent import com.navi.naviwidgets.extensions.getJsonObject import dagger.hilt.android.AndroidEntryPoint @@ -71,6 +72,13 @@ class FullPaymentInfoBottomSheet : BaseBottomSheet() { GiErrorMetaData.GET_JSON_OBJECT, VENDOR_NAVI_API ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = GiErrorMetaData.GET_JSON_OBJECT, + errorDes = error.stackTrace.getOrNull(0).toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } override val screenName: String diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/PaymentAttentionBottomSheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/PaymentAttentionBottomSheet.kt index 51cbd7953f..2d92e416a7 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/PaymentAttentionBottomSheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/PaymentAttentionBottomSheet.kt @@ -37,6 +37,7 @@ import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator import com.navi.insurance.util.CONTENT_DATA_JSON_STRING import com.navi.insurance.util.Constants import com.navi.insurance.util.GiFirebaseRemoteConfigConstants +import com.navi.insurance.util.logGiAppErrorEvent import com.navi.naviwidgets.R as WidgetsR import com.navi.naviwidgets.databinding.TextItemBinding import com.navi.naviwidgets.extensions.getJsonObject @@ -85,6 +86,13 @@ class PaymentAttentionBottomSheet : BaseBottomSheet() { GiErrorMetaData.GET_JSON_OBJECT, VENDOR_NAVI_API ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = GiErrorMetaData.GET_JSON_OBJECT, + errorDes = error.stackTrace.getOrNull(0).toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } private fun showUi(bottomSheetDataResponse: TeleHRABottomSheetResponse) { diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/PaymentMethodSelectionFragment.kt b/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/PaymentMethodSelectionFragment.kt index 0c7937f876..ee867e10f8 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/PaymentMethodSelectionFragment.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/PaymentMethodSelectionFragment.kt @@ -63,6 +63,7 @@ import com.navi.insurance.util.* import com.navi.insurance.util.Constants.ACTIVITY_IS_NULL import com.navi.insurance.util.Constants.FREE_INSURANCE import com.navi.insurance.util.Constants.PAYMENT_METHOD_ARGS_NULL +import com.navi.insurance.util.Constants.RESOURCE_NOT_FOUND import com.navi.naviwidgets.R as WidgetsR import com.navi.naviwidgets.extensions.setImageFieldData import com.navi.naviwidgets.extensions.setTextFieldData @@ -126,7 +127,12 @@ class PaymentMethodSelectionFragment : GiErrorMetaData.FLOW_PAYMENT, "onCreateView" ) - + logGiAppErrorEvent( + screen = screenName, + errorTitle = PAYMENT_METHOD_ARGS_NULL, + errorDes = GiErrorMetaData.FLOW_PAYMENT, + isSourceExternal = false + ) Toast.makeText(requireContext(), "Oops, something went wrong!", Toast.LENGTH_SHORT) .show() activity?.onBackPressed() @@ -369,7 +375,7 @@ class PaymentMethodSelectionFragment : .setImageResource(imgRes) } else { errorTracker.onGlobalError( - "Resource not found", + RESOURCE_NOT_FOUND, screenName, ModuleName.GI.name, GLOBAL_INTERNAL_ERRORS, @@ -379,6 +385,12 @@ class PaymentMethodSelectionFragment : methodInitViews, extras = mutableMapOf(Pair(keyIcon, icon)) ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = RESOURCE_NOT_FOUND, + errorDes = "Resource not found for icon : $icon", + isSourceExternal = false + ) } binding.llAddons.addView(coverLineItem, binding.llAddons.childCount) } @@ -900,7 +912,12 @@ class PaymentMethodSelectionFragment : GiErrorMetaData.FLOW_PAYMENT, "setListeners" ) - + logGiAppErrorEvent( + screen = screenName, + errorTitle = ACTIVITY_IS_NULL, + errorDes = GiErrorMetaData.FLOW_PAYMENT, + isSourceExternal = false + ) Toast.makeText( context, requireContext() diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/PolicyActivationFragment.kt b/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/PolicyActivationFragment.kt index eacffd8927..83989abb8d 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/PolicyActivationFragment.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/PolicyActivationFragment.kt @@ -175,6 +175,12 @@ class PolicyActivationFragment : BaseFragment() { GiErrorMetaData.FLOW_POLICY_ACTIVATION, "onCreateView" ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = GiErrorMetaData.FLOW_POLICY_ACTIVATION, + errorDes = SYNC_DUE_DATE_ERROR, + isSourceExternal = false + ) showErrorMessageToast(context, getString(R.string.oops_something_went_wrong)) } } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/PolicySummaryCheckoutFragment.kt b/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/PolicySummaryCheckoutFragment.kt index 134ac1ce1f..cfd835b1ff 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/PolicySummaryCheckoutFragment.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/PolicySummaryCheckoutFragment.kt @@ -39,6 +39,7 @@ import com.navi.insurance.quoteredesign.QuoteActivity import com.navi.insurance.util.* import com.navi.insurance.util.Constants.ACTIVITY_IS_NULL import com.navi.insurance.util.Constants.REQUIRED_ARGS_NULL +import com.navi.insurance.util.Constants.RESOURCE_NOT_FOUND import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.delay import kotlinx.coroutines.launch @@ -241,7 +242,7 @@ class PolicySummaryCheckoutFragment : BaseFragment() { CommonNaviAnalytics.naviAnalytics .GiError() .onGlobalError( - "Resource not found", + RESOURCE_NOT_FOUND, screenName, ModuleName.GI.name, GLOBAL_INTERNAL_ERRORS, @@ -251,6 +252,12 @@ class PolicySummaryCheckoutFragment : BaseFragment() { methodInitViews, extras = mutableMapOf(Pair(keyIcon, icon)) ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = RESOURCE_NOT_FOUND, + errorDes = "Resource not found for icon: $icon", + isSourceExternal = false + ) } binding.llAddons.addView(coverLineItem, binding.llAddons.childCount) } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/SearchByLocationFragment.kt b/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/SearchByLocationFragment.kt index 6c72d3cb19..f4a8bf21d7 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/SearchByLocationFragment.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/SearchByLocationFragment.kt @@ -33,6 +33,7 @@ import com.navi.insurance.R import com.navi.insurance.analytics.InsuranceAnalyticsConstants import com.navi.insurance.databinding.FragmentSearchByLocationBinding import com.navi.insurance.health.adapter.PlacePredictionAdapter +import com.navi.insurance.util.logGiAppErrorEvent import dagger.hilt.android.AndroidEntryPoint import java.util.Arrays @@ -159,6 +160,15 @@ class SearchByLocationFragment : BaseFragment() { "addOnFailureListener", extras = mutableMapOf(Pair(SCREEN_NAME, screenName)) ) + logGiAppErrorEvent( + screen = screenName, + errorCode = exception.statusCode.toString(), + errorTitle = exception.message.orEmpty(), + errorDes = "addOnFailureListener", + isSourceExternal = true, + vendor = "placesClient", + exception = exception.toString() + ) Toast.makeText(context, "Sorry, place not found", Toast.LENGTH_SHORT).show() } } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/UpdatedPremiumBottomSheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/UpdatedPremiumBottomSheet.kt index 8f03b83b76..0173975b1f 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/UpdatedPremiumBottomSheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/health/fragment/UpdatedPremiumBottomSheet.kt @@ -34,6 +34,7 @@ import com.navi.insurance.models.response.UpdatePremiumBottomSheetData import com.navi.insurance.navigator.NaviInsuranceDeeplinkNavigator import com.navi.insurance.util.CONTENT_DATA_JSON_STRING import com.navi.insurance.util.Constants +import com.navi.insurance.util.logGiAppErrorEvent import com.navi.naviwidgets.extensions.getJsonObject import com.navi.naviwidgets.extensions.setTextFieldData import dagger.hilt.android.AndroidEntryPoint @@ -80,6 +81,13 @@ class UpdatedPremiumBottomSheet : BaseBottomSheet() { GiErrorMetaData.GET_JSON_OBJECT, VENDOR_NAVI_API ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = GiErrorMetaData.GET_JSON_OBJECT, + errorDes = error.stackTrace.getOrNull(0).toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } private fun showUI(bottomSheetDataResponse: UpdatePremiumBottomSheetData) { diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/health/viewmodel/FeedbackFormVM.kt b/android/navi-insurance/src/main/java/com/navi/insurance/health/viewmodel/FeedbackFormVM.kt index f4327d9db0..458e3dc63a 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/health/viewmodel/FeedbackFormVM.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/health/viewmodel/FeedbackFormVM.kt @@ -18,6 +18,7 @@ import com.navi.insurance.common.util.ActionHandler import com.navi.insurance.health.repository.FeedbackFormRepository import com.navi.insurance.models.response.FeedbackFormResponse import com.navi.insurance.network.ApiErrorTagType +import com.navi.insurance.util.logGiAppErrorEvent import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.CoroutineExceptionHandler @@ -51,6 +52,12 @@ constructor( GiErrorMetaData.FEEDBACK_FORM, errorTag ) + logGiAppErrorEvent( + screen = insuranceAnalyticsHandler?.getCurrentScreen().toString(), + errorTitle = errorTag, + errorDes = exception.message.toString(), + isSourceExternal = false + ) when (errorTag) { ApiErrorTagType.GET_FEEDBACK_FORM_RESPONSE.value -> { _feedbackFormFlow.emit(FeedbackFormState.Error(errorTag)) diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/kyc/viewModel/AadhaarVerificationVM.kt b/android/navi-insurance/src/main/java/com/navi/insurance/kyc/viewModel/AadhaarVerificationVM.kt index 7334463554..61979bbe8e 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/kyc/viewModel/AadhaarVerificationVM.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/kyc/viewModel/AadhaarVerificationVM.kt @@ -32,6 +32,7 @@ import com.navi.insurance.models.response.AadhaarVerificationResponse import com.navi.insurance.models.response.AadhaarVerifyInitDetails import com.navi.insurance.models.response.FormNextPageResponse import com.navi.insurance.network.ApiErrorTagType +import com.navi.insurance.util.logGiAppErrorEvent import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.CoroutineExceptionHandler @@ -102,6 +103,13 @@ constructor( ApiErrorTagType.FETCH_INCENTIVISE_AUTOPAY_ERROR.value, VENDOR_NAVI_API ) + logGiAppErrorEvent( + screen = screenName.toString(), + errorTitle = ApiErrorTagType.FETCH_INCENTIVISE_AUTOPAY_ERROR.value, + errorDes = throwable.stackTrace.getOrNull(0).toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } viewModelScope.launch { _aadhaarVerificationInitResponseStateFlow.emit( diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/member_name_dob_details/data/MemberNameDobVM.kt b/android/navi-insurance/src/main/java/com/navi/insurance/member_name_dob_details/data/MemberNameDobVM.kt index 7e5491d91c..3c49f9c73f 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/member_name_dob_details/data/MemberNameDobVM.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/member_name_dob_details/data/MemberNameDobVM.kt @@ -22,6 +22,7 @@ import com.navi.insurance.models.response.MemberData import com.navi.insurance.models.response.NameDobResponse import com.navi.insurance.models.response.PolicyIncompleteMemberDetails import com.navi.insurance.network.ApiErrorTagType +import com.navi.insurance.util.logGiAppErrorEvent import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.CoroutineExceptionHandler @@ -66,6 +67,12 @@ constructor( ApiErrorTagType.MEMBER_NAME_DOB_SCREEN_LOAD_ERROR.value, errorTag ) + logGiAppErrorEvent( + screen = insuranceAnalyticsHandler?.getCurrentScreen().toString(), + errorTitle = errorTag, + errorDes = exception.message.toString(), + isSourceExternal = false + ) when (errorTag) { ApiErrorTagType.MEMBER_NAME_DOB_SCREEN_LOAD_ERROR.value -> { _memberNameDobFlow.emit(ResponseState.Failure(errorTag)) diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/new_hospital_experience/viewmodel/NewHospitalsVM.kt b/android/navi-insurance/src/main/java/com/navi/insurance/new_hospital_experience/viewmodel/NewHospitalsVM.kt index 4cceafffba..fe7ac4bb7c 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/new_hospital_experience/viewmodel/NewHospitalsVM.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/new_hospital_experience/viewmodel/NewHospitalsVM.kt @@ -36,6 +36,7 @@ import com.navi.insurance.new_hospital_experience.model.response.HospitalSearchR import com.navi.insurance.new_hospital_experience.paging.HospitalsListSource import com.navi.insurance.new_hospital_experience.repository.NewHospitalsRepository import com.navi.insurance.new_hospital_experience.view.getLocalityFromLocation +import com.navi.insurance.util.logGiAppErrorEvent import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.CoroutineExceptionHandler @@ -128,6 +129,12 @@ constructor( GiErrorMetaData.NEW_HOSPITALS_EXPERIENCE, errorTag ) + logGiAppErrorEvent( + screen = insuranceAnalyticsHandler?.getCurrentScreen().toString(), + errorTitle = errorTag, + errorDes = exception.message.toString(), + isSourceExternal = false + ) when (errorTag) { ApiErrorTagType.GET_HOSPITALS_PAGE_DATA_ERROR.value -> { // Data load error from app diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/payment/PaymentStatusBottomSheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/payment/PaymentStatusBottomSheet.kt index 304d957f6a..2e3dafae51 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/payment/PaymentStatusBottomSheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/payment/PaymentStatusBottomSheet.kt @@ -84,6 +84,13 @@ class PaymentStatusBottomSheet : BaseBottomSheet() { GiErrorMetaData.GET_JSON_OBJECT, VENDOR_NAVI_API ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = GiErrorMetaData.GET_JSON_OBJECT, + errorDes = error.stackTrace.getOrNull(0).toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } override fun onStart() { diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/PreQuoteJourneyRespository.kt b/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/PreQuoteJourneyRespository.kt index c3268c8f89..10342636d6 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/PreQuoteJourneyRespository.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/PreQuoteJourneyRespository.kt @@ -7,6 +7,7 @@ package com.navi.insurance.pre.purchase.journey +import com.navi.common.checkmate.model.MetricInfo import com.navi.common.network.models.RepoResult import com.navi.common.network.retrofit.ResponseCallback import com.navi.insurance.network.retrofit.RetrofitService @@ -55,13 +56,15 @@ class PreQuoteJourneyRespository @Inject constructor(private val apiService: Ret formRequest: FormWidgetRequest, preQuoteId: String, transitionName: String, + metricInfo: MetricInfo.InsuranceMetricInfo? = null ): RepoResult { return apiResponseCallback( apiService.nextPagePreQuote( preQuoteId, transitionName, formRequest, - ) + ), + metricInfo ) } } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/ui/PreQuoteJourneyViewModel.kt b/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/ui/PreQuoteJourneyViewModel.kt index 57cc3bffe0..7d06d440f0 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/ui/PreQuoteJourneyViewModel.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/pre/purchase/journey/ui/PreQuoteJourneyViewModel.kt @@ -16,8 +16,10 @@ import com.navi.base.utils.isNotNull import com.navi.base.utils.isNotNullAndNotEmpty import com.navi.base.utils.isNull import com.navi.base.utils.orFalse +import com.navi.common.checkmate.model.MetricInfo import com.navi.common.model.PermissionVerticalType import com.navi.common.network.models.RepoResult +import com.navi.common.network.models.isSuccessWithData import com.navi.common.repo.PermissionSubmitRepository import com.navi.insurance.common.GiBaseVM import com.navi.insurance.common.models.GiErrorMetaData @@ -361,11 +363,17 @@ constructor( Dispatchers.IO + exceptionHandler(ApiErrorTagType.NEW_FORM_NEXT_PAGE_API_ERROR.value) ) { + val metricInfo = + MetricInfo.InsuranceMetricInfo( + screen = "PreQuoteJourneyViewModel", + isNae = { !it.isSuccessWithData() && it.statusCode != ERROR_CODE_400 } + ) val response = repository.makeNextPageFormRequest( formRequest = it, preQuoteId = preQuoteId.orEmpty(), - transitionName = transitionName.orEmpty() + transitionName = transitionName.orEmpty(), + metricInfo = metricInfo ) response?.let { pageResponse -> if ( diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/quoteredesign/fragments/QuoteOfferFragment.kt b/android/navi-insurance/src/main/java/com/navi/insurance/quoteredesign/fragments/QuoteOfferFragment.kt index 39df69ab3f..91bf040fe7 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/quoteredesign/fragments/QuoteOfferFragment.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/quoteredesign/fragments/QuoteOfferFragment.kt @@ -107,6 +107,7 @@ import com.navi.insurance.util.QUOTE_ID_EXTRA import com.navi.insurance.util.SingleEvent import com.navi.insurance.util.VIDEO_ID_EXTRA import com.navi.insurance.util.launchHelpCenter +import com.navi.insurance.util.logGiAppErrorEvent import com.navi.insurance.util.observeNonNull import com.navi.naviwidgets.callbacks.WidgetCallback import com.navi.naviwidgets.extensions.FloatingButtonOverlay @@ -876,6 +877,13 @@ class QuoteOfferFragment : BaseFragment(), WidgetCallback, View.OnClickListener methodUpdateQuoteWithSumInsured, VENDOR_NAVI_API ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = REQUIRED_ARGS_NULL, + errorDes = methodUpdateQuoteWithSumInsured, + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } } @@ -908,6 +916,13 @@ class QuoteOfferFragment : BaseFragment(), WidgetCallback, View.OnClickListener "updateQuoteDetailsWithPlan", VENDOR_NAVI_API ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = REQUIRED_ARGS_NULL, + errorDes = "updateQuoteDetailsWithPlan", + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/quoteredesign/fragments/QuotePremiumDetailsBottomSheet.kt b/android/navi-insurance/src/main/java/com/navi/insurance/quoteredesign/fragments/QuotePremiumDetailsBottomSheet.kt index 3b4d35ae02..4a8f0e1de3 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/quoteredesign/fragments/QuotePremiumDetailsBottomSheet.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/quoteredesign/fragments/QuotePremiumDetailsBottomSheet.kt @@ -33,6 +33,7 @@ import com.navi.insurance.health.viewmodel.QuoteVM import com.navi.insurance.models.response.QuoteFooterInfoData import com.navi.insurance.util.CONTENT_DATA_JSON_STRING import com.navi.insurance.util.Constants +import com.navi.insurance.util.logGiAppErrorEvent import com.navi.naviwidgets.extensions.getJsonObject import com.navi.naviwidgets.extensions.setTextFieldData import com.navi.naviwidgets.models.response.TextFieldData @@ -138,6 +139,13 @@ class QuotePremiumDetailsBottomSheet : BaseBottomSheet(), View.OnClickListener { GiErrorMetaData.GET_JSON_OBJECT, VENDOR_NAVI_API ) + logGiAppErrorEvent( + screen = screenName, + errorTitle = GiErrorMetaData.GET_JSON_OBJECT, + errorDes = error.stackTrace.getOrNull(0).toString(), + isSourceExternal = true, + vendor = VENDOR_NAVI_API + ) } private fun addDivider() { diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/static_digital_claim/viewmodel/DigitalClaimVM.kt b/android/navi-insurance/src/main/java/com/navi/insurance/static_digital_claim/viewmodel/DigitalClaimVM.kt index 609d06890d..14aadf3a33 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/static_digital_claim/viewmodel/DigitalClaimVM.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/static_digital_claim/viewmodel/DigitalClaimVM.kt @@ -25,6 +25,7 @@ import com.navi.insurance.network.ApiErrorTagType import com.navi.insurance.static_digital_claim.model.DigitalClaimScreenResponse import com.navi.insurance.static_digital_claim.repository.DigitalClaimRepository import com.navi.insurance.util.GiRetroFit +import com.navi.insurance.util.logGiAppErrorEvent import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.CoroutineExceptionHandler @@ -68,6 +69,12 @@ constructor( GiErrorMetaData.FLOW_STATIC_DIGITAL_CLAIM, errorTag ) + logGiAppErrorEvent( + screen = insuranceAnalyticsHandler?.getCurrentScreen().toString(), + errorTitle = errorTag, + errorDes = exception.message.toString(), + isSourceExternal = false + ) when (errorTag) { ApiErrorTagType.STATIC_DIGITAL_CLAIM_ERROR.value -> { _responseDataFlow.emit(ResponseState.Failure(errorTag)) diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/util/Constants.kt b/android/navi-insurance/src/main/java/com/navi/insurance/util/Constants.kt index 8259ce6cda..44c06e65c3 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/util/Constants.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/util/Constants.kt @@ -280,6 +280,7 @@ object Constants { const val RETRY = "Retry" const val ERROR_CTA = "errorCta" const val HOME_VISIT_SCREEN = "home_visit_screen" + const val RESOURCE_NOT_FOUND = "Resource not found" // This is required for animating a component for Health risk score val numberConstant: List = diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/util/Utility.kt b/android/navi-insurance/src/main/java/com/navi/insurance/util/Utility.kt index 17b90158ba..65a6ed8998 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/util/Utility.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/util/Utility.kt @@ -43,6 +43,9 @@ import com.navi.base.model.CtaData import com.navi.base.model.LineItem import com.navi.base.utils.orFalse import com.navi.base.utils.orZero +import com.navi.common.checkmate.core.CheckMateManager +import com.navi.common.checkmate.model.MetricInfo +import com.navi.common.checkmate.model.MetricSource import com.navi.common.network.ApiConstants.API_CODE_ERROR import com.navi.common.network.ApiConstants.API_CODE_SOCKET_TIMEOUT import com.navi.common.network.ApiConstants.NO_INTERNET @@ -609,3 +612,23 @@ fun getTitleDescBottomSheetCta(title: String?, description: String?, buttonText: parameters = listOf(LineItem(CONTENT_DATA_JSON_STRING, json)) ) } + +fun logGiAppErrorEvent( + screen: String, + errorCode: String? = null, + errorTitle: String? = null, + errorDes: String? = null, + isSourceExternal: Boolean = false, + vendor: String? = null, + exception: String? = null +) { + CheckMateManager.logAppErrorEvent( + metricInfo = MetricInfo.InsuranceMetricInfo(screen = screen), + errorCode = errorCode.orEmpty(), + errorTitle = Constants.SOMETHING_WENT_WRONG, + errorDes = errorDes.orEmpty(), + source = if (isSourceExternal) MetricSource.EXTERNAL else MetricSource.INTERNAL, + vendor = vendor, + exception = errorTitle.orEmpty() + ) +}