TP-85622 | add older nudge ids context for animation (#13058)

This commit is contained in:
Abhinav Gupta
2024-10-13 23:42:21 +05:30
committed by GitHub
parent d69ff9fd9c
commit 2e26228398
3 changed files with 28 additions and 13 deletions

View File

@@ -8,6 +8,7 @@
package com.naviapp.screenOverlay.handler
import com.navi.common.network.models.RepoResult
import com.navi.common.utils.Constants
import com.navi.common.utils.isValidResponse
import com.naviapp.screenOverlay.model.OverlayItemsStateUpdates
import com.naviapp.screenOverlay.model.OverlayScreenStructure
@@ -18,7 +19,6 @@ import com.naviapp.screenOverlay.utils.NudgeConstants.NUDGE
import com.naviapp.screenOverlay.utils.PopupConstants.COLLECT_REQUEST
import com.naviapp.screenOverlay.utils.PopupConstants.POPUP
import com.naviapp.screenOverlay.utils.ScreenOverlayAnalytics
import com.naviapp.utils.EMPTY
import javax.inject.Inject
class ScreenOverlayHandler
@@ -28,10 +28,10 @@ constructor(
private val analyticsEventTracker: ScreenOverlayAnalytics
) {
private var collectRequestPopupExists = false
private var lastClickedNudgeId = EMPTY
suspend fun fetchNudgeData(
deletedItemsMap: Map<String, Set<String>>,
lastClickedNudgeId: String,
onSuccess: (nudgeListData: NudgeListData?, popupListData: PopupListData?) -> Unit,
onError: () -> Unit,
naeScreenName: String
@@ -47,7 +47,6 @@ constructor(
analyticsEventTracker.screenOverlayApiError(response.error.toString())
onError()
}
updateLastClickedNudgeId(EMPTY)
}
private fun handleResponse(
@@ -71,7 +70,7 @@ constructor(
collectRequestPopupExists =
updatedPopupList?.any { it.popupType == COLLECT_REQUEST } ?: false
analyticsEventTracker.screenOverlayApi(
updatedNudgeList?.mapNotNull { it.nudgeId },
updatedNudgeList?.map { it.nudgeId + Constants.COMMA + it.nudgeStatus },
updatedPopupList?.mapNotNull { it.popupId },
)
} ?: run { analyticsEventTracker.screenOverlayDataEmpty() }
@@ -96,8 +95,4 @@ constructor(
fun triggerClickStreamEvent(eventName: String, eventValue: Map<String, String>) {
analyticsEventTracker.triggerClickStreamEvent(eventName, eventValue)
}
fun updateLastClickedNudgeId(nudgeId: String) {
lastClickedNudgeId = nudgeId
}
}

View File

@@ -30,6 +30,7 @@ constructor(private val screenOverlayHandler: ScreenOverlayHandler) {
suspend fun onActionTriggered(
uiTronAction: UiTronAction,
sendEvent: (event: UiEvent) -> Unit,
lastClickedNudgeId: (nudgeId: String) -> Unit,
ctaAction: (ctaAction: CtaData) -> Unit,
) {
when (uiTronAction) {
@@ -42,7 +43,7 @@ constructor(private val screenOverlayHandler: ScreenOverlayHandler) {
)
}
is NudgeClickAction -> {
screenOverlayHandler.updateLastClickedNudgeId(uiTronAction.nudgeId.orEmpty())
lastClickedNudgeId(uiTronAction.nudgeId.orEmpty())
sendEvent(NudgeEvent.UpdateNudgeExpandedState(false))
}
is PopupDismissAction -> {

View File

@@ -9,6 +9,7 @@ package com.naviapp.screenOverlay.viewModel
import androidx.lifecycle.viewModelScope
import com.navi.base.model.CtaData
import com.navi.common.utils.EMPTY
import com.navi.common.utils.TemporaryStorageHelper
import com.navi.uitron.model.data.UiTronAction
import com.naviapp.screenOverlay.handler.ScreenOverlayHandler
@@ -18,6 +19,7 @@ import com.naviapp.screenOverlay.model.OverlayItemsStateUpdates
import com.naviapp.screenOverlay.nudge.model.NudgeEvent
import com.naviapp.screenOverlay.nudge.model.NudgeListData
import com.naviapp.screenOverlay.nudge.model.NudgeState
import com.naviapp.screenOverlay.nudge.model.NudgeStatus
import com.naviapp.screenOverlay.nudge.reducer.NudgeReducer
import com.naviapp.screenOverlay.popup.model.PopupEvent
import com.naviapp.screenOverlay.popup.model.PopupListData
@@ -56,6 +58,8 @@ constructor(
val deletedItemsMap = mutableMapOf<String, MutableSet<String>>()
private var fetchOverlayScreenApiJob: Job? = null
private var lastClickedNudgeId = EMPTY
private var lastViewedNudgeIds = mutableSetOf<String>()
init {
viewModelScope.launch { getActionCallback().collect { onActionTriggered(it) } }
@@ -84,12 +88,14 @@ constructor(
handleLoadingState(triggerLoadingState)
screenOverlayHandler.fetchNudgeData(
deletedItemsMap = deletedItemsMap,
lastClickedNudgeId = lastClickedNudgeId,
onSuccess = { nudgeData, popupData ->
handleScreenOverlayApiSuccess(nudgeData, popupData)
handleScreenOverlayApiSuccess(nudgeData, popupData, lastViewedNudgeIds)
},
onError = { handleScreenOverlayApiError() },
naeScreenName = naeScreenName
)
updateLastClickedNudgeId(EMPTY)
}
}
@@ -107,10 +113,18 @@ constructor(
private fun handleScreenOverlayApiSuccess(
nudgeListData: NudgeListData?,
popupListData: PopupListData?
popupListData: PopupListData?,
lastViewedNudgeIds: MutableSet<String>
) {
nudgeListData?.nudgeList?.let { sendEvent(NudgeEvent.UpdateNudgeList(it)) }
nudgeListData?.nudgeList?.let { nudgeList ->
val updatedNudgeList =
nudgeList.filterNot {
it.nudgeStatus == NudgeStatus.SUCCESS && it.nudgeId !in lastViewedNudgeIds
}
sendEvent(NudgeEvent.UpdateNudgeList(updatedNudgeList))
lastViewedNudgeIds.clear()
lastViewedNudgeIds.addAll(updatedNudgeList.mapNotNull { it.nudgeId })
}
popupListData?.popupList?.let {
sendEvent(PopupEvent.UpdatePopupData(it, popupListVisibilityState = true))
}
@@ -132,6 +146,7 @@ constructor(
screenOverlayUitronActionHandler.onActionTriggered(
it,
sendEvent = { event -> sendEvent(event) },
lastClickedNudgeId = { nudgeId -> updateLastClickedNudgeId(nudgeId = nudgeId) },
ctaAction = { ctaData ->
viewModelScope.launch { _redirectionCtaData.emit(ctaData) }
}
@@ -142,4 +157,8 @@ constructor(
fun handleInAppNotificationAnimation() {
viewModelScope.launch { _animateInAppNotificationIcon.update { true } }
}
private fun updateLastClickedNudgeId(nudgeId: String) {
lastClickedNudgeId = nudgeId
}
}