NTP-60270 | Divyesh | origin cta redirection (#16051)
This commit is contained in:
@@ -321,6 +321,25 @@ class NaviBbpsAnalytics private constructor() {
|
||||
)
|
||||
}
|
||||
|
||||
fun onOriginBillDetectionFlowFromExternalEntry(
|
||||
source: String,
|
||||
sessionAttribute: Map<String, String>,
|
||||
initialSource: String,
|
||||
triggerOriginFromExternalEntry: Boolean,
|
||||
) {
|
||||
NaviTrackEvent.trackEventOnClickStream(
|
||||
eventName = "NaviBBPS_CategoryPage_OriginBillDetectionFlowFromExternalEntry",
|
||||
eventValues =
|
||||
mapOf(
|
||||
NAVI_BBPS_SOURCE to source,
|
||||
NAVI_BBPS_SESSION_ID to sessionAttribute[NAVI_BBPS_SESSION_ID].orEmpty(),
|
||||
NAVI_BBPS_INITIAL_SOURCE to initialSource,
|
||||
"triggerOriginFromExternalEntry" to
|
||||
triggerOriginFromExternalEntry.toString(),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
fun onOriginWidgetAddDetectedBillsClicked(
|
||||
source: String,
|
||||
sessionAttribute: Map<String, String>,
|
||||
|
||||
@@ -10,6 +10,7 @@ package com.navi.bbps.common
|
||||
enum class NaviBbpsScreen(val screenName: String) {
|
||||
NAVI_BBPS_MAIN(screenName = "MainVm"),
|
||||
NAVI_BBPS_BILL_CATEGORIES(screenName = "NaviBBPS_CategoryPage"),
|
||||
NAVI_BBPS_BILL_CATEGORIES_WITH_PARAMS(screenName = "NaviBBPS_CategoryPage"),
|
||||
NAVI_BBPS_BILL_CATEGORIES_V2(screenName = "NaviBBPS_CategoryPageV2"),
|
||||
NAVI_BBPS_MY_SAVED_BILLS(screenName = "NaviBBPS_MyBills"),
|
||||
NAVI_BBPS_MY_BILL_HISTORY_DETAILS(screenName = "NaviBBPS_MyBillsTransactionHistory"),
|
||||
|
||||
@@ -58,6 +58,7 @@ import com.navi.common.network.models.isSuccessWithData
|
||||
import dagger.Lazy
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import javax.inject.Inject
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.asSharedFlow
|
||||
@@ -144,6 +145,12 @@ constructor(
|
||||
private val _onOriginNuxCtaClicked = MutableSharedFlow<Boolean>()
|
||||
val onOriginNuxCtaClicked = _onOriginNuxCtaClicked.asSharedFlow()
|
||||
|
||||
private val triggerOriginFromExternalEntry: Boolean =
|
||||
savedStateHandle.get<Boolean>("triggerOriginFromExternalEntry").orFalse()
|
||||
|
||||
private val _startOriginBillDetectionFlow = MutableSharedFlow<Boolean>(replay = 1)
|
||||
val startOriginBillDetectionFlow = _startOriginBillDetectionFlow.asSharedFlow()
|
||||
|
||||
internal fun setOnOriginNuxCtaClicked(value: Boolean) {
|
||||
viewModelScope.launch { _onOriginNuxCtaClicked.emit(value) }
|
||||
}
|
||||
@@ -167,6 +174,21 @@ constructor(
|
||||
_permissionResult.update { permissionResult }
|
||||
}
|
||||
|
||||
suspend fun startOriginFlow() {
|
||||
naviBbpsAnalytics.onOriginBillDetectionFlowFromExternalEntry(
|
||||
source = source,
|
||||
initialSource = initialSource,
|
||||
sessionAttribute = getNaviBbpsSessionAttributes(),
|
||||
triggerOriginFromExternalEntry = triggerOriginFromExternalEntry,
|
||||
)
|
||||
_startOriginBillDetectionFlow.emit(true)
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalCoroutinesApi::class)
|
||||
fun resetOriginBillDetectionReplayCache() {
|
||||
_startOriginBillDetectionFlow.resetReplayCache()
|
||||
}
|
||||
|
||||
init {
|
||||
viewModelScope.launch(dispatcherProvider.io) {
|
||||
launch { billCategoriesStateV2.collect { initBottomSheetHandler() } }
|
||||
@@ -189,7 +211,9 @@ constructor(
|
||||
|
||||
val originSessionAttributes = updateOriginAttributes()
|
||||
|
||||
val isOriginNuxSeen = originSessionAttributes.isOriginNuxSeen
|
||||
val isOriginNuxSeen =
|
||||
originSessionAttributes.isOriginNuxSeen || triggerOriginFromExternalEntry
|
||||
|
||||
naviBbpsAnalytics.onProjectOriginExperimentFetched(
|
||||
initialSource = initialSource,
|
||||
isExperimentEnabled = abTestingItemResponse.isEnabled.orFalse(),
|
||||
@@ -211,6 +235,11 @@ constructor(
|
||||
originSessionHandler.setOriginNuxSeen()
|
||||
}
|
||||
|
||||
if (triggerOriginFromExternalEntry) {
|
||||
originSessionHandler.setOriginNuxSeen()
|
||||
startOriginFlow()
|
||||
}
|
||||
|
||||
detectedBillsRepository.getCachedDetectedBillsAsFlow().collect {
|
||||
updateOriginAttributes()
|
||||
}
|
||||
|
||||
@@ -190,8 +190,8 @@ fun BillCategoriesScreenV2(
|
||||
initialSource: String = NaviBbpsScreen.NAVI_BBPS_BILL_CATEGORIES_V2.name,
|
||||
naviBbpsAnalytics: NaviBbpsAnalytics.BillCategories =
|
||||
NaviBbpsAnalytics.INSTANCE.BillCategories(),
|
||||
triggerOriginFromExternalEntry: Boolean = false,
|
||||
) {
|
||||
|
||||
val billCategoryStateV2 by viewModel.billCategoriesStateV2.collectAsStateWithLifecycle()
|
||||
val rewardsDetails by viewModel.rewardsDetails.collectAsStateWithLifecycle()
|
||||
val billCategoryBottomSheetType by
|
||||
@@ -647,6 +647,21 @@ fun BillCategoryScreenRenderer(
|
||||
}
|
||||
}
|
||||
|
||||
LaunchedEffect(Unit) {
|
||||
viewModel.startOriginBillDetectionFlow.collectLatest { startOriginBillDetectionFlow ->
|
||||
viewModel.resetOriginBillDetectionReplayCache()
|
||||
if (startOriginBillDetectionFlow) {
|
||||
if (fetchSmsPermissionState.allPermissionsGranted) {
|
||||
viewModel.showLoadingBottomSheet()
|
||||
openSheet()
|
||||
viewModel.startDetectingBills()
|
||||
} else {
|
||||
requestPermission()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
LaunchedEffect(Unit) {
|
||||
viewModel.onOriginNuxCtaClicked.collectLatest { isCtaClicked ->
|
||||
if (isCtaClicked) {
|
||||
|
||||
@@ -17,6 +17,7 @@ import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.rememberCoroutineScope
|
||||
import androidx.compose.ui.Modifier
|
||||
import com.navi.base.utils.orFalse
|
||||
import com.navi.bbps.common.BBPS_BILLER_SEARCH_BOX_PLACEHOLDER_TEXT
|
||||
import com.navi.bbps.common.BBPS_CATEGORY_ICON_URL
|
||||
import com.navi.bbps.common.BBPS_CATEGORY_ID
|
||||
@@ -114,6 +115,15 @@ fun BbpsRoutingLauncherScreen(
|
||||
initialSource = NAVI_HOME,
|
||||
)
|
||||
}
|
||||
NaviBbpsScreen.NAVI_BBPS_BILL_CATEGORIES_WITH_PARAMS.name -> {
|
||||
BillCategoriesScreenV2Destination(
|
||||
triggerOriginFromExternalEntry =
|
||||
bundle
|
||||
.getString("triggerOriginFromExternalEntry")
|
||||
?.toBooleanStrictOrNull()
|
||||
.orFalse()
|
||||
)
|
||||
}
|
||||
else -> BillCategoriesScreenV2Destination()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user