TP-85622 | add older nudge ids context for animation (#13058)
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 -> {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user