From 52686adababa9b166dbae95d102d3b6f9bf88ac4 Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Mon, 4 Dec 2023 11:22:26 +0530 Subject: [PATCH] BaseFragment: Inject Gson using Hilt * Make BaseFragment an abstract class, no reason to keep this open * This also fixes memory leak that happens after onboarding is finished Signed-off-by: Aayush Gupta --- .../com/aurora/store/module/CommonModule.kt | 23 +++++++++++++++++++ .../store/view/ui/commons/BaseFragment.kt | 10 ++++---- .../view/ui/preferences/NetworkPreference.kt | 6 ++++- 3 files changed, 32 insertions(+), 7 deletions(-) create mode 100644 app/src/main/java/com/aurora/store/module/CommonModule.kt diff --git a/app/src/main/java/com/aurora/store/module/CommonModule.kt b/app/src/main/java/com/aurora/store/module/CommonModule.kt new file mode 100644 index 000000000..f3b89a7ff --- /dev/null +++ b/app/src/main/java/com/aurora/store/module/CommonModule.kt @@ -0,0 +1,23 @@ +package com.aurora.store.module + +import com.google.gson.Gson +import com.google.gson.GsonBuilder +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import java.lang.reflect.Modifier +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +object CommonModule { + + @Singleton + @Provides + fun providesGsonInstance(): Gson { + return GsonBuilder() + .excludeFieldsWithModifiers(Modifier.TRANSIENT) + .create() + } +} diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt b/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt index 58992acdf..f7f1163f1 100644 --- a/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/commons/BaseFragment.kt @@ -26,18 +26,16 @@ import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.Category import com.aurora.store.MobileNavigationDirections import com.google.gson.Gson -import com.google.gson.GsonBuilder -import java.lang.reflect.Modifier +import javax.inject.Inject -open class BaseFragment : Fragment { +abstract class BaseFragment : Fragment { constructor(): super() constructor(@LayoutRes contentLayoutId: Int) : super(contentLayoutId) - var gson: Gson = GsonBuilder().excludeFieldsWithModifiers( - Modifier.TRANSIENT - ).create() + @Inject + lateinit var gson: Gson fun openDetailsFragment(packageName: String, app: App? = null) { findNavController().navigate( diff --git a/app/src/main/java/com/aurora/store/view/ui/preferences/NetworkPreference.kt b/app/src/main/java/com/aurora/store/view/ui/preferences/NetworkPreference.kt index 8e0936c09..045a17a9c 100644 --- a/app/src/main/java/com/aurora/store/view/ui/preferences/NetworkPreference.kt +++ b/app/src/main/java/com/aurora/store/view/ui/preferences/NetworkPreference.kt @@ -39,10 +39,14 @@ import com.aurora.store.view.custom.preference.ListPreferenceMaterialDialogFragm import com.aurora.store.view.custom.preference.ListPreferenceMaterialDialogFragmentCompat.Companion.PREFERENCE_DIALOG_FRAGMENT_TAG import com.google.gson.Gson import dagger.hilt.android.AndroidEntryPoint +import javax.inject.Inject @AndroidEntryPoint class NetworkPreference : PreferenceFragmentCompat() { + @Inject + lateinit var gson: Gson + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.preferences_network, rootKey) @@ -81,7 +85,7 @@ class NetworkPreference : PreferenceFragmentCompat() { save(Preferences.PREFERENCE_PROXY_URL, newProxyUrl) save( Preferences.PREFERENCE_PROXY_INFO, - Gson().toJson(newProxyInfo) + gson.toJson(newProxyInfo) ) preference.summary = newProxyUrl