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:
23
app/src/main/java/com/aurora/store/module/CommonModule.kt
Normal file
23
app/src/main/java/com/aurora/store/module/CommonModule.kt
Normal 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()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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(
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user