From 6fb978d702284c450df82eb235f67c29285276b7 Mon Sep 17 00:00:00 2001 From: Hitesh Kumar Date: Mon, 5 May 2025 14:44:57 +0530 Subject: [PATCH] =?UTF-8?q?NTP-58558=20put=20home=20screen=20hash=20in=20p?= =?UTF-8?q?reference=20manager=20and=20pass=20it=20in=20h=E2=80=A6=20(#159?= =?UTF-8?q?50)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../home/usecase/FetchHomeItemsUseCase.kt | 18 +++++++++++++++++- .../naviapp/home/viewmodel/HomeViewModel.kt | 7 +++++++ .../main/java/com/naviapp/utils/Constants.kt | 1 + .../FirebaseRemoteConfigHelper.kt | 1 + .../src/main/res/xml/default_remote_config.xml | 4 ++++ 5 files changed, 30 insertions(+), 1 deletion(-) diff --git a/android/app/src/main/java/com/naviapp/home/usecase/FetchHomeItemsUseCase.kt b/android/app/src/main/java/com/naviapp/home/usecase/FetchHomeItemsUseCase.kt index b7721e0a8e..5a823d215e 100644 --- a/android/app/src/main/java/com/naviapp/home/usecase/FetchHomeItemsUseCase.kt +++ b/android/app/src/main/java/com/naviapp/home/usecase/FetchHomeItemsUseCase.kt @@ -10,6 +10,7 @@ package com.naviapp.home.usecase import com.google.gson.Gson import com.navi.base.AppServiceManager import com.navi.base.cache.model.NaviCacheAltSourceEntity +import com.navi.base.sharedpref.PreferenceManager import com.navi.base.utils.ConnectivityObserver import com.navi.common.alchemist.model.AlchemistScreenDefinition import com.navi.common.alchemist.model.AlchemistScreenRequest @@ -23,6 +24,7 @@ import com.naviapp.app.NaviApplication import com.naviapp.home.respository.HomeRepository import com.naviapp.network.di.DataSerializers import com.naviapp.utils.Constants.HOME_SCREEN_IN_CAPS +import com.naviapp.utils.Constants.HOME_SCREEN_SCREEN_HASH import javax.inject.Inject class FetchHomeItemsUseCase @@ -48,7 +50,21 @@ constructor( FirebaseRemoteConfigHelper.getBoolean( FirebaseRemoteConfigHelper.SEND_SCREEN_HASH_IN_HOME_SCREEN_API ) - val screenHashForApi = if (shouldSendScreenHashInApi) screenHash else null + + val preferenceScreenHash = PreferenceManager.getStringPreference(HOME_SCREEN_SCREEN_HASH) + val refreshScreenHashOnAppRelaunch = + FirebaseRemoteConfigHelper.getBoolean( + FirebaseRemoteConfigHelper.REFRESH_HOME_SCREEN_HASH_ON_APP_RELAUNCH + ) + + val overridenScreenHash = + when { + screenHash.isNullOrEmpty() && !refreshScreenHashOnAppRelaunch -> + preferenceScreenHash + else -> screenHash + } + + val screenHashForApi = if (shouldSendScreenHashInApi) overridenScreenHash else null val deviceInfoDetails = (AppServiceManager.application as NaviApplication) 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 90addcca79..b28c5dc502 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 @@ -51,6 +51,7 @@ import com.naviapp.home.usecase.HandleUpiUseCase import com.naviapp.home.usecase.HomeContentProcessingUseCase import com.naviapp.nux.handler.NewUserExperienceHandler import com.naviapp.utils.Constants.EmailConstants.IS_USER_EMAIL_SUBMITTED +import com.naviapp.utils.Constants.HOME_SCREEN_SCREEN_HASH import com.naviapp.utils.Constants.HomePageConstants.FETCH_HOME_ITEMS_TIMEOUT import com.naviapp.utils.SelectiveRefreshHandler import dagger.Lazy @@ -204,6 +205,12 @@ constructor( viewModelScope.safeLaunch(Dispatchers.IO) { handleDataModification() val screenHash = state.value.screenMetaData?.get(SCREEN_HASH) + if (screenHash.isNotNullAndNotEmpty()) { + PreferenceManager.setStringPreference( + HOME_SCREEN_SCREEN_HASH, + screenHash.orEmpty(), + ) + } with(viewModelScope) { homeContentProcessingUseCase.syncHomeContentData( isFirstTimeRender = state.value.isRenderingFirstTime, diff --git a/android/app/src/main/java/com/naviapp/utils/Constants.kt b/android/app/src/main/java/com/naviapp/utils/Constants.kt index c29e5efba0..83c1b92406 100644 --- a/android/app/src/main/java/com/naviapp/utils/Constants.kt +++ b/android/app/src/main/java/com/naviapp/utils/Constants.kt @@ -230,6 +230,7 @@ object Constants { const val BLOCK_NOTIFICATION = "blockNotification" const val TOPIC = "topic" const val UNKNOWN_ERROR = "Unknown error" + const val HOME_SCREEN_SCREEN_HASH = "HOME_SCREEN_SCREEN_HASH" object Notification { const val HIDE_NOTIFICATION_COUNT = "hideNotificationCount" diff --git a/android/navi-common/src/main/java/com/navi/common/firebaseremoteconfig/FirebaseRemoteConfigHelper.kt b/android/navi-common/src/main/java/com/navi/common/firebaseremoteconfig/FirebaseRemoteConfigHelper.kt index 5e1ec0890d..eec1abbb72 100644 --- a/android/navi-common/src/main/java/com/navi/common/firebaseremoteconfig/FirebaseRemoteConfigHelper.kt +++ b/android/navi-common/src/main/java/com/navi/common/firebaseremoteconfig/FirebaseRemoteConfigHelper.kt @@ -24,6 +24,7 @@ object FirebaseRemoteConfigHelper { private const val CONFIG_SYNC_INTERVAL: Long = 60 * 60 const val SEND_SCREEN_HASH_IN_HOME_SCREEN_API = "SEND_SCREEN_HASH_IN_HOME_SCREEN_API" + const val REFRESH_HOME_SCREEN_HASH_ON_APP_RELAUNCH = "REFRESH_HOME_SCREEN_HASH_ON_APP_RELAUNCH" const val HOME_SCREEN_IMPRESSION_THRESHOLD = "HOME_SCREEN_IMPRESSION_THRESHOLD" const val ADS_IMPRESSION_THRESHOLD = "ADS_IMPRESSION_THRESHOLD" const val ADVERSE_EVENT_SYNC_BATCH_SIZE = "ADVERSE_EVENT_SYNC_BATCH_SIZE" diff --git a/android/navi-common/src/main/res/xml/default_remote_config.xml b/android/navi-common/src/main/res/xml/default_remote_config.xml index f337141b7f..00a733ee96 100644 --- a/android/navi-common/src/main/res/xml/default_remote_config.xml +++ b/android/navi-common/src/main/res/xml/default_remote_config.xml @@ -557,6 +557,10 @@ NAVI_PAY_SEND_MONEY_FTUE_LIMIT 3 + + REFRESH_HOME_SCREEN_HASH_ON_APP_RELAUNCH + true + HOME_SCREEN_IMPRESSION_THRESHOLD 1.0