From 9a0e75c76af2d3de7915112a2479e1c533b754e0 Mon Sep 17 00:00:00 2001 From: Sohan Reddy Atukula Date: Wed, 4 Jun 2025 15:08:31 +0530 Subject: [PATCH] NTP-60013 | Sohan | Added session level action handling for HomePage. (#16427) --- .../naviapp/home/usecase/HomeContentProcessingUseCase.kt | 8 ++------ .../java/com/naviapp/home/viewmodel/HomeViewModel.kt | 9 +++++++++ .../common/alchemist/model/AlchemistScreenDefinition.kt | 2 ++ 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/android/app/src/main/java/com/naviapp/home/usecase/HomeContentProcessingUseCase.kt b/android/app/src/main/java/com/naviapp/home/usecase/HomeContentProcessingUseCase.kt index a2de6aace0..d4f0d0557f 100644 --- a/android/app/src/main/java/com/naviapp/home/usecase/HomeContentProcessingUseCase.kt +++ b/android/app/src/main/java/com/naviapp/home/usecase/HomeContentProcessingUseCase.kt @@ -180,9 +180,7 @@ constructor( isFirstRender = false, ) onContentSynchronized() - if (!isDataUnchanged) { - onHomeFetchSuccessFromNetwork() - } + onHomeFetchSuccessFromNetwork() onSelectiveRefreshStateChange(SelectiveRefreshState.SUCCESS) }, ) @@ -311,9 +309,7 @@ constructor( eventHandler(HpEvents.RenderedFirstTime) } onContentSynchronized() - if (!isDataUnchanged) { - onHomeFetchSuccessFromNetwork() - } + onHomeFetchSuccessFromNetwork() onSelectiveRefreshStateChange(SelectiveRefreshState.SUCCESS) }, ) diff --git a/android/app/src/main/java/com/naviapp/home/viewmodel/HomeViewModel.kt b/android/app/src/main/java/com/naviapp/home/viewmodel/HomeViewModel.kt index 1fe0a710a1..8ee0208ace 100644 --- a/android/app/src/main/java/com/naviapp/home/viewmodel/HomeViewModel.kt +++ b/android/app/src/main/java/com/naviapp/home/viewmodel/HomeViewModel.kt @@ -10,6 +10,7 @@ package com.naviapp.home.viewmodel import android.content.Context import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.lifecycle.viewModelScope import com.navi.analytics.utils.NaviTrackEvent @@ -116,6 +117,8 @@ constructor( var widgetsDisplayed by mutableIntStateOf(0) private set + private var postApiOneTimeActionTriggered by mutableStateOf(false) + fun updateDisplayedWidgetCount(count: Int) { widgetsDisplayed = count } @@ -307,6 +310,12 @@ constructor( naviAnalyticsEventTracker.onHomePageApiResponse( System.currentTimeMillis() - analyticsStartTs ) + if (postApiOneTimeActionTriggered.not()) { + state.value.renderActions?.postApiOneTimeAction?.let { + handleActions(it) + postApiOneTimeActionTriggered = true + } + } } fun handleCtaData( diff --git a/android/navi-common/src/main/java/com/navi/common/alchemist/model/AlchemistScreenDefinition.kt b/android/navi-common/src/main/java/com/navi/common/alchemist/model/AlchemistScreenDefinition.kt index 573d98d83f..e7c3fbad18 100644 --- a/android/navi-common/src/main/java/com/navi/common/alchemist/model/AlchemistScreenDefinition.kt +++ b/android/navi-common/src/main/java/com/navi/common/alchemist/model/AlchemistScreenDefinition.kt @@ -85,6 +85,8 @@ data class AlchemistRenderActions( null, // This contains a list of actions corresponding to specific app events val onImpressionAction: UiTronActionData? = null, // These actions will trigger on actual view of the widget on the screen + val postApiOneTimeAction: UiTronActionData? = + null, // These actions will trigger once in a session after a successful API call ) data class AlchemistActionsCorrespondingToKey(