diff --git a/android/navi-bbps/src/main/kotlin/com/navi/bbps/common/viewmodel/NaviBbpsBaseVM.kt b/android/navi-bbps/src/main/kotlin/com/navi/bbps/common/viewmodel/NaviBbpsBaseVM.kt index c7d8cbec85..3dead5c10d 100644 --- a/android/navi-bbps/src/main/kotlin/com/navi/bbps/common/viewmodel/NaviBbpsBaseVM.kt +++ b/android/navi-bbps/src/main/kotlin/com/navi/bbps/common/viewmodel/NaviBbpsBaseVM.kt @@ -311,14 +311,26 @@ abstract class NaviBbpsBaseVM(open val naviBbpsVmData: NaviBbpsVmData) : BaseVM( tags = tags, attributes = attributes, requestId = requestId, + metricInfo = + MetricInfo.BBPSMetric( + screen = naviBbpsVmData.screen.name, + isNae = { false }, + ), ) .firstOrNull() } val coinBurnDeferred = async { - offersRepo.fetchCoinBurnOfferForProduct(product = product).firstOrNull { - it.isSuccessWithData() - } + offersRepo + .fetchCoinBurnOfferForProduct( + product = product, + metricInfo = + MetricInfo.BBPSMetric( + screen = naviBbpsVmData.screen.name, + isNae = { false }, + ), + ) + .firstOrNull { it.isSuccessWithData() } } // Await both responses @@ -354,7 +366,15 @@ abstract class NaviBbpsBaseVM(open val naviBbpsVmData: NaviBbpsVmData) : BaseVM( viewModelScope.launch(Dispatchers.IO) { try { offersRepo - .fetchOffersForProductForMultipleRequests(product, offerRequestList) + .fetchOffersForProductForMultipleRequests( + product, + offerRequestList, + metricInfo = + MetricInfo.BBPSMetric( + screen = naviBbpsVmData.screen.name, + isNae = { false }, + ), + ) .collect { response -> if (response.isValidResponse()) { val mapper = OfferResponseToOfferDataMapper() diff --git a/android/navi-rr/src/main/java/com/navi/rr/common/repo/OffersRepo.kt b/android/navi-rr/src/main/java/com/navi/rr/common/repo/OffersRepo.kt index a75e70a1d9..3d5fe6434c 100644 --- a/android/navi-rr/src/main/java/com/navi/rr/common/repo/OffersRepo.kt +++ b/android/navi-rr/src/main/java/com/navi/rr/common/repo/OffersRepo.kt @@ -8,6 +8,7 @@ package com.navi.rr.common.repo import com.navi.base.AppServiceManager +import com.navi.common.checkmate.model.MetricInfo import com.navi.common.network.models.RepoResult import com.navi.common.utils.addKeyIfMissing import com.navi.rr.common.models.CoinBurnData @@ -36,29 +37,32 @@ constructor( tags: List? = null, attributes: Map? = null, requestId: String? = null, + metricInfo: MetricInfo>>, ): Flow>> { return cacheHandlerProxy.fetchData>( fetchFromAlternativeSource = { responseHandler.handleResponse( - retrofitService - .fetchOffersForProduct( - product = product, - offerRequest = - OfferRequest( - tags = tags ?: listOf(ALL), - attributes = - attributes - .addKeyIfMissing( - APP_VERSION_CODE, - AppServiceManager.appVersionCode, - ) - .addKeyIfMissing(OS_TYPE, OFFERS_OS_TYPE_ANDROID), - requestId = requestId, - ), - offerType = ALL, - strategy = CAMPAIGN_PRIORITY, - ) - .toGenericResponse() + response = + retrofitService + .fetchOffersForProduct( + product = product, + offerRequest = + OfferRequest( + tags = tags ?: listOf(ALL), + attributes = + attributes + .addKeyIfMissing( + APP_VERSION_CODE, + AppServiceManager.appVersionCode, + ) + .addKeyIfMissing(OS_TYPE, OFFERS_OS_TYPE_ANDROID), + requestId = requestId, + ), + offerType = ALL, + strategy = CAMPAIGN_PRIORITY, + ) + .toGenericResponse(), + metricInfo = metricInfo, ) } ) @@ -69,28 +73,35 @@ constructor( offerRequestList: List? = emptyList(), offerType: String? = null, strategy: String? = null, + metricInfo: MetricInfo>, ): Flow> { return cacheHandlerProxy.fetchData( fetchFromAlternativeSource = { responseHandler.handleResponse( - retrofitService - .fetchOffersForProductsForMultipleRequests( - product = product, - offerRequest = offerRequestList ?: emptyList(), - offerType = offerType ?: ALL, - strategy = strategy ?: CAMPAIGN_PRIORITY, - ) - .toGenericResponse() + response = + retrofitService + .fetchOffersForProductsForMultipleRequests( + product = product, + offerRequest = offerRequestList ?: emptyList(), + offerType = offerType ?: ALL, + strategy = strategy ?: CAMPAIGN_PRIORITY, + ) + .toGenericResponse(), + metricInfo = metricInfo, ) } ) } - suspend fun fetchCoinBurnOfferForProduct(product: String): Flow> { + suspend fun fetchCoinBurnOfferForProduct( + product: String, + metricInfo: MetricInfo>, + ): Flow> { return cacheHandlerProxy.fetchData( fetchFromAlternativeSource = { responseHandler.handleResponse( - retrofitService.fetchCoinBurnOfferForProduct(product = product) + response = retrofitService.fetchCoinBurnOfferForProduct(product = product), + metricInfo = metricInfo, ) } )