NTP-58558 put home screen hash in preference manager and pass it in h… (#15950)

This commit is contained in:
Hitesh Kumar
2025-05-05 14:44:57 +05:30
committed by GitHub
parent 2273ce50c2
commit 6fb978d702
5 changed files with 30 additions and 1 deletions

View File

@@ -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)

View File

@@ -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,

View File

@@ -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"

View File

@@ -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"

View File

@@ -557,6 +557,10 @@
<key>NAVI_PAY_SEND_MONEY_FTUE_LIMIT</key>
<value>3</value>
</entry>
<entry>
<key>REFRESH_HOME_SCREEN_HASH_ON_APP_RELAUNCH</key>
<value>true</value>
</entry>
<entry>
<key>HOME_SCREEN_IMPRESSION_THRESHOLD</key>
<value>1.0</value>