Api caching (#5509)

* Added Caching on all home page

* removed cache files

* Added flag for api caching

* Fix multiple api calls

* added fragment safe check

* added in clear

* refector

* Fix loader issue on background

* Fix issues

* code cleanup

* skip device details modifiy api

* Fix Api Call missing

* Code cleanup
This commit is contained in:
shankar yadav
2023-02-28 19:23:58 +05:30
committed by GitHub Enterprise
parent 4e84db2b5f
commit 8d07fb1417
9 changed files with 6 additions and 52 deletions

View File

@@ -191,9 +191,6 @@ class NewDashboardActivity :
}
}
/*
* If you are adding new fragment here, please add in the hideFragments(fragmentTransaction) method too
* */
private fun getFragment(screen: String, bundle: Bundle?): Fragment {
return when (screen) {
HomeFragment.TAG -> HomeFragment.newInstance(bundle)
@@ -412,9 +409,8 @@ class NewDashboardActivity :
}
private fun checkForAppUpdate() {
updateApp(screenName = com.navi.common.utils.Constants.HOME_LOAN) {
updateAppDetails,
startUpdatingApp ->
updateApp(screenName = com.navi.common.utils.Constants.HOME_LOAN) { updateAppDetails,
startUpdatingApp ->
updateInAppDialog =
UpdateInAppDialog(updateAppDetails, this) { startUpdatingApp.invoke() }
updateInAppDialog.safelyShowDialog()
@@ -629,14 +625,9 @@ class NewDashboardActivity :
}
private fun hideFragments(fragmentTransaction: FragmentTransaction) {
hideFragments(HomeFragment.TAG, fragmentTransaction)
hideFragments(DashboardFragment.TAG, fragmentTransaction)
hideFragments(ProfileFragment.TAG, fragmentTransaction)
hideFragments(FundListingFragmentV2.TAG, fragmentTransaction)
}
private fun hideFragments(tag: String, fragmentTransaction: FragmentTransaction) {
val currentFragment: Fragment? = supportFragmentManager.findFragmentByTag(tag)
currentFragment?.let { fragmentTransaction.hide(it) }
val fragments = supportFragmentManager.fragments
fragments.forEach { currentFragment ->
currentFragment?.let { fragmentTransaction.hide(it) }
}
}
}

View File

@@ -24,7 +24,6 @@ object FirebaseRemoteConfigHelper {
const val RAGE_TAP_COUNT = "RAGE_TAP_COUNT"
const val API_CACHING_TIME = "API_CACHING_TIME"
const val API_CACHING_DISABLE = "API_CACHING_DISABLE"
const val API_CACHING_DISABLE_SCREENS = "API_CACHING_DISABLE_SCREENS"
const val RAGE_TAP_DELAY_TIME = "RAGE_TAP_DELAY_TIME"
const val RETRY_COUNT_OF_SMS_INGESTION = "RETRY_COUNT_OF_SMS_INGESTION"
const val GST_USERNAME_PASSWORD_MAX_LIMIT = "GST_USERNAME_PASSWORD_MAX_LIMIT"

View File

@@ -22,7 +22,6 @@ import androidx.annotation.LayoutRes
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.lifecycle.ViewModelProvider
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import com.google.android.play.core.appupdate.AppUpdateInfo
@@ -121,7 +120,6 @@ abstract class BaseActivity :
if (BaseUtils.isUserLoggedIn()) checkLocationPermission()
inAppUpdate.addLifeCycleObserver(lifecycle)
inAppUpdate.addInAppUpdateListener(this)
TemporaryStorageHelper.addScreen(screenName)
}
override fun onResume() {

View File

@@ -18,7 +18,6 @@ import androidx.databinding.DataBindingUtil
import androidx.databinding.ViewDataBinding
import androidx.fragment.app.DialogFragment
import com.navi.common.R
import com.navi.common.utils.TemporaryStorageHelper
abstract class BaseDialogFragment<T : ViewDataBinding>(
@LayoutRes val layoutId: Int,
@@ -41,7 +40,6 @@ abstract class BaseDialogFragment<T : ViewDataBinding>(
savedInstanceState: Bundle?,
): View? {
binding = DataBindingUtil.inflate(inflater, layoutId, container, false, null)
TemporaryStorageHelper.addScreen(screenName)
return binding.root
}

View File

@@ -158,7 +158,6 @@ abstract class BaseFragment : Fragment() {
if (screenName.isNotBlank()) {
NaviTrackEvent.startScreen(screenName, getStartScreenEventAttributes())
}
TemporaryStorageHelper.addScreen(screenName)
NaviTrackEvent.sendScreenTransitionEvent(screenName)
setupQueryMap()
}

View File

@@ -28,7 +28,6 @@ object TemporaryStorageHelper {
private var viewVisible = HashMap<String, Boolean>()
private var apiTs = HashMap<String, Long>()
private var isScreenDataNeedsToUpdated = HashMap<String, Boolean>()
private var screens = arrayListOf<String>()
fun clear() {
homePageResponse = null
@@ -62,10 +61,6 @@ object TemporaryStorageHelper {
}
if (FirebaseRemoteConfigHelper.getBoolean(FirebaseRemoteConfigHelper.API_CACHING_DISABLE)
|| isCachingDisableForThisFlow(
screens,
FirebaseRemoteConfigHelper.getString(FirebaseRemoteConfigHelper.API_CACHING_DISABLE_SCREENS)
)
|| isScreenDataNeedsToUpdated[key].orFalse()
) {
return true
@@ -75,12 +70,4 @@ object TemporaryStorageHelper {
return lastApiCallTime > FirebaseRemoteConfigHelper.getLong(FirebaseRemoteConfigHelper.API_CACHING_TIME)
}
fun addScreen(screenName: String) {
screens.add(screenName)
}
fun clearScreens() {
screens.clear()
}
}

View File

@@ -13,8 +13,6 @@ import android.net.ConnectivityManager
import android.os.Environment
import android.view.View
import android.view.inputmethod.InputMethodManager
import com.google.common.reflect.TypeToken
import com.google.gson.Gson
import com.navi.analytics.appsflyer.AppsFlyerUtil
import com.navi.base.sharedpref.CommonPrefConstants
import com.navi.base.sharedpref.PreferenceManager
@@ -224,18 +222,5 @@ fun cacheDirUri(fileName: String, applicationContext: Context): String {
return "file://${applicationContext.externalCacheDir?.path}/$fileName"
}
fun isCachingDisableForThisFlow(firstList: List<String>, secondData: String): Boolean {
if (firstList.isEmpty() || secondData.isEmpty())
return false
val secondList =
Gson().fromJson<List<String>>(secondData, object : TypeToken<List<String>>() {}.type)
secondList.forEach {
if (firstList.contains(it).orFalse()) {
return true
}
}
return false
}
fun downloadsDirUri(fileName: String) =
"file://${Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).path}/$fileName"

View File

@@ -95,7 +95,6 @@ abstract class BaseActivity : AppCompatActivity() {
mapOf(Pair("type", "activity"))
)
}
TemporaryStorageHelper.addScreen(screenName)
}
override fun onStart() {

View File

@@ -27,7 +27,6 @@ import com.navi.common.network.models.ErrorMessage
import com.navi.common.network.models.GenericErrorResponse
import com.navi.common.ui.fragment.CommonDialogBox
import com.navi.common.utils.CommonNaviAnalytics
import com.navi.common.utils.TemporaryStorageHelper
import com.navi.common.utils.getNetworkType
import com.navi.insurance.R
import com.navi.insurance.analytics.NaviInsuranceAnalytics
@@ -73,7 +72,6 @@ abstract class BaseFragment : Fragment() {
savedInstanceState: Bundle?
): View? {
NaviTrackEvent.sendScreenTransitionEvent(screenName)
TemporaryStorageHelper.addScreen(screenName)
return super.onCreateView(inflater, container, savedInstanceState)
}