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 <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2023-12-04 11:22:26 +05:30
parent 7420c96b86
commit 52686adaba
3 changed files with 32 additions and 7 deletions

View File

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

View File

@@ -26,18 +26,16 @@ import com.aurora.gplayapi.data.models.App
import com.aurora.gplayapi.data.models.Category import com.aurora.gplayapi.data.models.Category
import com.aurora.store.MobileNavigationDirections import com.aurora.store.MobileNavigationDirections
import com.google.gson.Gson import com.google.gson.Gson
import com.google.gson.GsonBuilder import javax.inject.Inject
import java.lang.reflect.Modifier
open class BaseFragment : Fragment { abstract class BaseFragment : Fragment {
constructor(): super() constructor(): super()
constructor(@LayoutRes contentLayoutId: Int) : super(contentLayoutId) constructor(@LayoutRes contentLayoutId: Int) : super(contentLayoutId)
var gson: Gson = GsonBuilder().excludeFieldsWithModifiers( @Inject
Modifier.TRANSIENT lateinit var gson: Gson
).create()
fun openDetailsFragment(packageName: String, app: App? = null) { fun openDetailsFragment(packageName: String, app: App? = null) {
findNavController().navigate( findNavController().navigate(

View File

@@ -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.aurora.store.view.custom.preference.ListPreferenceMaterialDialogFragmentCompat.Companion.PREFERENCE_DIALOG_FRAGMENT_TAG
import com.google.gson.Gson import com.google.gson.Gson
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
class NetworkPreference : PreferenceFragmentCompat() { class NetworkPreference : PreferenceFragmentCompat() {
@Inject
lateinit var gson: Gson
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.preferences_network, rootKey) setPreferencesFromResource(R.xml.preferences_network, rootKey)
@@ -81,7 +85,7 @@ class NetworkPreference : PreferenceFragmentCompat() {
save(Preferences.PREFERENCE_PROXY_URL, newProxyUrl) save(Preferences.PREFERENCE_PROXY_URL, newProxyUrl)
save( save(
Preferences.PREFERENCE_PROXY_INFO, Preferences.PREFERENCE_PROXY_INFO,
Gson().toJson(newProxyInfo) gson.toJson(newProxyInfo)
) )
preference.summary = newProxyUrl preference.summary = newProxyUrl