diff --git a/android/navi-coin/src/main/java/com/navi/coin/ui/compose/screen/ScratchCardHistoryScreen.kt b/android/navi-coin/src/main/java/com/navi/coin/ui/compose/screen/ScratchCardHistoryScreen.kt index db89c92249..59edf343c0 100644 --- a/android/navi-coin/src/main/java/com/navi/coin/ui/compose/screen/ScratchCardHistoryScreen.kt +++ b/android/navi-coin/src/main/java/com/navi/coin/ui/compose/screen/ScratchCardHistoryScreen.kt @@ -363,10 +363,13 @@ fun ScratchCardHistoryScreen( }, onBackPress = { viewModel.clearScratchCardList() - viewModel.refreshData(scratchCardHistoryList) + if (viewModel.userHasScratchedCard) { + viewModel.refreshData(scratchCardHistoryList) + } } ) { response -> scratchAnalyticsTrigger(response, analyticsHandler) + viewModel.userHasScratchedCard = true viewModel.previousBalance = viewModel.previousBalance?.plus( currentScratchCard.rewardAmount.orZero() @@ -415,6 +418,7 @@ fun ScratchCardHistoryScreen( } ) { response -> scratchAnalyticsTrigger(response, analyticsHandler) + viewModel.userHasScratchedCard = true viewModel.previousBalance = viewModel.previousBalance?.plus( nextScratchCard.rewardAmount.orZero() @@ -441,7 +445,8 @@ fun ScratchCardHistoryScreen( modifier = Modifier.clickable(disableRipple = true) { viewModel.clearScratchCardList() - viewModel.refreshData(scratchCardHistoryList) + if (viewModel.userHasScratchedCard) + viewModel.refreshData(scratchCardHistoryList) }, painter = painterResource(CommonR.drawable.ic_close_cross_white), contentDescription = null diff --git a/android/navi-coin/src/main/java/com/navi/coin/vm/ScratchCardScreenVM.kt b/android/navi-coin/src/main/java/com/navi/coin/vm/ScratchCardScreenVM.kt index f90b265cfa..b0bc7ec080 100644 --- a/android/navi-coin/src/main/java/com/navi/coin/vm/ScratchCardScreenVM.kt +++ b/android/navi-coin/src/main/java/com/navi/coin/vm/ScratchCardScreenVM.kt @@ -77,6 +77,8 @@ constructor( var previousBalance: Int? = null + var userHasScratchedCard: Boolean = false + init { launch { getActionCallback().collect { action -> handleScratchCardHistoryScreenActions(action) } @@ -104,6 +106,7 @@ constructor( launch { scratchCardHistoryListSource.refresh() fetchScratchCardTopUiTronConfigs() + userHasScratchedCard = false cancelAllTimer(scratchCardHistoryList) } } diff --git a/android/navi-rr/src/main/java/com/navi/rr/scratchcard/ui/compose/ScratchCardComposable.kt b/android/navi-rr/src/main/java/com/navi/rr/scratchcard/ui/compose/ScratchCardComposable.kt index ca0dd37bfd..5df56ec21a 100644 --- a/android/navi-rr/src/main/java/com/navi/rr/scratchcard/ui/compose/ScratchCardComposable.kt +++ b/android/navi-rr/src/main/java/com/navi/rr/scratchcard/ui/compose/ScratchCardComposable.kt @@ -65,10 +65,13 @@ import com.navi.rr.scratchcard.model.ScratchCardBackResponse import com.navi.rr.scratchcard.model.states.ScratchCardScreenUIState import com.navi.rr.scratchcard.utils.getActivity import com.navi.rr.scratchcard.vm.ScratchCardVM +import com.navi.rr.utils.NaviRRAnalytics +import com.navi.rr.utils.NaviRRAnalytics.Companion.REWARD_SCRATCH_CARD_DISMISS_OUTSIDE import com.navi.rr.utils.composeutils.Init import com.navi.rr.utils.constants.Constants.BACK import com.navi.rr.utils.constants.Constants.LOTTIE import com.navi.rr.utils.constants.Constants.SCRATCH_STARTED +import com.navi.rr.utils.ext.clickable import com.navi.uitron.model.action.TriggerApiAction import com.navi.uitron.model.data.UiTronActionData import com.navi.uitron.utils.pxToDp @@ -194,7 +197,12 @@ fun ScratchCardComposable( bottom = 0.dp ) .background(Color.Transparent) - .graphicsLayer { translationY = translateYState }, + .graphicsLayer { translationY = translateYState } + .clickable(disableRipple = true) { + backHandling?.invoke( + scratchCardVM.scratchCardBackResponse.value + ) + }, horizontalAlignment = Alignment.CenterHorizontally, ) { screenDefinition.screenStructure?.content?.widgets?.let { uiTronWidget -> @@ -442,6 +450,9 @@ private fun ScratchCardScreenHeader( Image( modifier = Modifier.clickable(interactionSource = interactionSource, indication = null) { + NaviRRAnalytics.naviRRAnalytics + .Rewards() + .sendEvent(REWARD_SCRATCH_CARD_DISMISS_OUTSIDE) handleScratchCardBackPress( context, backCtaAction, diff --git a/android/navi-rr/src/main/java/com/navi/rr/scratchcard/ui/compose/ScratchCardRenderer.kt b/android/navi-rr/src/main/java/com/navi/rr/scratchcard/ui/compose/ScratchCardRenderer.kt index 4b51c925ac..8eff452a93 100644 --- a/android/navi-rr/src/main/java/com/navi/rr/scratchcard/ui/compose/ScratchCardRenderer.kt +++ b/android/navi-rr/src/main/java/com/navi/rr/scratchcard/ui/compose/ScratchCardRenderer.kt @@ -48,8 +48,11 @@ import com.navi.rr.scratchcard.model.GratificationResponse import com.navi.rr.scratchcard.model.ScratchCardBackData import com.navi.rr.scratchcard.model.ScratchCardBackResponse import com.navi.rr.scratchcard.vm.ScratchCardVM +import com.navi.rr.utils.NaviRRAnalytics +import com.navi.rr.utils.NaviRRAnalytics.Companion.REWARD_SCRATCH_CARD_DISMISS_OUTSIDE import com.navi.rr.utils.composeutils.Init import com.navi.rr.utils.constants.Constants +import com.navi.rr.utils.ext.clickable import com.navi.rr.utils.rememberCoroutineScope import com.navi.uitron.model.action.TriggerApiAction import com.navi.uitron.utils.pxToDp @@ -93,7 +96,7 @@ fun ScratchCardRenderer( viewModel = scratchCardVM ) - BackHandler { onBackPress?.invoke() } + BackHandler(shouldRender) { onBackPress?.invoke() } if (shouldRender) { CtaActionHandler( @@ -157,7 +160,13 @@ fun ScratchCardRenderer( ) } Column( - modifier = modifier, + modifier = + modifier.clickable(disableRipple = true) { + NaviRRAnalytics.naviRRAnalytics + .Rewards() + .sendEvent(REWARD_SCRATCH_CARD_DISMISS_OUTSIDE) + onBackPress?.invoke() + }, horizontalAlignment = Alignment.CenterHorizontally, ) { screenDefinition.screenStructure?.content?.widgets?.let { uiTronWidgets -> diff --git a/android/navi-rr/src/main/java/com/navi/rr/utils/NaviRRAnalytics.kt b/android/navi-rr/src/main/java/com/navi/rr/utils/NaviRRAnalytics.kt index 0efcbcc9f4..5df28b433b 100644 --- a/android/navi-rr/src/main/java/com/navi/rr/utils/NaviRRAnalytics.kt +++ b/android/navi-rr/src/main/java/com/navi/rr/utils/NaviRRAnalytics.kt @@ -481,6 +481,9 @@ class NaviRRAnalytics private constructor() { const val REFERRAL_LEADERBOARD_PAGE_DISAPPEARS = "referral_leaderboard_page_disappears" private const val DEFAULT_EVENT_NAME = "DEFAULT_EVENT_NAME" private const val RR_GLOBAL_ERROR = "rr_global_errors" + + const val REWARD_SCRATCH_CARD_DISMISS_OUTSIDE = "reward_scratch_card_dismiss_outside" + val naviRRAnalytics: NaviRRAnalytics by lazy { Holder.INSTANCE } } }