settings: migrate to hilt
authorDa Risk <da_risk@geekorum.com>
Sat, 13 Jun 2020 20:43:37 -0400
changeset 733 95b5b040a087
parent 732 8cd8b1a09cb5
child 734 2c85f9213f22
settings: migrate to hilt
app/src/main/java/com/geekorum/ttrss/settings/SettingsInitializer.kt
app/src/main/java/com/geekorum/ttrss/settings/di.kt
app/src/main/java/com/geekorum/ttrss/settings/manage_features/InstallFeatureActivity.kt
app/src/main/java/com/geekorum/ttrss/settings/manage_features/ManageFeaturesFragment.kt
app/src/main/java/com/geekorum/ttrss/settings/manage_features/ManageFeaturesViewModel.kt
app/src/main/java/com/geekorum/ttrss/settings/manage_features/di.kt
--- a/app/src/main/java/com/geekorum/ttrss/settings/SettingsInitializer.kt	Sat Jun 13 20:19:49 2020 -0400
+++ b/app/src/main/java/com/geekorum/ttrss/settings/SettingsInitializer.kt	Sat Jun 13 20:43:37 2020 -0400
@@ -28,6 +28,8 @@
 import com.geekorum.ttrss.debugtools.withStrictMode
 import dagger.Binds
 import dagger.Module
+import dagger.hilt.InstallIn
+import dagger.hilt.android.components.ApplicationComponent
 import dagger.multibindings.IntoSet
 import javax.inject.Inject
 
@@ -41,6 +43,7 @@
 }
 
 @Module
+@InstallIn(ApplicationComponent::class)
 abstract class SettingsInitializerModule {
     @Binds
     @IntoSet
--- a/app/src/main/java/com/geekorum/ttrss/settings/di.kt	Sat Jun 13 20:19:49 2020 -0400
+++ b/app/src/main/java/com/geekorum/ttrss/settings/di.kt	Sat Jun 13 20:43:37 2020 -0400
@@ -25,34 +25,30 @@
 import androidx.fragment.app.Fragment
 import androidx.preference.PreferenceManager
 import com.geekorum.geekdroid.dagger.FragmentKey
-import com.geekorum.ttrss.settings.manage_features.InstallFeatureActivity
-import com.geekorum.ttrss.settings.manage_features.ManageFeaturesModule
 import dagger.Binds
 import dagger.Module
 import dagger.Provides
-import dagger.android.ContributesAndroidInjector
+import dagger.hilt.InstallIn
+import dagger.hilt.android.components.ActivityComponent
+import dagger.hilt.android.components.ApplicationComponent
 import dagger.multibindings.IntoMap
 
-@Module(includes = [SettingsInitializerModule::class, ManageFeaturesModule::class])
+@Module
+@InstallIn(ActivityComponent::class)
 abstract class SettingsModule {
 
-    @ContributesAndroidInjector
-    abstract fun contributesSettingsActivityInjector(): SettingsActivity
-
-    @ContributesAndroidInjector
-    abstract fun contributesInstallFeatureActivityInjector(): InstallFeatureActivity
-
     @Binds
     @IntoMap
     @FragmentKey(SettingsActivity.SettingsFragment::class)
     abstract fun bindSettingsFragment(settingsFragment: SettingsActivity.SettingsFragment): Fragment
 
-    @Module
-    companion object {
+}
 
-        @Provides
-        fun providesApplicationPreferences(application: Application): SharedPreferences =
-            PreferenceManager.getDefaultSharedPreferences(application)
-    }
+@Module
+@InstallIn(ApplicationComponent::class)
+object ApplicationPreferencesModule {
 
+    @Provides
+    fun providesApplicationPreferences(application: Application): SharedPreferences =
+        PreferenceManager.getDefaultSharedPreferences(application)
 }
--- a/app/src/main/java/com/geekorum/ttrss/settings/manage_features/InstallFeatureActivity.kt	Sat Jun 13 20:19:49 2020 -0400
+++ b/app/src/main/java/com/geekorum/ttrss/settings/manage_features/InstallFeatureActivity.kt	Sat Jun 13 20:43:37 2020 -0400
@@ -34,12 +34,14 @@
 import com.geekorum.ttrss.on_demand_modules.InstallSession.State.Status.FAILED
 import com.geekorum.ttrss.on_demand_modules.InstallSession.State.Status.INSTALLED
 import com.geekorum.ttrss.on_demand_modules.InstallSession.State.Status.REQUIRES_USER_CONFIRMATION
+import dagger.hilt.android.AndroidEntryPoint
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.launch
 
 /**
  * Quick and dirty InstallFeatureActivity
  */
+@AndroidEntryPoint
 class InstallFeatureActivity : BaseActivity() {
 
     companion object {
--- a/app/src/main/java/com/geekorum/ttrss/settings/manage_features/ManageFeaturesFragment.kt	Sat Jun 13 20:19:49 2020 -0400
+++ b/app/src/main/java/com/geekorum/ttrss/settings/manage_features/ManageFeaturesFragment.kt	Sat Jun 13 20:43:37 2020 -0400
@@ -25,6 +25,7 @@
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import androidx.fragment.app.Fragment
 import androidx.fragment.app.viewModels
 import androidx.lifecycle.observe
 import androidx.recyclerview.widget.DividerItemDecoration
@@ -34,11 +35,11 @@
 import com.geekorum.ttrss.core.BaseFragment
 import com.geekorum.ttrss.databinding.FragmentManageFeaturesBinding
 import com.geekorum.ttrss.databinding.ItemFeatureBinding
+import dagger.hilt.android.AndroidEntryPoint
 import javax.inject.Inject
 
-class ManageFeaturesFragment @Inject constructor(
-    savedStateVmFactoryCreator: DaggerDelegateSavedStateVMFactory.Creator
-) : BaseFragment(savedStateVmFactoryCreator) {
+@AndroidEntryPoint
+class ManageFeaturesFragment : Fragment() {
 
     lateinit var binding: FragmentManageFeaturesBinding
     private val viewModel: ManageFeaturesViewModel by viewModels()
--- a/app/src/main/java/com/geekorum/ttrss/settings/manage_features/ManageFeaturesViewModel.kt	Sat Jun 13 20:19:49 2020 -0400
+++ b/app/src/main/java/com/geekorum/ttrss/settings/manage_features/ManageFeaturesViewModel.kt	Sat Jun 13 20:43:37 2020 -0400
@@ -20,6 +20,7 @@
  */
 package com.geekorum.ttrss.settings.manage_features
 
+import androidx.hilt.lifecycle.ViewModelInject
 import androidx.lifecycle.LiveData
 import androidx.lifecycle.MutableLiveData
 import androidx.lifecycle.ViewModel
@@ -27,9 +28,8 @@
 import com.geekorum.ttrss.Features
 import com.geekorum.ttrss.on_demand_modules.ImmutableModuleManager
 import com.geekorum.ttrss.on_demand_modules.OnDemandModuleManager
-import javax.inject.Inject
 
-class ManageFeaturesViewModel @Inject constructor(
+class ManageFeaturesViewModel @ViewModelInject constructor(
     private val moduleManager: OnDemandModuleManager
 ) : ViewModel() {
     private val moduleStatus = MutableLiveData<List<FeatureStatus>>().apply {
--- a/app/src/main/java/com/geekorum/ttrss/settings/manage_features/di.kt	Sat Jun 13 20:19:49 2020 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/**
- * Geekttrss is a RSS feed reader application on the Android Platform.
- *
- * Copyright (C) 2017-2020 by Frederic-Charles Barthelery.
- *
- * This file is part of Geekttrss.
- *
- * Geekttrss is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Geekttrss is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Geekttrss.  If not, see <http://www.gnu.org/licenses/>.
- */
-package com.geekorum.ttrss.settings.manage_features
-
-import androidx.fragment.app.Fragment
-import androidx.lifecycle.ViewModel
-import com.geekorum.geekdroid.dagger.FragmentKey
-import com.geekorum.geekdroid.dagger.ViewModelKey
-import com.geekorum.ttrss.on_demand_modules.InstallModuleViewModel
-import dagger.Binds
-import dagger.Module
-import dagger.multibindings.IntoMap
-
-@Module
-abstract class ManageFeaturesModule {
-
-    @Binds
-    @IntoMap
-    @FragmentKey(ManageFeaturesFragment::class)
-    abstract fun getManageFeaturesFragment(manageFeaturesFragment: ManageFeaturesFragment): Fragment
-
-    @Binds
-    @IntoMap
-    @ViewModelKey(ManageFeaturesViewModel::class)
-    abstract fun getManageFeaturesViewModel(manageFeaturesViewModel: ManageFeaturesViewModel): ViewModel
-
-    @Binds
-    @IntoMap
-    @ViewModelKey(InstallModuleViewModel::class)
-    abstract fun getInstallModuleViewModel(vm: InstallModuleViewModel): ViewModel
-}