From 934bc9c391d3a7cd6d888927d670d2d4346ddc3e Mon Sep 17 00:00:00 2001 From: Aparna Vadlamani Date: Mon, 27 Jan 2025 18:53:01 +0530 Subject: [PATCH] NTP-20431 | Added Nudge Action API (#14685) --- .../home/compose/activity/HomePageActivity.kt | 6 -- .../home/model/HpBottomSheetStateHolder.kt | 2 +- .../com/naviapp/home/utils/HomePageUtils.kt | 2 +- .../network/retrofit/RetrofitService.kt | 7 +++ .../bottomsheet/model/BottomSheetData.kt | 1 + .../bottomsheet/model/BottomSheetEvent.kt | 6 +- .../bottomsheet/ui/HomeScreenBottomSheet.kt | 2 +- .../screenOverlay/bottomsheet/utils/Ext.kt | 8 ++- .../handler/BottomSheetEffectHandler.kt | 17 +----- .../handler/ScreenOverlayEffectHandler.kt | 7 +-- .../handler/ScreenOverlayHandler.kt | 15 +++++ .../model/ScreenOverlayActionUpdateRequest.kt | 18 ++++++ .../model/ScreenOverlayPauseRequest.kt | 1 + .../utils/InitScreenOverlayComponents.kt | 57 +++++++++++++++++++ .../repositories/ScreenOverlayRepository.kt | 10 ++++ .../utils/ScreenOverlayAnalytics.kt | 5 ++ .../viewModel/ScreenOverlayVM.kt | 16 ++++++ .../UiTronTriggerApiActionDeserializer.kt | 6 ++ .../model/action/ScreenOverlayApiAction.kt | 12 +++- .../uitron/model/action/TriggerApiActions.kt | 2 + 20 files changed, 162 insertions(+), 38 deletions(-) create mode 100644 android/app/src/main/java/com/naviapp/screenOverlay/model/ScreenOverlayActionUpdateRequest.kt diff --git a/android/app/src/main/java/com/naviapp/home/compose/activity/HomePageActivity.kt b/android/app/src/main/java/com/naviapp/home/compose/activity/HomePageActivity.kt index d1360746f2..3ee1d5b0d0 100644 --- a/android/app/src/main/java/com/naviapp/home/compose/activity/HomePageActivity.kt +++ b/android/app/src/main/java/com/naviapp/home/compose/activity/HomePageActivity.kt @@ -514,12 +514,6 @@ class HomePageActivity : screenOverlayVM.bottomSheetEffect.collect { screenOverlayEffectHandler.handleBottomSheetEffect( effect = it, - triggerStateUpdateApiCall = { nudgeTransitionState -> - screenOverlayVM.triggerStateUpdateApiCall( - nudgeTransitionState, - naeScreenName = screenName, - ) - }, handleUitronAction = { actionData -> screenOverlayVM.handleActions(actionData) }, ) } diff --git a/android/app/src/main/java/com/naviapp/home/model/HpBottomSheetStateHolder.kt b/android/app/src/main/java/com/naviapp/home/model/HpBottomSheetStateHolder.kt index 3493eee3dd..61333838c7 100644 --- a/android/app/src/main/java/com/naviapp/home/model/HpBottomSheetStateHolder.kt +++ b/android/app/src/main/java/com/naviapp/home/model/HpBottomSheetStateHolder.kt @@ -40,7 +40,7 @@ open class HpBottomSheetConfig( val contentColor: String? = null, val scrimColor: String? = null, val onDismiss: () -> Unit = {}, - val onVisible: () -> Unit = {}, + val onView: () -> Unit = {}, val uiStrategy: AlchemistBottomSheetStructure.UiStrategy? = null, val bottomSheetPercentageHeight: Float? = null, ) diff --git a/android/app/src/main/java/com/naviapp/home/utils/HomePageUtils.kt b/android/app/src/main/java/com/naviapp/home/utils/HomePageUtils.kt index 2d9a7da52c..c66f313e6d 100644 --- a/android/app/src/main/java/com/naviapp/home/utils/HomePageUtils.kt +++ b/android/app/src/main/java/com/naviapp/home/utils/HomePageUtils.kt @@ -176,7 +176,7 @@ fun WidgetRenderer( .NotifyMe(HOME_SCREEN_IN_CAPS) .notifyMeNudgeOpenSettingsBottomSheetDismissEvent() }, - onVisible = { + onView = { CommonNaviAnalytics.naviAnalytics .NotifyMe(HOME_SCREEN_IN_CAPS) .notifyMeNudgeOpenSettingsBottomSheetLandEvent() diff --git a/android/app/src/main/java/com/naviapp/network/retrofit/RetrofitService.kt b/android/app/src/main/java/com/naviapp/network/retrofit/RetrofitService.kt index dfdb0d62c4..f9f42a0e6c 100644 --- a/android/app/src/main/java/com/naviapp/network/retrofit/RetrofitService.kt +++ b/android/app/src/main/java/com/naviapp/network/retrofit/RetrofitService.kt @@ -110,6 +110,7 @@ import com.naviapp.payment.models.LoanPreclosureDetail import com.naviapp.payment.models.TransactionDetail import com.naviapp.screenOverlay.model.OverlayItemsStateUpdates import com.naviapp.screenOverlay.model.OverlayScreenStructure +import com.naviapp.screenOverlay.model.ScreenOverlayActionUpdateRequest import java.net.ConnectException import java.net.SocketTimeoutException import java.net.UnknownHostException @@ -656,6 +657,12 @@ interface RetrofitService { @Body request: OverlayItemsStateUpdates ): Response> + @RetryPolicy(retryCount = 3) + @PATCH("/nudge/action") + suspend fun updateScreenOverlayElementAction( + @Body request: ScreenOverlayActionUpdateRequest + ): Response> + @RetryPolicy @EnableRequestBodyLogging @GET("/alchemist/inflate/{screenId}") diff --git a/android/app/src/main/java/com/naviapp/screenOverlay/bottomsheet/model/BottomSheetData.kt b/android/app/src/main/java/com/naviapp/screenOverlay/bottomsheet/model/BottomSheetData.kt index e54488d990..05909fd933 100644 --- a/android/app/src/main/java/com/naviapp/screenOverlay/bottomsheet/model/BottomSheetData.kt +++ b/android/app/src/main/java/com/naviapp/screenOverlay/bottomsheet/model/BottomSheetData.kt @@ -25,4 +25,5 @@ data class BottomSheetConfig( val contentColor: String? = null, val scrimColor: String? = null, val onDismiss: UiTronActionData? = null, + val onView: UiTronActionData? = null, ) diff --git a/android/app/src/main/java/com/naviapp/screenOverlay/bottomsheet/model/BottomSheetEvent.kt b/android/app/src/main/java/com/naviapp/screenOverlay/bottomsheet/model/BottomSheetEvent.kt index d17c8e757b..376ca8a9c1 100644 --- a/android/app/src/main/java/com/naviapp/screenOverlay/bottomsheet/model/BottomSheetEvent.kt +++ b/android/app/src/main/java/com/naviapp/screenOverlay/bottomsheet/model/BottomSheetEvent.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2024 by Navi Technologies Limited + * * Copyright © 2024-2025 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -22,9 +22,7 @@ sealed interface BottomSheetEvent : UiEvent { @Immutable sealed interface BottomSheetEffect : UiEffect { - data class OnBottomSheetRender(val bottomSheetId: String) : BottomSheetEffect - - data class OnBottomSheetDismiss(val onDismiss: UiTronActionData) : BottomSheetEffect + data class TriggerUiTronAction(val uiTronActionData: UiTronActionData) : BottomSheetEffect } @Immutable diff --git a/android/app/src/main/java/com/naviapp/screenOverlay/bottomsheet/ui/HomeScreenBottomSheet.kt b/android/app/src/main/java/com/naviapp/screenOverlay/bottomsheet/ui/HomeScreenBottomSheet.kt index 8443b218a9..9c579186da 100644 --- a/android/app/src/main/java/com/naviapp/screenOverlay/bottomsheet/ui/HomeScreenBottomSheet.kt +++ b/android/app/src/main/java/com/naviapp/screenOverlay/bottomsheet/ui/HomeScreenBottomSheet.kt @@ -86,7 +86,7 @@ fun HomeScreenBottomSheet(viewModel: SharedVM, handleAction: (UiTronAction?) -> LaunchedEffect(key1 = bottomSheetStateHolder.state) { when (bottomSheetStateHolder.state) { HpBottomSheetState.Visible -> { - bottomSheetStateHolder.config?.onVisible?.invoke() + bottomSheetStateHolder.config?.onView?.invoke() modalBottomSheetState.show() } HpBottomSheetState.Hidden -> { diff --git a/android/app/src/main/java/com/naviapp/screenOverlay/bottomsheet/utils/Ext.kt b/android/app/src/main/java/com/naviapp/screenOverlay/bottomsheet/utils/Ext.kt index a7f14eaa30..c04fe4a3c1 100644 --- a/android/app/src/main/java/com/naviapp/screenOverlay/bottomsheet/utils/Ext.kt +++ b/android/app/src/main/java/com/naviapp/screenOverlay/bottomsheet/utils/Ext.kt @@ -25,11 +25,13 @@ fun BottomSheetData.toHpBottomSheetConfig(viewModel: ScreenOverlayVM): HpBottomS onDismiss = { viewModel.sendEvent(BottomSheetEvent.DismissBottomSheet(bottomSheetId.orEmpty())) bottomSheetConfig?.onDismiss?.let { - viewModel.setEffect { BottomSheetEffect.OnBottomSheetDismiss(it) } + viewModel.setEffect { BottomSheetEffect.TriggerUiTronAction(it) } } }, - onVisible = { - viewModel.setEffect { BottomSheetEffect.OnBottomSheetRender(bottomSheetId.orEmpty()) } + onView = { + bottomSheetConfig?.onView?.let { + viewModel.setEffect { BottomSheetEffect.TriggerUiTronAction(it) } + } }, ) } diff --git a/android/app/src/main/java/com/naviapp/screenOverlay/handler/BottomSheetEffectHandler.kt b/android/app/src/main/java/com/naviapp/screenOverlay/handler/BottomSheetEffectHandler.kt index 5e022b7e41..de96797565 100644 --- a/android/app/src/main/java/com/naviapp/screenOverlay/handler/BottomSheetEffectHandler.kt +++ b/android/app/src/main/java/com/naviapp/screenOverlay/handler/BottomSheetEffectHandler.kt @@ -9,30 +9,17 @@ package com.naviapp.screenOverlay.handler import com.navi.uitron.model.data.UiTronActionData import com.naviapp.screenOverlay.bottomsheet.model.BottomSheetEffect -import com.naviapp.screenOverlay.model.OverlayItemStateUpdate -import com.naviapp.screenOverlay.model.OverlayItemTransitionState import javax.inject.Inject class BottomSheetEffectHandler @Inject constructor() { fun handleBottomSheetEffect( effect: BottomSheetEffect, - triggerStateUpdateApiCall: (nudgeTransitionState: List) -> Unit, handleUitronAction: (UiTronActionData) -> Unit, ) { when (effect) { - is BottomSheetEffect.OnBottomSheetRender -> { - triggerStateUpdateApiCall( - mutableListOf( - OverlayItemStateUpdate( - effect.bottomSheetId, - OverlayItemTransitionState.PAUSED, - ) - ) - ) - } - is BottomSheetEffect.OnBottomSheetDismiss -> { - handleUitronAction(effect.onDismiss) + is BottomSheetEffect.TriggerUiTronAction -> { + handleUitronAction(effect.uiTronActionData) } } } diff --git a/android/app/src/main/java/com/naviapp/screenOverlay/handler/ScreenOverlayEffectHandler.kt b/android/app/src/main/java/com/naviapp/screenOverlay/handler/ScreenOverlayEffectHandler.kt index d527586955..c987710635 100644 --- a/android/app/src/main/java/com/naviapp/screenOverlay/handler/ScreenOverlayEffectHandler.kt +++ b/android/app/src/main/java/com/naviapp/screenOverlay/handler/ScreenOverlayEffectHandler.kt @@ -49,13 +49,8 @@ constructor( fun handleBottomSheetEffect( effect: BottomSheetEffect, - triggerStateUpdateApiCall: (nudgeTransitionState: List) -> Unit, handleUitronAction: (UiTronActionData) -> Unit, ) { - bottomSheetEffectHandler.handleBottomSheetEffect( - effect, - triggerStateUpdateApiCall, - handleUitronAction, - ) + bottomSheetEffectHandler.handleBottomSheetEffect(effect, handleUitronAction) } } diff --git a/android/app/src/main/java/com/naviapp/screenOverlay/handler/ScreenOverlayHandler.kt b/android/app/src/main/java/com/naviapp/screenOverlay/handler/ScreenOverlayHandler.kt index 7403e242f4..8881fd34df 100644 --- a/android/app/src/main/java/com/naviapp/screenOverlay/handler/ScreenOverlayHandler.kt +++ b/android/app/src/main/java/com/naviapp/screenOverlay/handler/ScreenOverlayHandler.kt @@ -13,6 +13,7 @@ import com.navi.common.utils.isValidResponse import com.naviapp.screenOverlay.bottomsheet.model.BottomSheetData import com.naviapp.screenOverlay.model.OverlayItemsStateUpdates import com.naviapp.screenOverlay.model.OverlayScreenStructure +import com.naviapp.screenOverlay.model.ScreenOverlayActionUpdateRequest import com.naviapp.screenOverlay.nudge.model.NudgeListData import com.naviapp.screenOverlay.nudge.model.StaticNudgeData import com.naviapp.screenOverlay.popup.model.PopupListData @@ -111,6 +112,20 @@ constructor( } } + suspend fun updateOverlayItemAction( + screenOverlayActionUpdateRequest: ScreenOverlayActionUpdateRequest, + naeScreenName: String, + ) { + val response = + screenOverlayRepository.updateOverlayItemAction( + screenOverlayActionUpdateRequest, + naeScreenName = naeScreenName, + ) + if (response.isValidResponse().not()) { + analyticsEventTracker.actionUpdateApiCallError(response.error.toString()) + } + } + fun collectRequestPopupExists() = collectRequestPopupExists fun triggerClickStreamEvent(eventName: String, eventValue: Map) { diff --git a/android/app/src/main/java/com/naviapp/screenOverlay/model/ScreenOverlayActionUpdateRequest.kt b/android/app/src/main/java/com/naviapp/screenOverlay/model/ScreenOverlayActionUpdateRequest.kt new file mode 100644 index 0000000000..366b40fab1 --- /dev/null +++ b/android/app/src/main/java/com/naviapp/screenOverlay/model/ScreenOverlayActionUpdateRequest.kt @@ -0,0 +1,18 @@ +/* + * + * * Copyright © 2025 by Navi Technologies Limited + * * All rights reserved. Strictly confidential + * + */ + +package com.naviapp.screenOverlay.model + +data class ScreenOverlayActionUpdateRequest(val nudgeItems: List) + +data class OverlayItemActionData(val nudgeId: String, val action: OverlayItemAction) + +enum class OverlayItemAction { + VIEW, + CLICK, + DISMISS, +} diff --git a/android/app/src/main/java/com/naviapp/screenOverlay/model/ScreenOverlayPauseRequest.kt b/android/app/src/main/java/com/naviapp/screenOverlay/model/ScreenOverlayPauseRequest.kt index c02788bb66..30985d11a1 100644 --- a/android/app/src/main/java/com/naviapp/screenOverlay/model/ScreenOverlayPauseRequest.kt +++ b/android/app/src/main/java/com/naviapp/screenOverlay/model/ScreenOverlayPauseRequest.kt @@ -14,4 +14,5 @@ data class OverlayItemStateUpdate(val nudgeId: String, val state: OverlayItemTra enum class OverlayItemTransitionState { PAUSED, SUCCESS_ACKNOWLEDGED, + COMPLETED, } diff --git a/android/app/src/main/java/com/naviapp/screenOverlay/nudge/utils/InitScreenOverlayComponents.kt b/android/app/src/main/java/com/naviapp/screenOverlay/nudge/utils/InitScreenOverlayComponents.kt index ac628d68a0..9b7c887c95 100644 --- a/android/app/src/main/java/com/naviapp/screenOverlay/nudge/utils/InitScreenOverlayComponents.kt +++ b/android/app/src/main/java/com/naviapp/screenOverlay/nudge/utils/InitScreenOverlayComponents.kt @@ -15,7 +15,9 @@ import com.navi.ap.common.handler.HandlePublishEventAction import com.navi.base.deeplink.DeepLinkManager import com.navi.base.model.CtaData import com.navi.base.utils.orFalse +import com.navi.common.uitron.model.action.ScreenOverlayActionUpdateAction import com.navi.common.uitron.model.action.ScreenOverlayApiAction +import com.navi.common.uitron.model.action.ScreenOverlayStateUpdateAction import com.naviapp.appsettings.utils.hasNotificationPermission import com.naviapp.home.compose.activity.HomePageActivity import com.naviapp.home.model.BottomBarTabType @@ -25,6 +27,10 @@ import com.naviapp.home.viewmodel.SharedVM import com.naviapp.screenOverlay.bottomsheet.model.BottomSheetState import com.naviapp.screenOverlay.bottomsheet.utils.toHpBottomSheetConfig import com.naviapp.screenOverlay.bottomsheet.utils.toHpBottomSheetContent +import com.naviapp.screenOverlay.model.OverlayItemAction +import com.naviapp.screenOverlay.model.OverlayItemActionData +import com.naviapp.screenOverlay.model.OverlayItemStateUpdate +import com.naviapp.screenOverlay.model.OverlayItemTransitionState import com.naviapp.screenOverlay.viewModel.ScreenOverlayVM @Composable @@ -122,12 +128,63 @@ fun HandleApiAction( isNotificationPermissionEnabled = isNotificationPermissionEnabled, ) } + is ScreenOverlayStateUpdateAction -> { + val nudgeTransitionState = + action.states.map { + OverlayItemStateUpdate( + nudgeId = it.nudgeId, + state = getOverlayItemTransitionState(overlayItemState = it.state), + ) + } + viewModel.triggerStateUpdateApiCall( + nudgeTransitionState = nudgeTransitionState, + naeScreenName = naeScreenName, + ) + } + is ScreenOverlayActionUpdateAction -> { + val nudgeActions = + action.actions.map { + OverlayItemActionData( + nudgeId = it.nudgeId, + action = getOverlayItemAction(action = it.action), + ) + } + viewModel.triggerActionUpdateApiCall(nudgeActions, naeScreenName) + } else -> {} } } } } +private fun getOverlayItemTransitionState(overlayItemState: String): OverlayItemTransitionState { + return when (overlayItemState) { + OverlayItemTransitionState.SUCCESS_ACKNOWLEDGED.name -> { + OverlayItemTransitionState.SUCCESS_ACKNOWLEDGED + } + OverlayItemTransitionState.COMPLETED.name -> { + OverlayItemTransitionState.COMPLETED + } + else -> { + OverlayItemTransitionState.PAUSED + } + } +} + +private fun getOverlayItemAction(action: String): OverlayItemAction { + return when (action) { + OverlayItemAction.VIEW.name -> { + OverlayItemAction.VIEW + } + OverlayItemAction.CLICK.name -> { + OverlayItemAction.CLICK + } + else -> { + OverlayItemAction.DISMISS + } + } +} + private fun handleCta(activity: HomePageActivity, ctaData: CtaData) { DeepLinkManager.getDeepLinkListener() ?.navigateTo( diff --git a/android/app/src/main/java/com/naviapp/screenOverlay/repositories/ScreenOverlayRepository.kt b/android/app/src/main/java/com/naviapp/screenOverlay/repositories/ScreenOverlayRepository.kt index f421c4c9c3..9c08fbd5e6 100644 --- a/android/app/src/main/java/com/naviapp/screenOverlay/repositories/ScreenOverlayRepository.kt +++ b/android/app/src/main/java/com/naviapp/screenOverlay/repositories/ScreenOverlayRepository.kt @@ -16,6 +16,7 @@ import com.naviapp.network.retrofit.ResponseCallback import com.naviapp.network.retrofit.RetrofitService import com.naviapp.screenOverlay.model.OverlayItemsStateUpdates import com.naviapp.screenOverlay.model.OverlayScreenStructure +import com.naviapp.screenOverlay.model.ScreenOverlayActionUpdateRequest import com.naviapp.screenOverlay.utils.NudgeConstants.HOME_NUDGE import com.naviapp.screenOverlay.utils.NudgeConstants.NUDGE_ID import javax.inject.Inject @@ -52,4 +53,13 @@ constructor(@SuperAppRetroFit private val retrofitService: RetrofitService) : Re retrofitService.updateScreenOverlayElementState(overlayItemsStateUpdates), metricInfo = MetricInfo.AppMetric(screen = naeScreenName, isNae = { false }), ) + + suspend fun updateOverlayItemAction( + screenOverlayActionUpdateRequest: ScreenOverlayActionUpdateRequest, + naeScreenName: String, + ) = + apiResponseCallback( + retrofitService.updateScreenOverlayElementAction(screenOverlayActionUpdateRequest), + metricInfo = MetricInfo.AppMetric(screen = naeScreenName, isNae = { false }), + ) } diff --git a/android/app/src/main/java/com/naviapp/screenOverlay/utils/ScreenOverlayAnalytics.kt b/android/app/src/main/java/com/naviapp/screenOverlay/utils/ScreenOverlayAnalytics.kt index 0d09281c85..5ffe488610 100644 --- a/android/app/src/main/java/com/naviapp/screenOverlay/utils/ScreenOverlayAnalytics.kt +++ b/android/app/src/main/java/com/naviapp/screenOverlay/utils/ScreenOverlayAnalytics.kt @@ -13,6 +13,10 @@ import javax.inject.Inject class ScreenOverlayAnalytics @Inject constructor() { + fun actionUpdateApiCallError(error: String) { + NaviTrackEvent.trackEvent(SCREEN_OVERLAY_ACTION_UPDATE_API_ERROR, mapOf(ERROR to error)) + } + fun pauseApiCallError(error: String) { NaviTrackEvent.trackEvent(SCREEN_OVERLAY_PAUSE_API_ERROR, mapOf(ERROR to error)) } @@ -52,5 +56,6 @@ class ScreenOverlayAnalytics @Inject constructor() { const val BOTTOM_SHEET_ID = "bottom_sheet_id" const val SCREEN_OVERLAY_ID_LIST = "screen_overlay_id_list" const val SCREEN_OVERLAY_PAUSE_API_ERROR = "screen_overlay_pause_api_error" + const val SCREEN_OVERLAY_ACTION_UPDATE_API_ERROR = "screen_overlay_action_update_api_error" } } diff --git a/android/app/src/main/java/com/naviapp/screenOverlay/viewModel/ScreenOverlayVM.kt b/android/app/src/main/java/com/naviapp/screenOverlay/viewModel/ScreenOverlayVM.kt index 0b8af84ee5..3e7537e334 100644 --- a/android/app/src/main/java/com/naviapp/screenOverlay/viewModel/ScreenOverlayVM.kt +++ b/android/app/src/main/java/com/naviapp/screenOverlay/viewModel/ScreenOverlayVM.kt @@ -20,8 +20,10 @@ import com.naviapp.screenOverlay.bottomsheet.model.BottomSheetState import com.naviapp.screenOverlay.bottomsheet.reducer.BottomSheetReducer import com.naviapp.screenOverlay.handler.ScreenOverlayHandler import com.naviapp.screenOverlay.handler.ScreenOverlayUitronActionHandler +import com.naviapp.screenOverlay.model.OverlayItemActionData import com.naviapp.screenOverlay.model.OverlayItemStateUpdate import com.naviapp.screenOverlay.model.OverlayItemsStateUpdates +import com.naviapp.screenOverlay.model.ScreenOverlayActionUpdateRequest import com.naviapp.screenOverlay.nudge.model.NudgeEvent import com.naviapp.screenOverlay.nudge.model.NudgeListData import com.naviapp.screenOverlay.nudge.model.NudgeState @@ -88,6 +90,20 @@ constructor( } } + fun triggerActionUpdateApiCall( + nudgeActions: List, + naeScreenName: String, + ) { + viewModelScope.launch(Dispatchers.IO) { + if (nudgeActions.isNotEmpty()) { + screenOverlayHandler.updateOverlayItemAction( + ScreenOverlayActionUpdateRequest(nudgeItems = nudgeActions), + naeScreenName = naeScreenName, + ) + } + } + } + fun fetchOverlayScreenData( triggerLoadingState: Boolean = false, naeScreenName: String, diff --git a/android/navi-common/src/main/java/com/navi/common/uitron/deserializer/UiTronTriggerApiActionDeserializer.kt b/android/navi-common/src/main/java/com/navi/common/uitron/deserializer/UiTronTriggerApiActionDeserializer.kt index 4b5775fe59..fe36ff6be3 100644 --- a/android/navi-common/src/main/java/com/navi/common/uitron/deserializer/UiTronTriggerApiActionDeserializer.kt +++ b/android/navi-common/src/main/java/com/navi/common/uitron/deserializer/UiTronTriggerApiActionDeserializer.kt @@ -26,7 +26,9 @@ import com.navi.common.uitron.model.action.MMFetchFinarkeinData import com.navi.common.uitron.model.action.PartialFillCallAction import com.navi.common.uitron.model.action.RedeemCoinAction import com.navi.common.uitron.model.action.RewardsAndReferralApiAction +import com.navi.common.uitron.model.action.ScreenOverlayActionUpdateAction import com.navi.common.uitron.model.action.ScreenOverlayApiAction +import com.navi.common.uitron.model.action.ScreenOverlayStateUpdateAction import com.navi.common.uitron.model.action.SdkExitAction import com.navi.common.uitron.model.action.SubmitFeedbackAction import com.navi.common.uitron.model.action.V3HomeAction @@ -86,6 +88,10 @@ class UiTronTriggerApiActionDeserializer : BaseUiTronTriggerApiActionDeserialize context?.deserialize(jsonObject, CycsGetWebTokenUrlApiAction::class.java) ApiType.MMFetchFinarkeinData.name -> context?.deserialize(jsonObject, MMFetchFinarkeinData::class.java) + ApiType.ScreenOverlayStateUpdateAction.name -> + context?.deserialize(jsonObject, ScreenOverlayStateUpdateAction::class.java) + ApiType.ScreenOverlayActionUpdateAction.name -> + context?.deserialize(jsonObject, ScreenOverlayActionUpdateAction::class.java) else -> super.deserialize(json, typeOfT, context) } } diff --git a/android/navi-common/src/main/java/com/navi/common/uitron/model/action/ScreenOverlayApiAction.kt b/android/navi-common/src/main/java/com/navi/common/uitron/model/action/ScreenOverlayApiAction.kt index 799270ebc5..bee5b06e2b 100644 --- a/android/navi-common/src/main/java/com/navi/common/uitron/model/action/ScreenOverlayApiAction.kt +++ b/android/navi-common/src/main/java/com/navi/common/uitron/model/action/ScreenOverlayApiAction.kt @@ -1,6 +1,6 @@ /* * - * * Copyright © 2024 by Navi Technologies Limited + * * Copyright © 2024-2025 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ @@ -10,3 +10,13 @@ package com.navi.common.uitron.model.action import com.navi.uitron.model.action.TriggerApiAction data object ScreenOverlayApiAction : TriggerApiAction() + +data class ScreenOverlayStateUpdateAction(val states: List) : + TriggerApiAction() + +data class ScreenOverlayActionUpdateAction(val actions: List) : + TriggerApiAction() + +data class ScreenOverlayState(val nudgeId: String, val state: String) + +data class ScreenOverlayAction(val nudgeId: String, val action: String) diff --git a/android/navi-common/src/main/java/com/navi/common/uitron/model/action/TriggerApiActions.kt b/android/navi-common/src/main/java/com/navi/common/uitron/model/action/TriggerApiActions.kt index a85fe8c6f9..1a3cbe0849 100644 --- a/android/navi-common/src/main/java/com/navi/common/uitron/model/action/TriggerApiActions.kt +++ b/android/navi-common/src/main/java/com/navi/common/uitron/model/action/TriggerApiActions.kt @@ -77,6 +77,8 @@ enum class ApiType { FetchUsersReferralDataAction, GetScreenOverlayData, MMFetchFinarkeinData, + ScreenOverlayStateUpdateAction, + ScreenOverlayActionUpdateAction, } enum class SourceType {