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" }