From 2aafa8348cc1e3bd23e5ebe04e7925f068e6ceda Mon Sep 17 00:00:00 2001 From: A Shrihari Raju Date: Wed, 20 Nov 2024 01:01:24 +0530 Subject: [PATCH] NTP-8642 || Oe Changes Refactored (#13367) Co-authored-by: Prajjaval Verma Co-authored-by: Raaj Gopal Co-authored-by: Aman S Co-authored-by: Aman --- .../home/compose/activity/HomePageActivity.kt | 8 ++ .../home/ui/screen/HomeContentFrameRoot.kt | 1 + .../repo/InvestmentsTabV2Repository.kt | 7 +- .../dashboard/viewmodels/InvestmentsVm.kt | 10 +- .../naviapp/home/utils/InvestmentTabEvents.kt | 2 +- .../network/retrofit/ResponseCallback.kt | 8 +- .../common/ui/ApplicationPlatformActivity.kt | 8 +- .../ap/network/retrofit/ApResponseCallback.kt | 12 +- .../amc/common/activity/AmcBaseActivity.kt | 16 +-- .../amc/common/fragment/AmcBaseFragment.kt | 6 - .../fragments/PaymentSummaryFragment.kt | 1 + .../java/com/navi/amc/utils/AmcAnalytics.kt | 2 - .../analytics/utils/NaviAnalyticsHelper.kt | 4 +- .../com/navi/bbps/entry/NaviBbpsActivity.kt | 5 + .../com/navi/bbps/entry/NaviBbpsMainScreen.kt | 2 +- .../com/navi/chat/base/ChatBaseActivity.kt | 3 + .../navi/coin/ui/activity/CoinBaseActivity.kt | 6 + .../compose/navhost/CoinDestinationNavHost.kt | 2 +- .../navi/common/checkmate/model/MetricInfo.kt | 118 ++++++++++++++++++ .../network/retrofit/ResponseCallback.kt | 9 +- .../navi/common/ui/activity/BaseActivity.kt | 3 + .../common/ui/activity/NaviCoreActivity.kt | 17 +++ .../java/com/navi/common/utils/CommonUtils.kt | 8 ++ .../com/navi/cycs/entry/CycsActivity.kt | 5 + .../com/navi/cycs/entry/CycsMainScreen.kt | 2 +- .../java/com/navi/gold/ui/CheckerActivity.kt | 2 +- .../navi/gold/ui/DigitalGoldBuyActivity.kt | 2 +- .../navi/gold/ui/DigitalGoldSellActivity.kt | 2 +- .../navi/gold/ui/DigitalGoldSipActivity.kt | 2 +- .../gold/ui/DigitalGoldTransactionActivity.kt | 2 +- .../navi/insurance/common/GiBaseActivity.kt | 3 + .../insurance/health/activity/BaseActivity.kt | 3 + .../network/retrofit/FormResponseCallback.kt | 8 +- .../com/navi/pay/entry/NaviPayActivity.kt | 5 + .../navi/pay/entry/ui/NaviPayMainScreen.kt | 2 +- .../binding/ui/NaviPayOnboardingActivity.kt | 5 + .../binding/ui/NaviPayOnboardingMainScreen.kt | 2 +- .../activity/NaviPaymentActivity.kt | 5 + .../activity/WebPaymentActivity.kt | 7 +- .../screens/NaviPaymentMainScreen.kt | 2 +- .../navi/rr/common/activity/RRBaseActivity.kt | 6 + .../chains/NetworkResponseProcessorChain.kt | 8 +- .../ui/activity/ReferralDestinationNavHost.kt | 2 +- 43 files changed, 274 insertions(+), 59 deletions(-) diff --git a/android/app/src/main/java/com/naviapp/home/compose/activity/HomePageActivity.kt b/android/app/src/main/java/com/naviapp/home/compose/activity/HomePageActivity.kt index 972a38a19e..e6095b80a8 100644 --- a/android/app/src/main/java/com/naviapp/home/compose/activity/HomePageActivity.kt +++ b/android/app/src/main/java/com/naviapp/home/compose/activity/HomePageActivity.kt @@ -24,6 +24,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import androidx.lifecycle.repeatOnLifecycle import androidx.lifecycle.viewModelScope +import androidx.navigation.NavHostController import com.google.android.play.core.install.model.AppUpdateType import com.google.gson.Gson import com.navi.amc.fundbuy.fragments.FundListingFragmentV2 @@ -218,6 +219,8 @@ class HomePageActivity : @Inject lateinit var permissionsManager: PermissionsManager + lateinit var navController: NavHostController + @Inject lateinit var userDataUploadWorkerUseCase: UserDataUploadWorkerUseCase @Inject lateinit var redirectionUseCase: HomePageRedirectionUseCase @@ -1728,4 +1731,9 @@ class HomePageActivity : else -> Unit } } + + override fun initialiseNavController(navHostController: NavHostController) { + this.navController = navHostController + onNavControllerSet(navHostController) + } } diff --git a/android/app/src/main/java/com/naviapp/home/compose/home/ui/screen/HomeContentFrameRoot.kt b/android/app/src/main/java/com/naviapp/home/compose/home/ui/screen/HomeContentFrameRoot.kt index 2c038eb5ce..4f496456bc 100644 --- a/android/app/src/main/java/com/naviapp/home/compose/home/ui/screen/HomeContentFrameRoot.kt +++ b/android/app/src/main/java/com/naviapp/home/compose/home/ui/screen/HomeContentFrameRoot.kt @@ -48,6 +48,7 @@ fun HomePageContentFrameRoot( ) { val hpStates by homeVM.state.collectAsStateWithLifecycle() val navController = rememberNavController() + activity.initialiseNavController(navController) val selectedTabId by sharedVM.selectedTabId.collectAsStateWithLifecycle() HandleHomeEffects( diff --git a/android/app/src/main/java/com/naviapp/home/dashboard/repo/InvestmentsTabV2Repository.kt b/android/app/src/main/java/com/naviapp/home/dashboard/repo/InvestmentsTabV2Repository.kt index 3bf85565fa..d12c381e95 100644 --- a/android/app/src/main/java/com/naviapp/home/dashboard/repo/InvestmentsTabV2Repository.kt +++ b/android/app/src/main/java/com/naviapp/home/dashboard/repo/InvestmentsTabV2Repository.kt @@ -9,6 +9,7 @@ package com.naviapp.home.dashboard.repo import com.navi.base.model.ActionData import com.navi.base.model.JourneyType +import com.navi.common.checkmate.model.MetricInfo import com.navi.common.model.ModuleNameV2 import com.navi.common.network.models.RepoResult import com.navi.common.utils.Constants.GZIP @@ -24,7 +25,8 @@ constructor(@SuperAppRetroFit private val superAppRetrofitService: RetrofitServi ResponseCallback() { suspend fun fetchInvestmentTabScreenResponse( - screenId: String + screenId: String, + metricInfo: MetricInfo> ): RepoResult { return apiResponseCallback( superAppRetrofitService.fetchInvestmentTabScreenResponse( @@ -32,7 +34,8 @@ constructor(@SuperAppRetroFit private val superAppRetrofitService: RetrofitServi target = ModuleNameV2.ALCHEMIST.name, verticalType = ModuleNameV2.ALCHEMIST.name, screenId = screenId - ) + ), + metricInfo = metricInfo ) } diff --git a/android/app/src/main/java/com/naviapp/home/dashboard/viewmodels/InvestmentsVm.kt b/android/app/src/main/java/com/naviapp/home/dashboard/viewmodels/InvestmentsVm.kt index 4b266fa288..ba54e946d5 100644 --- a/android/app/src/main/java/com/naviapp/home/dashboard/viewmodels/InvestmentsVm.kt +++ b/android/app/src/main/java/com/naviapp/home/dashboard/viewmodels/InvestmentsVm.kt @@ -21,6 +21,7 @@ import com.navi.base.cache.util.NaviSharedDbKeys import com.navi.base.model.CtaData import com.navi.base.utils.isNotNull import com.navi.base.utils.orFalse +import com.navi.common.checkmate.model.MetricInfo import com.navi.common.model.ModuleNameV2 import com.navi.common.model.common.InvestmentTabNudgeData import com.navi.common.network.models.ErrorUnifiedResponse @@ -209,7 +210,14 @@ constructor( } private suspend fun fetchInvestmentTabFromRemote(screenName: String) { - val response = investmentsTabRepository.fetchInvestmentTabScreenResponse(screenName) + val metricInfo = + MetricInfo.AMCMetric( + screen = screenName, + isNae = { !it.isValidResponse() } + ) + + val response = + investmentsTabRepository.fetchInvestmentTabScreenResponse(screenName, metricInfo) if (response.isValidResponse()) { response.data?.let { data -> _statusBarColor.emit(data.metaData?.get(STATUS_BAR_COLOR) ?: YELLOW_COLOR) diff --git a/android/app/src/main/java/com/naviapp/home/utils/InvestmentTabEvents.kt b/android/app/src/main/java/com/naviapp/home/utils/InvestmentTabEvents.kt index fe8e50c080..fe016b4ab1 100644 --- a/android/app/src/main/java/com/naviapp/home/utils/InvestmentTabEvents.kt +++ b/android/app/src/main/java/com/naviapp/home/utils/InvestmentTabEvents.kt @@ -8,7 +8,7 @@ package com.naviapp.home.utils enum class InvestmentTabEvents(val eventName: String) { - INVESTMENT_TAB_INIT_LANDING_PAGE("investment_tab_init_landing_page"), + INVESTMENT_TAB_INIT_LANDING_PAGE("investment_tab_appeared"), INVESTMENT_TAB_SUCCESS("investment_tab_success"), INVESTMENT_TAB_LOADING("investment_tab_loading"), INVESTMENT_TAB_DYNAMIC_CTA_API("investment_tab_dynamic_cta_api"); diff --git a/android/app/src/main/java/com/naviapp/network/retrofit/ResponseCallback.kt b/android/app/src/main/java/com/naviapp/network/retrofit/ResponseCallback.kt index dabe45bac3..e199c89bdd 100644 --- a/android/app/src/main/java/com/naviapp/network/retrofit/ResponseCallback.kt +++ b/android/app/src/main/java/com/naviapp/network/retrofit/ResponseCallback.kt @@ -45,9 +45,11 @@ abstract class ResponseCallback { } catch (e: Exception) { handleException(e, response) } - metricInfo?.let { - CheckMateManager.recordNetworkEvent(response, handledResponse, metricInfo) - } + CheckMateManager.recordNetworkEvent( + response, + handledResponse, + metricInfo = metricInfo ?: MetricInfo.getVerticalMetric(response) + ) return handledResponse } diff --git a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/ui/ApplicationPlatformActivity.kt b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/ui/ApplicationPlatformActivity.kt index 9b8445e9f4..f7b1912c0e 100644 --- a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/ui/ApplicationPlatformActivity.kt +++ b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/ui/ApplicationPlatformActivity.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2023 by Navi Technologies Limited + * * Copyright © 2023-2024 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -64,6 +64,7 @@ open class ApplicationPlatformActivity : SdkHandlingActivity() { setContent { NaviMaterialTheme { navController = rememberNavHostEngine().rememberNavController() + initialiseNavController(navController) NavContainer( activity = this@ApplicationPlatformActivity, navController = navController @@ -136,4 +137,9 @@ open class ApplicationPlatformActivity : SdkHandlingActivity() { override var applicationType = lazy { intent?.getStringExtra(APP_PLATFORM_APPLICATION_TYPE).orEmpty() } + + override fun initialiseNavController(navHostController: NavHostController) { + this.navController = navHostController + onNavControllerSet(navHostController) + } } diff --git a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/network/retrofit/ApResponseCallback.kt b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/network/retrofit/ApResponseCallback.kt index f83e83eeae..47d6a0352d 100644 --- a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/network/retrofit/ApResponseCallback.kt +++ b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/network/retrofit/ApResponseCallback.kt @@ -58,13 +58,11 @@ abstract class ApResponseCallback { } catch (e: Exception) { handleException(exception = e, response = response, apiTag = apiTag) } - metricInfo?.let { - CheckMateManager.recordNetworkEvent( - response, - handledResponse.toRepoResult(), - metricInfo - ) - } + CheckMateManager.recordNetworkEvent( + response, + handledResponse.toRepoResult(), + metricInfo = metricInfo ?: MetricInfo.getVerticalMetric(response) + ) return handledResponse } diff --git a/android/navi-amc/src/main/java/com/navi/amc/common/activity/AmcBaseActivity.kt b/android/navi-amc/src/main/java/com/navi/amc/common/activity/AmcBaseActivity.kt index c7754e4e14..d62b3effa7 100644 --- a/android/navi-amc/src/main/java/com/navi/amc/common/activity/AmcBaseActivity.kt +++ b/android/navi-amc/src/main/java/com/navi/amc/common/activity/AmcBaseActivity.kt @@ -9,9 +9,9 @@ package com.navi.amc.common.activity import android.os.Bundle import android.os.Parcelable +import androidx.navigation.NavHostController import com.navi.amc.common.fragment.HelpBottomSheet import com.navi.amc.utils.AmcAnalytics -import com.navi.amc.utils.AmcAnalytics.ACTIVITY_LAND import com.navi.amc.utils.TempStorageHelper import com.navi.amc.utils.toNavigateAmcModule import com.navi.base.deeplink.DeepLinkManager @@ -19,12 +19,7 @@ import com.navi.base.deeplink.util.DeeplinkConstants import com.navi.base.model.CtaData import com.navi.base.model.GenericAnalyticsData import com.navi.base.model.LineItem -import com.navi.common.R as CommonR /* - * - * * Copyright © 2022 by Navi Technologies Private Limited - * * All rights reserved. Strictly confidential - * - */ +import com.navi.common.R as CommonR import com.navi.common.constants.CHAT_BOT_SCREEN_NAME import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper import com.navi.common.model.HelpBottomSheetData @@ -45,11 +40,6 @@ abstract class AmcBaseActivity : BaseActivity() { override fun onResume() { super.onResume() TempStorageHelper.updateScreenNames(screenName) - sendLandEvent() - } - - private fun sendLandEvent() { - sendEvent(screenName + ACTIVITY_LAND) } override fun onStop() { @@ -187,4 +177,6 @@ abstract class AmcBaseActivity : BaseActivity() { CommonR.anim.parallax_slide_out_right ) } + + override fun initialiseNavController(navHostController: NavHostController) {} } diff --git a/android/navi-amc/src/main/java/com/navi/amc/common/fragment/AmcBaseFragment.kt b/android/navi-amc/src/main/java/com/navi/amc/common/fragment/AmcBaseFragment.kt index 6d3384f6c8..9f5bbcd6f1 100644 --- a/android/navi-amc/src/main/java/com/navi/amc/common/fragment/AmcBaseFragment.kt +++ b/android/navi-amc/src/main/java/com/navi/amc/common/fragment/AmcBaseFragment.kt @@ -18,7 +18,6 @@ import com.navi.amc.common.taskProcessor.AmcTaskManager import com.navi.amc.databinding.AmcBaseFragmentLayoutBinding import com.navi.amc.fundbuy.viewmodel.FundBuyFlowViewModel import com.navi.amc.utils.AmcAnalytics -import com.navi.amc.utils.AmcAnalytics.LAND import com.navi.amc.utils.TempStorageHelper import com.navi.base.model.GenericAnalyticsData import com.navi.common.listeners.HeaderInteractionListener @@ -103,15 +102,10 @@ abstract class AmcBaseFragment : BaseFragment() { override fun onResume() { super.onResume() TempStorageHelper.updateScreenNames(screenName) - sendLandEvent() screenEnterTimeStamp = System.currentTimeMillis() launchCounter++ } - private fun sendLandEvent() { - sendEvent(screenName + LAND) - } - override fun onPause() { super.onPause() sendEvent( diff --git a/android/navi-amc/src/main/java/com/navi/amc/fundbuy/fragments/PaymentSummaryFragment.kt b/android/navi-amc/src/main/java/com/navi/amc/fundbuy/fragments/PaymentSummaryFragment.kt index 31d5e177b9..d5da96a070 100644 --- a/android/navi-amc/src/main/java/com/navi/amc/fundbuy/fragments/PaymentSummaryFragment.kt +++ b/android/navi-amc/src/main/java/com/navi/amc/fundbuy/fragments/PaymentSummaryFragment.kt @@ -40,6 +40,7 @@ import com.navi.amc.utils.Constant.SIP_REFERENCE_ID import com.navi.amc.utils.Constant.TRANSACTION_ID import com.navi.amc.utils.Constant.TYPE import com.navi.amc.utils.SubPageStatusType.PAYMENT_INIT_SUMMARY +import com.navi.amc.utils.TempStorageHelper import com.navi.base.model.ActionData import com.navi.base.utils.* import com.navi.common.listeners.FragmentInterchangeListener diff --git a/android/navi-amc/src/main/java/com/navi/amc/utils/AmcAnalytics.kt b/android/navi-amc/src/main/java/com/navi/amc/utils/AmcAnalytics.kt index fd4532a5ab..bb7942893a 100644 --- a/android/navi-amc/src/main/java/com/navi/amc/utils/AmcAnalytics.kt +++ b/android/navi-amc/src/main/java/com/navi/amc/utils/AmcAnalytics.kt @@ -195,8 +195,6 @@ object AmcAnalytics { const val LATENCY_END_TIME = "end_time" const val LATENCY_STATUS = "status" const val SCREEN_NAME = "screen_name" - const val LAND = "_land" - const val ACTIVITY_LAND = "_activity_land" const val AMC_LATENCY_KYC_INITIATION_TIME = "amc_latency_kyc_initiation_time" const val AMC_LATENCY_KYC_PROCESSING_TIME = "amc_latency_kyc_processing_time" const val AMC_LATENCY_KYC_CALLBACK_TIME = "amc_latency_kyc_callback_time" diff --git a/android/navi-analytics/src/main/java/com/navi/analytics/utils/NaviAnalyticsHelper.kt b/android/navi-analytics/src/main/java/com/navi/analytics/utils/NaviAnalyticsHelper.kt index f405641a52..e47d71db1a 100644 --- a/android/navi-analytics/src/main/java/com/navi/analytics/utils/NaviAnalyticsHelper.kt +++ b/android/navi-analytics/src/main/java/com/navi/analytics/utils/NaviAnalyticsHelper.kt @@ -151,8 +151,8 @@ object NaviAnalyticsHelper { return when { eventName.contains("home", ignoreCase = true) || eventName.contains("notification", ignoreCase = true) -> "App" - eventName.contains("investment", ignoreCase = true) -> "Investment" - eventName.contains("amc", ignoreCase = true) -> "AMC" + eventName.contains("investment", ignoreCase = true) || + eventName.contains("amc", ignoreCase = true) -> "AMC" eventName.contains("gold", ignoreCase = true) -> "GOLD" eventName.contains("insurance", ignoreCase = true) || eventName.contains("hi_", ignoreCase = true) || diff --git a/android/navi-bbps/src/main/kotlin/com/navi/bbps/entry/NaviBbpsActivity.kt b/android/navi-bbps/src/main/kotlin/com/navi/bbps/entry/NaviBbpsActivity.kt index 5b596535de..51ba861b64 100644 --- a/android/navi-bbps/src/main/kotlin/com/navi/bbps/entry/NaviBbpsActivity.kt +++ b/android/navi-bbps/src/main/kotlin/com/navi/bbps/entry/NaviBbpsActivity.kt @@ -101,4 +101,9 @@ class NaviBbpsActivity : BaseActivity(), BackButtonHandler { super.finish() screenExitTransition() } + + override fun initialiseNavController(navHostController: NavHostController) { + this.navController = navHostController + onNavControllerSet(navHostController) + } } diff --git a/android/navi-bbps/src/main/kotlin/com/navi/bbps/entry/NaviBbpsMainScreen.kt b/android/navi-bbps/src/main/kotlin/com/navi/bbps/entry/NaviBbpsMainScreen.kt index 13ae73e9bf..825240a973 100644 --- a/android/navi-bbps/src/main/kotlin/com/navi/bbps/entry/NaviBbpsMainScreen.kt +++ b/android/navi-bbps/src/main/kotlin/com/navi/bbps/entry/NaviBbpsMainScreen.kt @@ -85,7 +85,7 @@ fun NaviBbpsMainScreen( rememberModalBottomSheetState(initialValue = ModalBottomSheetValue.Hidden), sheetContent = {} ) { - naviBbpsActivity.navController = navController + naviBbpsActivity.initialiseNavController(navController) DestinationsNavHost( startRoute = NaviBbpsRouter.getStartRoute( diff --git a/android/navi-chat/src/main/java/com/navi/chat/base/ChatBaseActivity.kt b/android/navi-chat/src/main/java/com/navi/chat/base/ChatBaseActivity.kt index 75be9b5984..7a5ef611af 100644 --- a/android/navi-chat/src/main/java/com/navi/chat/base/ChatBaseActivity.kt +++ b/android/navi-chat/src/main/java/com/navi/chat/base/ChatBaseActivity.kt @@ -9,6 +9,7 @@ package com.navi.chat.base import android.view.MotionEvent import android.view.View +import androidx.navigation.NavHostController import com.navi.alfred.AlfredManager import com.navi.alfred.utils.AlfredConstants import com.navi.base.deeplink.DeepLinkManager @@ -196,6 +197,8 @@ abstract class ChatBaseActivity : NaviCoreActivity(), LoaderState, ErrorState { override val moduleName: ModuleNameV2 get() = ModuleNameV2.CHAT + override fun initialiseNavController(navHostController: NavHostController) {} + companion object { private const val TAG = "CHAT_BASE_ACTIVITY" } diff --git a/android/navi-coin/src/main/java/com/navi/coin/ui/activity/CoinBaseActivity.kt b/android/navi-coin/src/main/java/com/navi/coin/ui/activity/CoinBaseActivity.kt index eb01a261c9..18ca8ad304 100644 --- a/android/navi-coin/src/main/java/com/navi/coin/ui/activity/CoinBaseActivity.kt +++ b/android/navi-coin/src/main/java/com/navi/coin/ui/activity/CoinBaseActivity.kt @@ -14,6 +14,7 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.ui.Modifier +import androidx.navigation.NavHostController import com.navi.base.deeplink.util.DeeplinkConstants import com.navi.base.model.CtaData import com.navi.coin.navigator.navigators.CoinNavigator @@ -65,4 +66,9 @@ abstract class CoinBaseActivity : startExitAnimation() } } + + override fun initialiseNavController(navHostController: NavHostController) { + this.navController = navHostController + onNavControllerSet(navHostController) + } } diff --git a/android/navi-coin/src/main/java/com/navi/coin/ui/compose/navhost/CoinDestinationNavHost.kt b/android/navi-coin/src/main/java/com/navi/coin/ui/compose/navhost/CoinDestinationNavHost.kt index 2709ec0341..cb808ece29 100644 --- a/android/navi-coin/src/main/java/com/navi/coin/ui/compose/navhost/CoinDestinationNavHost.kt +++ b/android/navi-coin/src/main/java/com/navi/coin/ui/compose/navhost/CoinDestinationNavHost.kt @@ -23,7 +23,7 @@ import com.ramcosta.composedestinations.spec.Route @OptIn(ExperimentalAnimationApi::class) @Composable fun CoinDestinationNavHost(activity: CoinBaseActivity, startRoute: Route?) { - activity.navController = rememberNavController() + activity.initialiseNavController(rememberNavController()) DestinationsNavHost( navGraph = NavGraphs.root, startRoute = startRoute ?: NavGraphs.root.startRoute, diff --git a/android/navi-common/src/main/java/com/navi/common/checkmate/model/MetricInfo.kt b/android/navi-common/src/main/java/com/navi/common/checkmate/model/MetricInfo.kt index 2df0b0191f..dca4998095 100644 --- a/android/navi-common/src/main/java/com/navi/common/checkmate/model/MetricInfo.kt +++ b/android/navi-common/src/main/java/com/navi/common/checkmate/model/MetricInfo.kt @@ -7,9 +7,15 @@ package com.navi.common.checkmate.model +import com.navi.analytics.utils.NaviTrackEvent +import com.navi.common.constants.HTTPMethods.POST +import com.navi.common.constants.HTTPMethods.PUT import com.navi.common.model.ModuleNameV2 +import com.navi.common.network.models.GenericResponse import com.navi.common.network.models.RepoResult import com.navi.common.network.models.isSuccess +import com.navi.common.network.models.isSuccessWithData +import retrofit2.Response sealed class MetricInfo( val vertical: String, @@ -118,6 +124,118 @@ sealed class MetricInfo( vertical = ModuleNameV2.GOLD.name, isNae = isNae ) + + companion object { + fun getVerticalMetric( + response: Response> + ): MetricInfo> { + val vertical = NaviTrackEvent.foregroundVertical.toString() + val screenName = NaviTrackEvent.foregroundScreen.toString() + val apiRequestMethod = response.raw().request.method + + val isNae: (RepoResult) -> Boolean = + when (vertical) { + ModuleNameV2.NAVIPAY.name -> { + getVerticalNae( + requestMethod = apiRequestMethod, + isNaeDefinition = { !it.isSuccessWithData() }, + defaultNaeDefinition = { !it.isSuccess() } + ) + } + ModuleNameV2.BBPS.name -> { + getVerticalNae( + requestMethod = apiRequestMethod, + isNaeDefinition = { !it.isSuccessWithData() }, + defaultNaeDefinition = { !it.isSuccess() } + ) + } + ModuleNameV2.PG.name -> { + getVerticalNae( + requestMethod = apiRequestMethod, + isNaeDefinition = { !it.isSuccessWithData() }, + defaultNaeDefinition = { !it.isSuccess() } + ) + } + ModuleNameV2.AMC.name -> { + getVerticalNae( + requestMethod = apiRequestMethod, + isNaeDefinition = { !it.isSuccessWithData() }, + defaultNaeDefinition = { !it.isSuccess() } + ) + } + ModuleNameV2.COIN.name -> { + getVerticalNae( + requestMethod = apiRequestMethod, + isNaeDefinition = { !it.isSuccessWithData() }, + defaultNaeDefinition = { !it.isSuccess() } + ) + } + ModuleNameV2.Insurance.name -> { + getVerticalNae( + requestMethod = apiRequestMethod, + isNaeDefinition = { !it.isSuccessWithData() }, + defaultNaeDefinition = { !it.isSuccess() } + ) + } + ModuleNameV2.REWARDS.name -> { + getVerticalNae( + requestMethod = apiRequestMethod, + isNaeDefinition = { !it.isSuccessWithData() }, + defaultNaeDefinition = { !it.isSuccess() } + ) + } + ModuleNameV2.App.name -> { + getVerticalNae( + requestMethod = apiRequestMethod, + isNaeDefinition = { !it.isSuccessWithData() }, + defaultNaeDefinition = { !it.isSuccess() } + ) + } + ModuleNameV2.GOLD.name -> { + getVerticalNae( + requestMethod = apiRequestMethod, + isNaeDefinition = { !it.isSuccessWithData() }, + defaultNaeDefinition = { !it.isSuccess() } + ) + } + else -> { + getVerticalNae( + requestMethod = apiRequestMethod, + isNaeDefinition = { !it.isSuccessWithData() }, + defaultNaeDefinition = { !it.isSuccess() } + ) + } + } + + return when (vertical) { + ModuleNameV2.NAVIPAY.name -> UPIMetric(screenName, isNae) + ModuleNameV2.BBPS.name -> BBPSMetric(screenName, isNae) + ModuleNameV2.PG.name -> PMSMetric(screenName, isNae) + ModuleNameV2.AMC.name -> AMCMetric(screenName, isNae) + ModuleNameV2.COIN.name -> CoinMetric(screenName, isNae) + ModuleNameV2.Insurance.name -> InsuranceMetricInfo(screenName, isNae) + ModuleNameV2.REWARDS.name -> RewardMetric(screenName, isNae) + ModuleNameV2.App.name -> AppMetric(screenName, isNae) + ModuleNameV2.GOLD.name -> GoldMetric(screenName, isNae) + else -> AppMetric(screenName, isNae) + } + } + + private fun getVerticalNae( + requestMethod: String, + isNaeDefinition: (RepoResult) -> Boolean = { !it.isSuccessWithData() }, + defaultNaeDefinition: (RepoResult) -> Boolean = { !it.isSuccess() } + ): (RepoResult) -> Boolean { + val isNae: (RepoResult) -> Boolean = { + if (requestMethod == POST || requestMethod == PUT) { + isNaeDefinition(it) + } else { + defaultNaeDefinition(it) + } + } + return isNae + } + } } enum class EventType { diff --git a/android/navi-common/src/main/java/com/navi/common/network/retrofit/ResponseCallback.kt b/android/navi-common/src/main/java/com/navi/common/network/retrofit/ResponseCallback.kt index 11cb20ca37..08b6eebb6d 100644 --- a/android/navi-common/src/main/java/com/navi/common/network/retrofit/ResponseCallback.kt +++ b/android/navi-common/src/main/java/com/navi/common/network/retrofit/ResponseCallback.kt @@ -39,9 +39,12 @@ abstract class ResponseCallback { } catch (e: Exception) { handleException(e, response) } - metricInfo?.let { - CheckMateManager.recordNetworkEvent(response, handledResponse, metricInfo) - } + + CheckMateManager.recordNetworkEvent( + response, + handledResponse, + metricInfo = metricInfo ?: MetricInfo.getVerticalMetric(response) + ) return handledResponse } diff --git a/android/navi-common/src/main/java/com/navi/common/ui/activity/BaseActivity.kt b/android/navi-common/src/main/java/com/navi/common/ui/activity/BaseActivity.kt index 85fbd0e2a4..7a8e2d4847 100644 --- a/android/navi-common/src/main/java/com/navi/common/ui/activity/BaseActivity.kt +++ b/android/navi-common/src/main/java/com/navi/common/ui/activity/BaseActivity.kt @@ -30,6 +30,7 @@ import androidx.fragment.app.FragmentManager import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope +import androidx.navigation.NavHostController import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.google.android.play.core.appupdate.AppUpdateInfo import com.google.android.play.core.appupdate.AppUpdateManager @@ -1166,4 +1167,6 @@ abstract class BaseActivity : open fun shouldDismissKeyboardOnFocusChange(): Boolean = true fun getNaviLocationManager() = locationManager + + override fun initialiseNavController(navHostController: NavHostController) {} } diff --git a/android/navi-common/src/main/java/com/navi/common/ui/activity/NaviCoreActivity.kt b/android/navi-common/src/main/java/com/navi/common/ui/activity/NaviCoreActivity.kt index bc112ecebd..9f166f21b7 100644 --- a/android/navi-common/src/main/java/com/navi/common/ui/activity/NaviCoreActivity.kt +++ b/android/navi-common/src/main/java/com/navi/common/ui/activity/NaviCoreActivity.kt @@ -9,10 +9,12 @@ package com.navi.common.ui.activity import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.navigation.NavHostController import com.navi.analytics.utils.NaviTrackEvent import com.navi.common.checkmate.core.CheckMateLatencyMapper import com.navi.common.checkmate.core.CheckMateMapper import com.navi.common.model.ModuleNameV2 +import com.navi.common.utils.CommonUtils.formatComposeScreenName abstract class NaviCoreActivity : AppCompatActivity(), CheckMateMapper by CheckMateLatencyMapper { @@ -20,6 +22,8 @@ abstract class NaviCoreActivity : AppCompatActivity(), CheckMateMapper by CheckM abstract val moduleName: ModuleNameV2 + abstract fun initialiseNavController(navHostController: NavHostController) + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) recordScreenLandTime(screenName) @@ -36,4 +40,17 @@ abstract class NaviCoreActivity : AppCompatActivity(), CheckMateMapper by CheckM vertical = moduleName.name ) } + + protected open fun onNavControllerSet(baseNavController: NavHostController) { + baseNavController.addOnDestinationChangedListener { _, destination, _ -> + destination.route?.let { originalRoute -> + originalRoute.formatComposeScreenName().let { composeScreenName -> + NaviTrackEvent.setForegroundScreenAndVertical( + screen = composeScreenName, + vertical = moduleName.name + ) + } + } + } + } } diff --git a/android/navi-common/src/main/java/com/navi/common/utils/CommonUtils.kt b/android/navi-common/src/main/java/com/navi/common/utils/CommonUtils.kt index 236be7e6ac..e2e28e042f 100644 --- a/android/navi-common/src/main/java/com/navi/common/utils/CommonUtils.kt +++ b/android/navi-common/src/main/java/com/navi/common/utils/CommonUtils.kt @@ -46,6 +46,7 @@ import com.navi.base.utils.NetWatchManger import com.navi.base.utils.toDoubleWithSafe import com.navi.common.CommonLibManager import com.navi.common.R +import com.navi.common.checkmate.utils.getEventNameWithVerticalPrefix import com.navi.common.constants.QA import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper import com.navi.common.model.common.ErrorLog @@ -458,4 +459,11 @@ object CommonUtils { } return formattedText.toString() } + + fun String.formatComposeScreenName(): String { + return getEventNameWithVerticalPrefix( + this.split("[?/]".toRegex())[0], + NaviTrackEvent.foregroundVertical.toString() + ) + } } diff --git a/android/navi-cycs/src/main/kotlin/com/navi/cycs/entry/CycsActivity.kt b/android/navi-cycs/src/main/kotlin/com/navi/cycs/entry/CycsActivity.kt index b472c8c6f7..40d1e9d01a 100644 --- a/android/navi-cycs/src/main/kotlin/com/navi/cycs/entry/CycsActivity.kt +++ b/android/navi-cycs/src/main/kotlin/com/navi/cycs/entry/CycsActivity.kt @@ -102,4 +102,9 @@ class CycsActivity : BaseActivity(), BackButtonHandler { permissionsManager.hasPermission(Manifest.permission.POST_NOTIFICATIONS) } else true } + + override fun initialiseNavController(navHostController: NavHostController) { + this.navController = navHostController + onNavControllerSet(navHostController) + } } diff --git a/android/navi-cycs/src/main/kotlin/com/navi/cycs/entry/CycsMainScreen.kt b/android/navi-cycs/src/main/kotlin/com/navi/cycs/entry/CycsMainScreen.kt index d1660d7ca3..17de6e7ef7 100644 --- a/android/navi-cycs/src/main/kotlin/com/navi/cycs/entry/CycsMainScreen.kt +++ b/android/navi-cycs/src/main/kotlin/com/navi/cycs/entry/CycsMainScreen.kt @@ -27,7 +27,7 @@ private const val TRANSITION_DURATION_IN_MILLIS = 400 @Composable fun CycsMainScreen(cycsActivity: CycsActivity) { val navController = rememberNavController() - cycsActivity.navController = navController + cycsActivity.initialiseNavController(navController) DestinationsNavHost( modifier = Modifier.fillMaxSize(), diff --git a/android/navi-gold/src/main/java/com/navi/gold/ui/CheckerActivity.kt b/android/navi-gold/src/main/java/com/navi/gold/ui/CheckerActivity.kt index 8436d12ba6..d844225a3c 100644 --- a/android/navi-gold/src/main/java/com/navi/gold/ui/CheckerActivity.kt +++ b/android/navi-gold/src/main/java/com/navi/gold/ui/CheckerActivity.kt @@ -255,5 +255,5 @@ class CheckerActivity : BaseActivity() { } override val screenName: String = DIGITAL_GOLD_CHECKER_ACTIVITY - override val moduleName: ModuleNameV2 = ModuleNameV2.COMMON + override val moduleName: ModuleNameV2 = ModuleNameV2.GOLD } diff --git a/android/navi-gold/src/main/java/com/navi/gold/ui/DigitalGoldBuyActivity.kt b/android/navi-gold/src/main/java/com/navi/gold/ui/DigitalGoldBuyActivity.kt index fce9c09b1d..a5a9b9a851 100644 --- a/android/navi-gold/src/main/java/com/navi/gold/ui/DigitalGoldBuyActivity.kt +++ b/android/navi-gold/src/main/java/com/navi/gold/ui/DigitalGoldBuyActivity.kt @@ -201,5 +201,5 @@ class DigitalGoldBuyActivity : } override val screenName: String = DIGITAL_GOLD_BUY_ACTIVITY - override val moduleName: ModuleNameV2 = ModuleNameV2.COMMON + override val moduleName: ModuleNameV2 = ModuleNameV2.GOLD } diff --git a/android/navi-gold/src/main/java/com/navi/gold/ui/DigitalGoldSellActivity.kt b/android/navi-gold/src/main/java/com/navi/gold/ui/DigitalGoldSellActivity.kt index 472896c8b1..9790ad1544 100644 --- a/android/navi-gold/src/main/java/com/navi/gold/ui/DigitalGoldSellActivity.kt +++ b/android/navi-gold/src/main/java/com/navi/gold/ui/DigitalGoldSellActivity.kt @@ -631,5 +631,5 @@ class DigitalGoldSellActivity : BaseActivity(), WidgetCallback, NewBottomSheetLi } override val screenName: String = DIGITAL_GOLD_SELL_SCREEN - override val moduleName: ModuleNameV2 = ModuleNameV2.COMMON + override val moduleName: ModuleNameV2 = ModuleNameV2.GOLD } diff --git a/android/navi-gold/src/main/java/com/navi/gold/ui/DigitalGoldSipActivity.kt b/android/navi-gold/src/main/java/com/navi/gold/ui/DigitalGoldSipActivity.kt index 4d537e05a8..d5ee113546 100644 --- a/android/navi-gold/src/main/java/com/navi/gold/ui/DigitalGoldSipActivity.kt +++ b/android/navi-gold/src/main/java/com/navi/gold/ui/DigitalGoldSipActivity.kt @@ -392,5 +392,5 @@ class DigitalGoldSipActivity : BasePaymentActivity(), WidgetCallback, NewBottomS } override val screenName: String = GoldAnalytics.DIGITAL_GOLD_SELL_SCREEN - override val moduleName: ModuleNameV2 = ModuleNameV2.COMMON + override val moduleName: ModuleNameV2 = ModuleNameV2.GOLD } diff --git a/android/navi-gold/src/main/java/com/navi/gold/ui/DigitalGoldTransactionActivity.kt b/android/navi-gold/src/main/java/com/navi/gold/ui/DigitalGoldTransactionActivity.kt index d61e6ff41b..6a8ff5a7a3 100644 --- a/android/navi-gold/src/main/java/com/navi/gold/ui/DigitalGoldTransactionActivity.kt +++ b/android/navi-gold/src/main/java/com/navi/gold/ui/DigitalGoldTransactionActivity.kt @@ -578,7 +578,7 @@ class DigitalGoldTransactionActivity : BaseActivity(), WidgetCallback, CsatCompl override val screenName: String = DIGITAL_GOLD_TRANSACTION_SCREEN - override val moduleName: ModuleNameV2 = ModuleNameV2.COMMON + override val moduleName: ModuleNameV2 = ModuleNameV2.GOLD companion object { const val DG_TRANSACTION = "DG_TRANSACTION" diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/common/GiBaseActivity.kt b/android/navi-insurance/src/main/java/com/navi/insurance/common/GiBaseActivity.kt index e399079c9f..8ccd39f8ec 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/common/GiBaseActivity.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/common/GiBaseActivity.kt @@ -13,6 +13,7 @@ import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.lifecycle.ViewModelProvider +import androidx.navigation.NavHostController import com.navi.insurance.R import com.navi.insurance.analytics.NaviInsuranceAnalytics import com.navi.insurance.common.models.Action @@ -149,4 +150,6 @@ abstract class GiBaseActivity : BaseActivity(), ActionHandler.ActionOwner { override fun getFragManager(): FragmentManager = supportFragmentManager override fun getContainerId(): Int = R.id.container + + override fun initialiseNavController(navHostController: NavHostController) {} } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/health/activity/BaseActivity.kt b/android/navi-insurance/src/main/java/com/navi/insurance/health/activity/BaseActivity.kt index a4c35f690d..7103502bcc 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/health/activity/BaseActivity.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/health/activity/BaseActivity.kt @@ -15,6 +15,7 @@ import androidx.annotation.LayoutRes import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.lifecycle.lifecycleScope +import androidx.navigation.NavHostController import com.bumptech.glide.manager.SupportRequestManagerFragment import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.google.android.play.core.appupdate.AppUpdateManager @@ -510,4 +511,6 @@ abstract class BaseActivity : NaviCoreActivity() { } return false } + + override fun initialiseNavController(navHostController: NavHostController) {} } diff --git a/android/navi-insurance/src/main/java/com/navi/insurance/network/retrofit/FormResponseCallback.kt b/android/navi-insurance/src/main/java/com/navi/insurance/network/retrofit/FormResponseCallback.kt index 51a143274f..537fbe3144 100644 --- a/android/navi-insurance/src/main/java/com/navi/insurance/network/retrofit/FormResponseCallback.kt +++ b/android/navi-insurance/src/main/java/com/navi/insurance/network/retrofit/FormResponseCallback.kt @@ -46,9 +46,11 @@ abstract class FormResponseCallback : ResponseCallback() { ), errors = errorResponse?.errors ) - metricInfo?.let { - CheckMateManager.recordNetworkEvent(response, handledResponse, metricInfo) - } + CheckMateManager.recordNetworkEvent( + response, + handledResponse, + metricInfo = metricInfo ?: MetricInfo.getVerticalMetric(response) + ) return handledResponse } return super.apiResponseCallback(response, metricInfo) diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/entry/NaviPayActivity.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/entry/NaviPayActivity.kt index 75f98b5a8e..5488a11a8e 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/entry/NaviPayActivity.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/entry/NaviPayActivity.kt @@ -248,4 +248,9 @@ class NaviPayActivity : BaseActivity() { super.onDestroy() NaviPayEventBus.resetEventBus() } + + override fun initialiseNavController(navHostController: NavHostController) { + this.navController = navHostController + onNavControllerSet(navHostController) + } } diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/entry/ui/NaviPayMainScreen.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/entry/ui/NaviPayMainScreen.kt index 42405d4f45..bcf7f14d75 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/entry/ui/NaviPayMainScreen.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/entry/ui/NaviPayMainScreen.kt @@ -106,7 +106,7 @@ fun NaviPayMainScreen( ModalBottomSheetLayout( bottomSheetNavigator = bottomSheetNavigator, content = { - naviPayActivity.navController = navController + naviPayActivity.initialiseNavController(navController) DestinationsNavHost( startRoute = customerStatusRoute ?: NavGraphs.root.startRoute, navGraph = NavGraphs.root, diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/binding/ui/NaviPayOnboardingActivity.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/binding/ui/NaviPayOnboardingActivity.kt index 37811aaec0..db3709549f 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/binding/ui/NaviPayOnboardingActivity.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/binding/ui/NaviPayOnboardingActivity.kt @@ -124,4 +124,9 @@ class NaviPayOnboardingActivity : BaseActivity(), BackButtonHandler { } super.finish() } + + override fun initialiseNavController(navHostController: NavHostController) { + this.navController = navHostController + onNavControllerSet(navHostController) + } } diff --git a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/binding/ui/NaviPayOnboardingMainScreen.kt b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/binding/ui/NaviPayOnboardingMainScreen.kt index b3206ca395..126fb6408c 100644 --- a/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/binding/ui/NaviPayOnboardingMainScreen.kt +++ b/android/navi-pay/src/main/kotlin/com/navi/pay/onboarding/binding/ui/NaviPayOnboardingMainScreen.kt @@ -29,7 +29,7 @@ fun NaviPayOnboardingMainScreen(naviPayOnboardingActivity: NaviPayOnboardingActi ModalBottomSheetLayout( bottomSheetNavigator = bottomSheetNavigator, content = { - naviPayOnboardingActivity.navController = navController + naviPayOnboardingActivity.initialiseNavController(navController) DestinationsNavHost( navGraph = OnboardingNavGraph.root, startRoute = NaviPayOnboardingScreenDestination, diff --git a/android/navi-payment/src/main/java/com/navi/payment/nativepayment/activity/NaviPaymentActivity.kt b/android/navi-payment/src/main/java/com/navi/payment/nativepayment/activity/NaviPaymentActivity.kt index 4a86009009..11eaf4cbfa 100644 --- a/android/navi-payment/src/main/java/com/navi/payment/nativepayment/activity/NaviPaymentActivity.kt +++ b/android/navi-payment/src/main/java/com/navi/payment/nativepayment/activity/NaviPaymentActivity.kt @@ -97,4 +97,9 @@ class NaviPaymentActivity : BaseActivity(), IPaymentExternalSdk by PaymentExtern ) } } + + override fun initialiseNavController(navHostController: NavHostController) { + this.navController = navHostController + onNavControllerSet(navHostController) + } } diff --git a/android/navi-payment/src/main/java/com/navi/payment/nativepayment/activity/WebPaymentActivity.kt b/android/navi-payment/src/main/java/com/navi/payment/nativepayment/activity/WebPaymentActivity.kt index 978f6c2207..ee60799474 100644 --- a/android/navi-payment/src/main/java/com/navi/payment/nativepayment/activity/WebPaymentActivity.kt +++ b/android/navi-payment/src/main/java/com/navi/payment/nativepayment/activity/WebPaymentActivity.kt @@ -52,7 +52,7 @@ class WebPaymentActivity : BaseActivity() { val bottomSheetNavigator = rememberBottomSheetNavigator() val navController = rememberNavController().apply { this.navigatorProvider += bottomSheetNavigator } - this.navController = navController + initialiseNavController(navController) Column { DestinationsNavHost( @@ -72,6 +72,11 @@ class WebPaymentActivity : BaseActivity() { webPaymentDataProvider.clear() } + override fun initialiseNavController(navHostController: NavHostController) { + this.navController = navHostController + onNavControllerSet(navHostController) + } + override val screenName: String get() = WEB_PAYMENT_ACTIVITY diff --git a/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/NaviPaymentMainScreen.kt b/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/NaviPaymentMainScreen.kt index 64f3264aaa..6425198a4f 100644 --- a/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/NaviPaymentMainScreen.kt +++ b/android/navi-payment/src/main/java/com/navi/payment/nativepayment/screens/NaviPaymentMainScreen.kt @@ -47,7 +47,7 @@ fun NaviPaymentMainScreen( ModalBottomSheetLayout( bottomSheetNavigator = bottomSheetNavigator, content = { - activity.navController = navController + activity.initialiseNavController(navController) DestinationsNavHost( startRoute = customerStatusRoute ?: NavGraphs.root.startRoute, navGraph = NavGraphs.root, diff --git a/android/navi-rr/src/main/java/com/navi/rr/common/activity/RRBaseActivity.kt b/android/navi-rr/src/main/java/com/navi/rr/common/activity/RRBaseActivity.kt index 407a952c62..3828a8c624 100644 --- a/android/navi-rr/src/main/java/com/navi/rr/common/activity/RRBaseActivity.kt +++ b/android/navi-rr/src/main/java/com/navi/rr/common/activity/RRBaseActivity.kt @@ -14,6 +14,7 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.ui.Modifier +import androidx.navigation.NavHostController import com.navi.common.navigation.NavHostControlOwnerManager import com.navi.common.navigation.NavHostControllerOwner import com.navi.common.ui.activity.BaseActivity @@ -51,4 +52,9 @@ abstract class RRBaseActivity() : super.finish() startExitAnimation() } + + override fun initialiseNavController(navHostController: NavHostController) { + this.navController = navHostController + onNavControllerSet(navHostController) + } } diff --git a/android/navi-rr/src/main/java/com/navi/rr/common/network/response/handlers/chains/NetworkResponseProcessorChain.kt b/android/navi-rr/src/main/java/com/navi/rr/common/network/response/handlers/chains/NetworkResponseProcessorChain.kt index 5ab8a50d2c..f69f1f5195 100644 --- a/android/navi-rr/src/main/java/com/navi/rr/common/network/response/handlers/chains/NetworkResponseProcessorChain.kt +++ b/android/navi-rr/src/main/java/com/navi/rr/common/network/response/handlers/chains/NetworkResponseProcessorChain.kt @@ -53,9 +53,11 @@ class NetworkResponseProcessorChain : HandlerChain() { ) ) - metricInfo?.let { - CheckMateManager.recordNetworkEvent(response, handledResponse, metricInfo) - } + CheckMateManager.recordNetworkEvent( + response, + handledResponse, + metricInfo ?: MetricInfo.getVerticalMetric(response) + ) return handledResponse } diff --git a/android/navi-rr/src/main/java/com/navi/rr/referral/ui/activity/ReferralDestinationNavHost.kt b/android/navi-rr/src/main/java/com/navi/rr/referral/ui/activity/ReferralDestinationNavHost.kt index 53f9dbbe01..7d83f24216 100644 --- a/android/navi-rr/src/main/java/com/navi/rr/referral/ui/activity/ReferralDestinationNavHost.kt +++ b/android/navi-rr/src/main/java/com/navi/rr/referral/ui/activity/ReferralDestinationNavHost.kt @@ -22,7 +22,7 @@ import com.ramcosta.composedestinations.spec.Route @OptIn(ExperimentalAnimationApi::class) @Composable fun ReferralDestinationNavHost(referralActivity: ReferralHomeActivity, startRoute: Route?) { - referralActivity.navController = rememberNavController() + referralActivity.initialiseNavController(rememberNavController()) DestinationsNavHost( startRoute = startRoute ?: NavGraphs.root.startRoute, navGraph = NavGraphs.root,