From 29d3c16541a6388369da4a0d29c9c44781a38b74 Mon Sep 17 00:00:00 2001 From: Abhinav Gupta Date: Thu, 16 Jan 2025 15:47:33 +0530 Subject: [PATCH] NTP-28755 | add isCachedDataAvailable check in nae (#14545) --- .../home/respository/ProfileRepository.kt | 6 ++++- .../com/naviapp/home/viewmodel/ProfileVM.kt | 27 ++++++++++--------- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/android/app/src/main/java/com/naviapp/home/respository/ProfileRepository.kt b/android/app/src/main/java/com/naviapp/home/respository/ProfileRepository.kt index d310285dd7..a1f79c5bbd 100644 --- a/android/app/src/main/java/com/naviapp/home/respository/ProfileRepository.kt +++ b/android/app/src/main/java/com/naviapp/home/respository/ProfileRepository.kt @@ -28,6 +28,7 @@ constructor(@SuperAppRetroFit private val superAppRetrofitService: RetrofitServi isScreenLockEnabled: Boolean, isMobileScreenLockSet: Boolean, naeScreenName: String, + isCachedDataAvailable: Boolean, ): RepoResult { return apiResponseCallback( superAppRetrofitService.fetchProfileForgeScreen( @@ -38,7 +39,10 @@ constructor(@SuperAppRetroFit private val superAppRetrofitService: RetrofitServi screenId = PROFILE_SCREEN, ), metricInfo = - MetricInfo.AppMetric(screen = naeScreenName, isNae = { !it.isSuccessWithData() }), + MetricInfo.AppMetric( + screen = naeScreenName, + isNae = { isCachedDataAvailable.not() && !it.isSuccessWithData() }, + ), ) } } diff --git a/android/app/src/main/java/com/naviapp/home/viewmodel/ProfileVM.kt b/android/app/src/main/java/com/naviapp/home/viewmodel/ProfileVM.kt index 807617fbf7..88774b3eef 100644 --- a/android/app/src/main/java/com/naviapp/home/viewmodel/ProfileVM.kt +++ b/android/app/src/main/java/com/naviapp/home/viewmodel/ProfileVM.kt @@ -12,6 +12,7 @@ import com.google.gson.Gson import com.navi.base.cache.model.NaviCacheEntity import com.navi.base.cache.repository.NaviCacheRepository import com.navi.base.cache.util.NaviSharedDbKeys +import com.navi.base.utils.isNotNullAndNotEmpty import com.navi.common.commoncomposables.utils.resetScrollToTop import com.navi.common.network.models.RepoResult import com.navi.common.utils.BiometricPromptUtils @@ -131,23 +132,23 @@ constructor( naeScreenName: String, ) { coroutineScope.launch(Dispatchers.IO) { - if (canCachedDataBeUsed) { - val profilePageResponse = - naviCacheRepository.get(key = NaviSharedDbKeys.NAVI_APP_PROFILE.keyName) - if (profilePageResponse?.value != null) { - cacheResponse = - dataDeserializers.fromJson( - profilePageResponse.value, - ScreenDefinition::class.java, - ) - _profileScreenDataState.update { ProfileScreenState.Success(cacheResponse) } - } - canCachedDataBeUsed = true + val profilePageResponse = + naviCacheRepository.get(key = NaviSharedDbKeys.NAVI_APP_PROFILE.keyName) + val isCacheValid = + canCachedDataBeUsed && profilePageResponse?.value.isNotNullAndNotEmpty() + if (isCacheValid) { + val cacheResponse = + dataDeserializers.fromJson( + profilePageResponse?.value, + ScreenDefinition::class.java, + ) + _profileScreenDataState.update { ProfileScreenState.Success(cacheResponse) } } getProfileResponseFromApi( isScreenLockEnabled = isScreenLockEnabled, isMobileScreenLockSet = isMobileScreenLockSet, naeScreenName = naeScreenName, + isCachedDataAvailable = isCacheValid, ) } } @@ -167,12 +168,14 @@ constructor( isScreenLockEnabled: Boolean, isMobileScreenLockSet: Boolean, naeScreenName: String, + isCachedDataAvailable: Boolean, ) { val response = repository.fetchProfileItems( isScreenLockEnabled = isScreenLockEnabled, isMobileScreenLockSet = isMobileScreenLockSet, naeScreenName = naeScreenName, + isCachedDataAvailable = isCachedDataAvailable, ) if (response.isValidResponse()) { if (::cacheResponse.isInitialized) {