From 0d45425a15f264b4125162cd4b46c56138ecc965 Mon Sep 17 00:00:00 2001 From: snehabanka <129893809+snehabanka@users.noreply.github.com> Date: Thu, 27 Apr 2023 13:41:45 +0530 Subject: [PATCH] TP-12345 | Added SCREEN TRANSITION METRICS --- .../java/com/navi/alfred/AlfredManager.kt | 25 +++++++++++++++++++ .../com/navi/alfred/utils/AlfredConstants.kt | 4 +++ 2 files changed, 29 insertions(+) diff --git a/navi-alfred/src/main/java/com/navi/alfred/AlfredManager.kt b/navi-alfred/src/main/java/com/navi/alfred/AlfredManager.kt index 24221ac..aedd4c1 100644 --- a/navi-alfred/src/main/java/com/navi/alfred/AlfredManager.kt +++ b/navi-alfred/src/main/java/com/navi/alfred/AlfredManager.kt @@ -805,6 +805,31 @@ object AlfredManager { } } + fun handleScreenTransitionEvent( + currentScreenName: String?, previousScreenName: String?, screenTransitionDuration: Long + ) { + if (config.getAlfredStatus() && config.getMetricsApiEnableStatus()) { + val screenTransitionAttributes: HashMap = hashMapOf() + screenTransitionAttributes.apply { + this[AlfredConstants.CURRENT_SCREEN_NAME] = currentScreenName.orEmpty() + this[AlfredConstants.PREVIOUS_SCREEN_NAME] = previousScreenName.orEmpty() + this[AlfredConstants.LOAD_TIME] = screenTransitionDuration + } + coroutineDispatcher.executor.execute { + val screenTransitionEvent = buildAppPerformanceEvent( + eventName = AlfredConstants.SCREEN_TRANSITION_METRICS, + attribute = screenTransitionAttributes, + eventType = AlfredConstants.SCREEN_TRANSITION_METRICS + ) + AlfredDispatcher.addTaskToQueue( + AddMetricTask( + screenTransitionEvent, applicationContext + ) + ) + } + } + } + fun handleAnrEvent( anrEventProperties: Map, anrView: View, screenName: String? = null ) { diff --git a/navi-alfred/src/main/java/com/navi/alfred/utils/AlfredConstants.kt b/navi-alfred/src/main/java/com/navi/alfred/utils/AlfredConstants.kt index cdc0099..530136b 100644 --- a/navi-alfred/src/main/java/com/navi/alfred/utils/AlfredConstants.kt +++ b/navi-alfred/src/main/java/com/navi/alfred/utils/AlfredConstants.kt @@ -37,6 +37,7 @@ object AlfredConstants { const val ALFRED_SESSION_ID = "ALFRED_SESSION_ID" const val API_METRIC_EVENT_NAME = "API_METRIC_EVENT" const val API_METRICS = "API_METRICS" + const val SCREEN_TRANSITION_METRICS = "SCREEN_TRANSITION_METRICS" const val SESSION_START_RECORDING_TIME = "SESSION_START_RECORDING_TIME" const val EVENT_START_RECORDING_TIME = "EVENT_START_RECORDING_TIME" const val URL = "url" @@ -68,5 +69,8 @@ object AlfredConstants { const val ZIP_FILE_EXTENSION = ".zip" const val IMAGE_FILE_EXTENSION = ".jpeg" const val SYNC_EVENT_TASK = "SyncEventTask" + const val CURRENT_SCREEN_NAME = "current_screen_name" + const val PREVIOUS_SCREEN_NAME = "previous_screen_name" + const val LOAD_TIME = "load_time_in_ms" }