diff --git a/android/app/src/main/java/com/naviapp/analytics/utils/NaviAnalytics.kt b/android/app/src/main/java/com/naviapp/analytics/utils/NaviAnalytics.kt index 4c49511eee..ffa3829cca 100644 --- a/android/app/src/main/java/com/naviapp/analytics/utils/NaviAnalytics.kt +++ b/android/app/src/main/java/com/naviapp/analytics/utils/NaviAnalytics.kt @@ -1505,6 +1505,7 @@ class NaviAnalytics private constructor() { const val NAV_LOAN_CLICKED = "NaviApp_Nav_Loan_Clicked" const val NEW_CLOSED_LOAN_SCREEN = "NaviApp_Closed_Loan_Lands" const val NEW_HOME_ACTIVITY = "new_home_activity" + const val LOANS_TAB = "loans_tab" const val PROFILE_SCREEN = "profile_screen" const val NEW_USER_EXPERIENCE_ACTIVITY = "new_user_experience_activity" const val NAVI_DEEPLINK_MANAGEMENT_ACTIVITY = "NaviDeeplinkManagementActivityLanded" 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 c0d4d04fb1..24f8846b86 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 @@ -882,7 +882,7 @@ class HomePageActivity : // To be removed when the NUX is driven by backend CTA using post-render action private fun fetchNuxScreenDataForEligibleUsers() { if (redirectionUseCase.isUpiNuxRedirection(intent.extras).not()) { - homeVM.fetchNuxScreenDataForEligibleUsers { + homeVM.fetchNuxScreenDataForEligibleUsers(naeScreenName = screenName) { redirectionUseCase.navigateToUpiNuxScreen(HOME) } } diff --git a/android/app/src/main/java/com/naviapp/home/dashboard/ui/compose/loansTab/LoansTabScreen.kt b/android/app/src/main/java/com/naviapp/home/dashboard/ui/compose/loansTab/LoansTabScreen.kt index 92cf544aed..50f5ee2911 100644 --- a/android/app/src/main/java/com/naviapp/home/dashboard/ui/compose/loansTab/LoansTabScreen.kt +++ b/android/app/src/main/java/com/naviapp/home/dashboard/ui/compose/loansTab/LoansTabScreen.kt @@ -25,6 +25,7 @@ import com.navi.base.utils.orFalse import com.navi.common.ui.errorview.FullScreenErrorComposeView import com.navi.common.utils.Constants.CTAData import com.navi.common.utils.Constants.ERROR_CODE +import com.naviapp.analytics.utils.NaviAnalytics import com.naviapp.common.web.NaviWebViewCallBack import com.naviapp.common.web.NaviWebViewCallBack.Companion.JAVA_SCRIPT_NAME_DEFAULT import com.naviapp.home.compose.activity.HomePageActivity @@ -178,13 +179,15 @@ private fun LoansTabWebView( ) { val lifecycleOwner = LocalLifecycleOwner.current val showLoaderState = remember { mutableStateOf(true) } - LaunchedEffect(Unit) { loansTabVm.fetchAuthTokenData() } + LaunchedEffect(Unit) { loansTabVm.fetchAuthTokenData(naeScreenName = NaviAnalytics.LOANS_TAB) } when (val webViewUrl = loansTabVm.webViewUrl.collectAsState().value) { is AuthTokenState.Nothing -> {} is AuthTokenState.Error -> { FullScreenErrorComposeView( error = webViewUrl.error, - onRetryClick = { loansTabVm.fetchAuthTokenData() } + onRetryClick = { + loansTabVm.fetchAuthTokenData(naeScreenName = NaviAnalytics.LOANS_TAB) + } ) } is AuthTokenState.Success -> { diff --git a/android/app/src/main/java/com/naviapp/home/dashboard/viewmodels/LoanTabVm.kt b/android/app/src/main/java/com/naviapp/home/dashboard/viewmodels/LoanTabVm.kt index 57e392df3f..d4550445a2 100644 --- a/android/app/src/main/java/com/naviapp/home/dashboard/viewmodels/LoanTabVm.kt +++ b/android/app/src/main/java/com/naviapp/home/dashboard/viewmodels/LoanTabVm.kt @@ -15,6 +15,7 @@ import com.navi.base.utils.BaseUtils import com.navi.base.utils.generateRandomString import com.navi.base.utils.generateSHA256Hash import com.navi.base.utils.isNotNull +import com.navi.common.checkmate.model.MetricInfo import com.navi.common.model.ModuleNameV2 import com.navi.common.network.models.GenericErrorResponse import com.navi.common.uitron.model.action.CtaAction @@ -105,14 +106,19 @@ constructor( } } - fun fetchAuthTokenData() { + fun fetchAuthTokenData(naeScreenName: String) { viewModelScope.safeLaunch(Dispatchers.IO) { val codeVerifier = generateRandomString(32) val codeChallenger = generateSHA256Hash(codeVerifier) val response = webRedirectionRepository.fetchTemporarySessionToken( codeChallenger = codeChallenger, - appSessionToken = BaseUtils.getSessionToken().toString() + appSessionToken = BaseUtils.getSessionToken().toString(), + metricInfo = + MetricInfo.LEMetric( + screen = naeScreenName, + isNae = { !it.isValidResponse() } + ) ) if (response.isValidResponse()) { _webViewUrl.value = diff --git a/android/app/src/main/java/com/naviapp/home/viewmodel/HomeViewModel.kt b/android/app/src/main/java/com/naviapp/home/viewmodel/HomeViewModel.kt index f9994d9671..f665a0b9f6 100644 --- a/android/app/src/main/java/com/naviapp/home/viewmodel/HomeViewModel.kt +++ b/android/app/src/main/java/com/naviapp/home/viewmodel/HomeViewModel.kt @@ -326,9 +326,13 @@ constructor( } } - fun fetchNuxScreenDataForEligibleUsers(navigateToNuxScreen: () -> Unit) { + fun fetchNuxScreenDataForEligibleUsers(naeScreenName: String, navigateToNuxScreen: () -> Unit) { viewModelScope.safeLaunch((Dispatchers.IO)) { - nuxHandler.fetchNuxScreenDataForEligibleUsers(UPI_NUX_SCREEN, navigateToNuxScreen) + nuxHandler.fetchNuxScreenDataForEligibleUsers( + UPI_NUX_SCREEN, + navigateToNuxScreen, + naeScreenName + ) } } diff --git a/android/app/src/main/java/com/naviapp/nux/handler/NewUserExperienceHandler.kt b/android/app/src/main/java/com/naviapp/nux/handler/NewUserExperienceHandler.kt index 673465f630..aca82c7a18 100644 --- a/android/app/src/main/java/com/naviapp/nux/handler/NewUserExperienceHandler.kt +++ b/android/app/src/main/java/com/naviapp/nux/handler/NewUserExperienceHandler.kt @@ -62,10 +62,12 @@ constructor( suspend fun fetchNuxScreenDataForEligibleUsers( screenId: String, - navigateToNuxScreen: () -> Unit + navigateToNuxScreen: () -> Unit, + naeScreenName: String ) { if (isUserEligibleForNux(screenId).not()) return - val naviCacheAltSourceEntity = getNaviCacheAltSourceEntity(screenId) + val naviCacheAltSourceEntity = + getNaviCacheAltSourceEntity(screenId, naeScreenName = naeScreenName) if (naviCacheAltSourceEntity.value.isNotNullAndNotEmpty()) { canRedirectUserToNux = true navigateToNuxScreen() @@ -82,7 +84,8 @@ constructor( suspend fun getNuxScreenDefinition( queryMap: MutableMap, onSuccess: (data: AlchemistScreenDefinition) -> Unit, - onFailure: () -> Unit + onFailure: () -> Unit, + naeScreenName: String ) { this.queryMap = queryMap val screenId = queryMap[SCREEN_ID].orEmpty() @@ -90,7 +93,7 @@ constructor( naviCacheRepository.getDataOrFetchFromAltSource( key = screenId, version = BuildConfig.VERSION_CODE.toLong(), - getDataFromAltSource = { getNaviCacheAltSourceEntity(screenId) } + getDataFromAltSource = { getNaviCacheAltSourceEntity(screenId, naeScreenName) } ) dataDeserializers .fromJson(cachedResponse?.value, AlchemistScreenDefinition::class.java) @@ -105,13 +108,17 @@ constructor( naviCacheRepository.clear(screenId) } - private suspend fun getNaviCacheAltSourceEntity(screenId: String): NaviCacheAltSourceEntity { + private suspend fun getNaviCacheAltSourceEntity( + screenId: String, + naeScreenName: String + ): NaviCacheAltSourceEntity { val response = nuxRepository.fetchNuxScreenResponse( AlchemistScreenRequest( screenName = screenId, inputMap = mapOf(SOURCE to queryMap[SOURCE]) - ) + ), + naeScreenName = naeScreenName ) if (response.isValidResponse()) { systemBackAction = response.data?.screenStructure?.systemBackCta diff --git a/android/app/src/main/java/com/naviapp/nux/repository/NuxRepository.kt b/android/app/src/main/java/com/naviapp/nux/repository/NuxRepository.kt index ec66430938..042092b8cb 100644 --- a/android/app/src/main/java/com/naviapp/nux/repository/NuxRepository.kt +++ b/android/app/src/main/java/com/naviapp/nux/repository/NuxRepository.kt @@ -9,6 +9,7 @@ package com.naviapp.nux.repository import com.navi.common.alchemist.model.AlchemistScreenDefinition import com.navi.common.alchemist.model.AlchemistScreenRequest +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 @@ -23,7 +24,8 @@ constructor(@SuperAppRetroFit private val superAppRetrofitService: RetrofitServi ResponseCallback() { suspend fun fetchNuxScreenResponse( - screenRequest: AlchemistScreenRequest + screenRequest: AlchemistScreenRequest, + naeScreenName: String ): RepoResult = apiResponseCallback( superAppRetrofitService.fetchForgeAlchemistScreen( @@ -31,6 +33,7 @@ constructor(@SuperAppRetroFit private val superAppRetrofitService: RetrofitServi target = ModuleNameV2.FORGE.name, verticalType = ModuleNameV2.FORGE.name, request = screenRequest, - ) + ), + metricInfo = MetricInfo.AppMetric(screen = naeScreenName, isNae = { false }) ) } diff --git a/android/app/src/main/java/com/naviapp/nux/ui/NuxGenericScreen.kt b/android/app/src/main/java/com/naviapp/nux/ui/NuxGenericScreen.kt index c279a02f31..e9b325755f 100644 --- a/android/app/src/main/java/com/naviapp/nux/ui/NuxGenericScreen.kt +++ b/android/app/src/main/java/com/naviapp/nux/ui/NuxGenericScreen.kt @@ -27,7 +27,8 @@ fun NuxGenericScreen( state: MainScreenUiState, effectFlow: Flow?, getViewModel: () -> NuxViewModel, - onNavigationRequested: (MainScreenUiEffect.Navigation) -> Unit + onNavigationRequested: (MainScreenUiEffect.Navigation) -> Unit, + naeScreenName: String, ) { LaunchedEffect(Unit) { effectFlow @@ -40,7 +41,9 @@ fun NuxGenericScreen( } ?.collect() } - LaunchedEffect(Unit) { getViewModel.invoke().getScreenDefinition() } + LaunchedEffect(Unit) { + getViewModel.invoke().getScreenDefinition(naeScreenName = naeScreenName) + } BackHandler { getViewModel().setEffect { MainScreenUiEffect.Navigation.Back } } diff --git a/android/app/src/main/java/com/naviapp/nux/ui/NuxGenericScreenDestination.kt b/android/app/src/main/java/com/naviapp/nux/ui/NuxGenericScreenDestination.kt index 13e795b18b..1442e73beb 100644 --- a/android/app/src/main/java/com/naviapp/nux/ui/NuxGenericScreenDestination.kt +++ b/android/app/src/main/java/com/naviapp/nux/ui/NuxGenericScreenDestination.kt @@ -41,6 +41,7 @@ fun NuxGenericScreenDestination(bundle: Bundle?, viewModel: NuxViewModel = hiltV } } } - } + }, + naeScreenName = activity.screenName, ) } diff --git a/android/app/src/main/java/com/naviapp/nux/viewmodel/NuxViewModel.kt b/android/app/src/main/java/com/naviapp/nux/viewmodel/NuxViewModel.kt index e91e6a9e3f..08a7df0c43 100644 --- a/android/app/src/main/java/com/naviapp/nux/viewmodel/NuxViewModel.kt +++ b/android/app/src/main/java/com/naviapp/nux/viewmodel/NuxViewModel.kt @@ -29,12 +29,13 @@ class NuxViewModel @Inject constructor(val nuxHandler: NewUserExperienceHandler) private var queryMap: MutableMap = mutableMapOf() - fun getScreenDefinition() { + fun getScreenDefinition(naeScreenName: String) { viewModelScope.safeLaunch(Dispatchers.IO) { nuxHandler.getNuxScreenDefinition( queryMap = queryMap, onSuccess = { sendEvent(NuxGenericScreenUiEvent.RenderUI(it)) }, - onFailure = { setEffect { MainScreenUiEffect.Navigation.Back } } + onFailure = { setEffect { MainScreenUiEffect.Navigation.Back } }, + naeScreenName = naeScreenName, ) } } diff --git a/android/app/src/main/java/com/naviapp/payment/repositories/PaymentRepository.kt b/android/app/src/main/java/com/naviapp/payment/repositories/PaymentRepository.kt index e0e2882c83..2fa302d5b9 100644 --- a/android/app/src/main/java/com/naviapp/payment/repositories/PaymentRepository.kt +++ b/android/app/src/main/java/com/naviapp/payment/repositories/PaymentRepository.kt @@ -7,12 +7,14 @@ package com.naviapp.payment.repositories +import com.navi.common.checkmate.model.MetricInfo import com.navi.common.model.AsyncRequestData import com.navi.common.model.InitiateRescheduleLoanAgreementGenerationRequest import com.navi.common.model.InitiateRescheduleLoanAgreementGenerationResponse import com.navi.common.model.PaymentOrderDetail import com.navi.common.model.UploadDataAsyncResponse import com.navi.common.network.models.RepoResult +import com.navi.common.network.models.isSuccessWithData import com.navi.naviwidgets.models.response.BottomSheetInfoV2 import com.navi.payment.paymenthandler.model.PaymentStatusData import com.navi.payment.paymenthandler.model.SyncPaymentResponse @@ -163,8 +165,12 @@ class PaymentRepository @Inject constructor() : ResponseCallback() { suspend fun closeLoan(loanAccountNumber: String?, request: ForecloseLoanRequest?) = apiResponseCallback(retrofitService().forecloseLoan(loanAccountNumber, request)) - suspend fun fetchPaymentBehaviourWidget(type: String) = - apiResponseCallback(retrofitService().fetchPaymentBehaviourWidget(type)) + suspend fun fetchPaymentBehaviourWidget(type: String, naeScreenName: String) = + apiResponseCallback( + retrofitService().fetchPaymentBehaviourWidget(type), + metricInfo = + MetricInfo.LEMetric(screen = naeScreenName, isNae = { !it.isSuccessWithData() }) + ) suspend fun fetchPaymentFailureBottomSheetData( data: InitiatePaymentRequest diff --git a/android/app/src/main/java/com/naviapp/payment_behaviour/fragments/PaymentBehaviourFragment.kt b/android/app/src/main/java/com/naviapp/payment_behaviour/fragments/PaymentBehaviourFragment.kt index 924f0bc8ff..66ebe7e979 100644 --- a/android/app/src/main/java/com/naviapp/payment_behaviour/fragments/PaymentBehaviourFragment.kt +++ b/android/app/src/main/java/com/naviapp/payment_behaviour/fragments/PaymentBehaviourFragment.kt @@ -139,7 +139,7 @@ class PaymentBehaviourFragment : private fun init() { isPositiveReinforcement = arguments?.getString(TYPE) == POSITIVE viewLifecycleOwner.lifecycleScope.launchWhenCreated { - launch { paymentBehaviourVM.fetchData(arguments) } + launch { paymentBehaviourVM.fetchData(arguments, screenName) } } viewLifecycleOwner.lifecycleScope.launchWhenStarted { launch { diff --git a/android/app/src/main/java/com/naviapp/payment_behaviour/view_models/PaymentBehaviourVM.kt b/android/app/src/main/java/com/naviapp/payment_behaviour/view_models/PaymentBehaviourVM.kt index 1b7f04aa43..a808bf77d7 100644 --- a/android/app/src/main/java/com/naviapp/payment_behaviour/view_models/PaymentBehaviourVM.kt +++ b/android/app/src/main/java/com/naviapp/payment_behaviour/view_models/PaymentBehaviourVM.kt @@ -33,13 +33,17 @@ class PaymentBehaviourVM @Inject constructor(private val paymentRepository: Paym private var _paymentInfoResponse = MutableStateFlow(GenericWidgetState.Init) var paymentInfoResponse = _paymentInfoResponse.asStateFlow() - fun fetchData(arguments: Bundle?) { + fun fetchData(arguments: Bundle?, naeScreenName: String) { val behaviourType = arguments?.getString(Constants.TYPE) when (val type = behaviourType ?: Constants.NEGATIVE) { Constants.NEGATIVE -> { coroutineScope.launch { _negativeReinforcementResponse.emit(GenericWidgetState.Loading) - val response = paymentRepository.fetchPaymentBehaviourWidget(type) + val response = + paymentRepository.fetchPaymentBehaviourWidget( + type, + naeScreenName = naeScreenName + ) if ( response.error == null && response.errors.isNullOrEmpty() && @@ -57,7 +61,11 @@ class PaymentBehaviourVM @Inject constructor(private val paymentRepository: Paym else -> { coroutineScope.launch { _positiveReinforcementResponse.emit(GenericWidgetState.Loading) - val response = paymentRepository.fetchPaymentBehaviourWidget(type) + val response = + paymentRepository.fetchPaymentBehaviourWidget( + type, + naeScreenName = naeScreenName + ) if ( response.error == null && response.errors.isNullOrEmpty() && diff --git a/android/app/src/main/java/com/naviapp/registration/RegistrationActivity.kt b/android/app/src/main/java/com/naviapp/registration/RegistrationActivity.kt index 60325d1437..0c4655c1ed 100644 --- a/android/app/src/main/java/com/naviapp/registration/RegistrationActivity.kt +++ b/android/app/src/main/java/com/naviapp/registration/RegistrationActivity.kt @@ -472,7 +472,7 @@ class RegistrationActivity : } private fun makApiCalls() { - homeVM.fetchNuxScreenDataForEligibleUsers {} + homeVM.fetchNuxScreenDataForEligibleUsers(naeScreenName = screenName) {} naviFirebaseAuthHelper.get().initFirebaseAuth() } diff --git a/android/app/src/main/java/com/naviapp/webredirection/presentation/activity/WebRedirectionActivity.kt b/android/app/src/main/java/com/naviapp/webredirection/presentation/activity/WebRedirectionActivity.kt index 77200314d5..346e0bd11e 100644 --- a/android/app/src/main/java/com/naviapp/webredirection/presentation/activity/WebRedirectionActivity.kt +++ b/android/app/src/main/java/com/naviapp/webredirection/presentation/activity/WebRedirectionActivity.kt @@ -111,7 +111,7 @@ class WebRedirectionActivity : BaseActivity() { ) } initialiseDataIngestion() - webRedirectionVM.fetchTemporarySessionToken() + webRedirectionVM.fetchTemporarySessionToken(naeScreenName = screenName) observeWebRedirectionNavigation() observeSmsUploadDataResponse() } @@ -270,7 +270,9 @@ class WebRedirectionActivity : BaseActivity() { trackEvent(eventName = REDIRECTION_TO_WEB_AUTH_API_FAILED) FullScreenErrorComposeView( error = data.error, - onRetryClick = { webRedirectionVM.fetchTemporarySessionToken() } + onRetryClick = { + webRedirectionVM.fetchTemporarySessionToken(naeScreenName = screenName) + } ) } else -> { @@ -300,7 +302,9 @@ class WebRedirectionActivity : BaseActivity() { trackEvent(eventName = REDIRECTION_TO_WEB_AUTH_API_FAILED) FullScreenErrorComposeView( error = data.error, - onRetryClick = { webRedirectionVM.fetchTemporarySessionToken() } + onRetryClick = { + webRedirectionVM.fetchTemporarySessionToken(naeScreenName = screenName) + } ) } is UiState.Success -> { diff --git a/android/app/src/main/java/com/naviapp/webredirection/presentation/viewModel/WebRedirectionVM.kt b/android/app/src/main/java/com/naviapp/webredirection/presentation/viewModel/WebRedirectionVM.kt index 06b8a70503..0f001c4f39 100644 --- a/android/app/src/main/java/com/naviapp/webredirection/presentation/viewModel/WebRedirectionVM.kt +++ b/android/app/src/main/java/com/naviapp/webredirection/presentation/viewModel/WebRedirectionVM.kt @@ -20,6 +20,7 @@ import com.navi.base.utils.generateRandomString import com.navi.base.utils.generateSHA256Hash import com.navi.base.utils.isNotNullAndNotEmpty import com.navi.base.utils.orFalse +import com.navi.common.checkmate.model.MetricInfo import com.navi.common.constants.APP_VERSION_CODE import com.navi.common.constants.OS_VERSION import com.navi.common.constants.OS_VERSION_NAME @@ -86,14 +87,19 @@ constructor( private var businessUnit: String? = null - fun fetchTemporarySessionToken() { + fun fetchTemporarySessionToken(naeScreenName: String) { viewModelScope.safeLaunch(Dispatchers.IO) { val codeVerifier = generateRandomString(RANDOM_STRING_LENGTH) val codeChallenger = generateSHA256Hash(codeVerifier) val response = repository.fetchTemporarySessionToken( codeChallenger = codeChallenger, - appSessionToken = BaseUtils.getSessionToken().toString() + appSessionToken = BaseUtils.getSessionToken().toString(), + metricInfo = + MetricInfo.LEMetric( + screen = naeScreenName, + isNae = { !it.isValidResponse() } + ) ) if (response.isValidResponse()) { generateUrlForWebRedirect(codeVerifier, response.data?.code.toString()).let { diff --git a/android/navi-chat/src/main/java/com/navi/chat/ui/activities/CRMWebViewActivity.kt b/android/navi-chat/src/main/java/com/navi/chat/ui/activities/CRMWebViewActivity.kt index 7beabaeeec..bd567cfe18 100644 --- a/android/navi-chat/src/main/java/com/navi/chat/ui/activities/CRMWebViewActivity.kt +++ b/android/navi-chat/src/main/java/com/navi/chat/ui/activities/CRMWebViewActivity.kt @@ -108,7 +108,7 @@ class CRMWebViewActivity : BaseActivity() { viewModel.showError.value = true } else { viewModel.showLoader.value = false - viewModel.getCrmWebViewUrl(pathUrl = pathUrl.toString()) + viewModel.getCrmWebViewUrl(pathUrl = pathUrl.toString(), naeScreenName = screenName) } initObservers() diff --git a/android/navi-chat/src/main/java/com/navi/chat/viewmodels/CRMWebSharedViewModel.kt b/android/navi-chat/src/main/java/com/navi/chat/viewmodels/CRMWebSharedViewModel.kt index b72e1a3b37..71f8e8b9e8 100644 --- a/android/navi-chat/src/main/java/com/navi/chat/viewmodels/CRMWebSharedViewModel.kt +++ b/android/navi-chat/src/main/java/com/navi/chat/viewmodels/CRMWebSharedViewModel.kt @@ -51,6 +51,7 @@ import com.navi.chat.utils.WEB import com.navi.common.CommonLibManager import com.navi.common.awsupload.FileDownloadManager import com.navi.common.awsupload.model.DownloadTask +import com.navi.common.checkmate.model.MetricInfo import com.navi.common.constants.APP_VERSION_CODE import com.navi.common.constants.OS_VERSION_NAME import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper @@ -88,14 +89,19 @@ constructor( val showError: MutableLiveData get() = _showError - fun getCrmWebViewUrl(pathUrl: String) { + fun getCrmWebViewUrl(pathUrl: String, naeScreenName: String) { viewModelScope.safeLaunch(Dispatchers.IO) { val codeVerifier = generateRandomString(32) val codeChallenger = generateSHA256Hash(codeVerifier) val response = webRedirectionRepository.fetchTemporarySessionToken( codeChallenger = codeChallenger, - appSessionToken = BaseUtils.getSessionToken().toString() + appSessionToken = BaseUtils.getSessionToken().toString(), + metricInfo = + MetricInfo.ChatMetric( + screen = naeScreenName, + isNae = { !it.isValidResponse() } + ) ) val crmWebViewUrl = 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 8683b33ce0..cf268c6e59 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 @@ -125,6 +125,13 @@ sealed class MetricInfo( isNae = isNae ) + data class LEMetric( + override val screen: String, + override val isNae: (RepoResult) -> Boolean = { + it.error != null || !it.errors.isNullOrEmpty() + }, + ) : MetricInfo>(screen = screen, vertical = ModuleNameV2.LE.name, isNae = isNae) + data class CommonMetric( override val screen: String, override val isNae: (RepoResult) -> Boolean = { @@ -210,6 +217,22 @@ sealed class MetricInfo( defaultNaeDefinition = { !it.isSuccess() } ) } + ModuleNameV2.LE.name, + ModuleNameV2.PL.name, + ModuleNameV2.HL.name -> { + getVerticalNae( + requestMethod = apiRequestMethod, + isNaeDefinition = { !it.isSuccessWithData() }, + defaultNaeDefinition = { !it.isSuccess() } + ) + } + ModuleNameV2.CHAT.name -> { + getVerticalNae( + requestMethod = apiRequestMethod, + isNaeDefinition = { !it.isSuccessWithData() }, + defaultNaeDefinition = { !it.isSuccess() } + ) + } else -> { getVerticalNae( requestMethod = apiRequestMethod, @@ -229,6 +252,10 @@ sealed class MetricInfo( ModuleNameV2.REWARDS.name -> RewardMetric(screenName, isNae) ModuleNameV2.App.name -> AppMetric(screenName, isNae) ModuleNameV2.GOLD.name -> GoldMetric(screenName, isNae) + ModuleNameV2.LE.name, + ModuleNameV2.PL.name, + ModuleNameV2.HL.name -> LEMetric(screenName, isNae) + ModuleNameV2.CHAT.name -> ChatMetric(screenName, isNae) else -> CommonMetric(screenName, isNae) } } diff --git a/android/navi-common/src/main/java/com/navi/common/model/ModuleNameV2.kt b/android/navi-common/src/main/java/com/navi/common/model/ModuleNameV2.kt index 964d7038e9..c2a86868ea 100644 --- a/android/navi-common/src/main/java/com/navi/common/model/ModuleNameV2.kt +++ b/android/navi-common/src/main/java/com/navi/common/model/ModuleNameV2.kt @@ -10,6 +10,7 @@ package com.navi.common.model enum class ModuleNameV2 { APP_SHELL, CYCS, + LE, PL, // For Personal Loan Activities HL, // For Home Loan Activities AMC, // For AMC Activities diff --git a/android/navi-common/src/main/java/com/navi/common/repo/FirebaseAuthRepository.kt b/android/navi-common/src/main/java/com/navi/common/repo/FirebaseAuthRepository.kt index 7091da76e7..0b2e346a3d 100644 --- a/android/navi-common/src/main/java/com/navi/common/repo/FirebaseAuthRepository.kt +++ b/android/navi-common/src/main/java/com/navi/common/repo/FirebaseAuthRepository.kt @@ -7,12 +7,16 @@ package com.navi.common.repo +import com.navi.common.checkmate.model.MetricInfo import com.navi.common.network.retrofit.ResponseCallback import com.navi.common.utils.retrofitService import javax.inject.Inject class FirebaseAuthRepository @Inject constructor() : ResponseCallback() { - suspend fun fetchFirebaseAuthToken() = - apiResponseCallback(retrofitService().generateFirebaseAuthToken()) + suspend fun fetchFirebaseAuthToken(naeScreenName: String) = + apiResponseCallback( + retrofitService().generateFirebaseAuthToken(), + metricInfo = MetricInfo.CommonMetric(screen = naeScreenName, isNae = { false }) + ) } diff --git a/android/navi-common/src/main/java/com/navi/common/utils/FirebaseAuthHelper.kt b/android/navi-common/src/main/java/com/navi/common/utils/FirebaseAuthHelper.kt index faacab7e8a..c8478b4d88 100644 --- a/android/navi-common/src/main/java/com/navi/common/utils/FirebaseAuthHelper.kt +++ b/android/navi-common/src/main/java/com/navi/common/utils/FirebaseAuthHelper.kt @@ -45,7 +45,7 @@ class FirebaseAuthHelper @Inject constructor(private val repository: FirebaseAut private fun fetchFirebaseAuthToken(onAuth: (authStatus: FirebaseAuthStatus) -> Unit) { coroutineScope.launch { - val tokenData = repository.fetchFirebaseAuthToken() + val tokenData = repository.fetchFirebaseAuthToken(naeScreenName = "FirebaseAuthHelper") if (tokenData.error == null && tokenData.errors.isNullOrEmpty()) { tokenData.data?.authToken?.let { refreshFirebaseToken(it, onAuth) } } else { diff --git a/android/navi-common/src/main/java/com/navi/common/webredirection/data/WebRedirectionRepository.kt b/android/navi-common/src/main/java/com/navi/common/webredirection/data/WebRedirectionRepository.kt index 71adaf4ae4..dc583fca70 100644 --- a/android/navi-common/src/main/java/com/navi/common/webredirection/data/WebRedirectionRepository.kt +++ b/android/navi-common/src/main/java/com/navi/common/webredirection/data/WebRedirectionRepository.kt @@ -7,6 +7,7 @@ package com.navi.common.webredirection.data +import com.navi.common.checkmate.model.MetricInfo import com.navi.common.network.models.RedirectionAuthTokenRequest import com.navi.common.network.models.RedirectionAuthTokenResponse import com.navi.common.network.models.RepoResult @@ -21,7 +22,8 @@ class WebRedirectionRepository @Inject constructor(private val retrofitService: suspend fun fetchTemporarySessionToken( codeChallenger: String, appSessionToken: String, - codeChallengeMethod: String = Constants.SHA_256 + codeChallengeMethod: String = Constants.SHA_256, + metricInfo: MetricInfo> ): RepoResult { return apiResponseCallback( retrofitService.fetchTemporarySessionToken( @@ -30,7 +32,8 @@ class WebRedirectionRepository @Inject constructor(private val retrofitService: sessionToken = appSessionToken, codeChallengeMethod = codeChallengeMethod ) - ) + ), + metricInfo = metricInfo ) } }