CoreComponents: BaseFragment now use a DaggerDelegateSavedStateVMFactory
authorDa Risk <da_risk@geekorum.com>
Wed, 07 Aug 2019 16:34:27 -0700
changeset 383 09ab846261ed
parent 382 7bbc32ad309e
child 384 80253ae12417
CoreComponents: BaseFragment now use a DaggerDelegateSavedStateVMFactory
app/src/main/java/com/geekorum/ttrss/CoreComponents.kt
app/src/main/java/com/geekorum/ttrss/article_details/ArticleDetailFragment.kt
app/src/main/java/com/geekorum/ttrss/articles_list/ArticlesListFragment.kt
app/src/main/java/com/geekorum/ttrss/articles_list/FeedListFragment.java
app/src/main/java/com/geekorum/ttrss/articles_list/search/ArticlesSearchFragment.kt
app/src/main/java/com/geekorum/ttrss/settings/manage_features/ManageFeaturesFragment.kt
manage_feeds/src/main/java/com/geekorum/ttrss/manage_feeds/ManageFeedsActivity.kt
manage_feeds/src/main/java/com/geekorum/ttrss/manage_feeds/add_feed/DisplayErrorFragment.kt
manage_feeds/src/main/java/com/geekorum/ttrss/manage_feeds/add_feed/EnterFeedUrlFragment.kt
manage_feeds/src/main/java/com/geekorum/ttrss/manage_feeds/add_feed/SelectFeedFragment.kt
--- a/app/src/main/java/com/geekorum/ttrss/CoreComponents.kt	Wed Aug 07 16:11:59 2019 -0700
+++ b/app/src/main/java/com/geekorum/ttrss/CoreComponents.kt	Wed Aug 07 16:34:27 2019 -0700
@@ -105,10 +105,14 @@
  * Common base Fragment for the application.
  */
 open class BaseFragment (
-    val viewModelsFactory: ViewModelProvider.Factory,
+    private val savedStateVmFactoryCreator: DaggerDelegateSavedStateVMFactory.Creator,
     val fragmentFactory: FragmentFactory
 ) : Fragment() {
 
+    val viewModelsFactory: ViewModelProvider.Factory by lazy {
+        savedStateVmFactoryCreator.create(this, arguments)
+    }
+
     override fun onAttach(context: Context) {
         super.onAttach(context)
         childFragmentManager.fragmentFactory = fragmentFactory
@@ -116,10 +120,14 @@
 }
 
 open class BaseDialogFragment (
-    val viewModelsFactory: ViewModelProvider.Factory,
+    private var savedStateVmFactoryCreator: DaggerDelegateSavedStateVMFactory.Creator,
     val fragmentFactory: FragmentFactory
 ) : DialogFragment() {
 
+    val viewModelsFactory: ViewModelProvider.Factory by lazy {
+        savedStateVmFactoryCreator.create(this, arguments)
+    }
+
     override fun onAttach(context: Context) {
         super.onAttach(context)
         childFragmentManager.fragmentFactory = fragmentFactory
--- a/app/src/main/java/com/geekorum/ttrss/article_details/ArticleDetailFragment.kt	Wed Aug 07 16:11:59 2019 -0700
+++ b/app/src/main/java/com/geekorum/ttrss/article_details/ArticleDetailFragment.kt	Wed Aug 07 16:34:27 2019 -0700
@@ -45,9 +45,9 @@
 import androidx.core.view.doOnNextLayout
 import androidx.core.widget.NestedScrollView
 import androidx.fragment.app.FragmentFactory
-import androidx.lifecycle.ViewModelProvider
 import androidx.lifecycle.lifecycleScope
 import androidx.lifecycle.observe
+import com.geekorum.geekdroid.dagger.DaggerDelegateSavedStateVMFactory
 import com.geekorum.geekdroid.network.OkHttpWebViewClient
 import com.geekorum.ttrss.BaseFragment
 import com.geekorum.ttrss.R
@@ -69,10 +69,10 @@
  * on handsets.
  */
 class ArticleDetailFragment @Inject constructor(
-    viewModelsFactory: ViewModelProvider.Factory,
+    savedStateVmFactoryCreator: DaggerDelegateSavedStateVMFactory.Creator,
     fragmentFactory: FragmentFactory,
     private val okHttpClient: OkHttpClient
-) : BaseFragment(viewModelsFactory, fragmentFactory) {
+) : BaseFragment(savedStateVmFactoryCreator, fragmentFactory) {
 
     private lateinit var binding: FragmentArticleDetailBinding
     private val articleDetailsViewModel: ArticleDetailsViewModel by activityViewModels()
--- a/app/src/main/java/com/geekorum/ttrss/articles_list/ArticlesListFragment.kt	Wed Aug 07 16:11:59 2019 -0700
+++ b/app/src/main/java/com/geekorum/ttrss/articles_list/ArticlesListFragment.kt	Wed Aug 07 16:34:27 2019 -0700
@@ -27,13 +27,13 @@
 import android.view.ViewGroup
 import androidx.core.os.bundleOf
 import androidx.fragment.app.FragmentFactory
-import androidx.lifecycle.ViewModelProvider
 import androidx.lifecycle.lifecycleScope
 import androidx.lifecycle.observe
 import androidx.recyclerview.widget.DefaultItemAnimator
 import androidx.recyclerview.widget.ItemTouchHelper
 import androidx.recyclerview.widget.RecyclerView
 import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
+import com.geekorum.geekdroid.dagger.DaggerDelegateSavedStateVMFactory
 import com.geekorum.geekdroid.views.recyclerview.ItemSwiper
 import com.geekorum.geekdroid.views.recyclerview.ScrollFromBottomAppearanceItemAnimator
 import com.geekorum.ttrss.BaseFragment
@@ -55,8 +55,9 @@
  * Display all the articles in a list.
  */
 class ArticlesListFragment @Inject constructor(
-    viewModelsFactory: ViewModelProvider.Factory, fragmentFactory: FragmentFactory
-) : BaseFragment(viewModelsFactory, fragmentFactory) {
+    savedStateVmFactoryCreator: DaggerDelegateSavedStateVMFactory.Creator,
+    fragmentFactory: FragmentFactory
+) : BaseFragment(savedStateVmFactoryCreator, fragmentFactory) {
 
     private var feedId: Long = 0
 
--- a/app/src/main/java/com/geekorum/ttrss/articles_list/FeedListFragment.java	Wed Aug 07 16:11:59 2019 -0700
+++ b/app/src/main/java/com/geekorum/ttrss/articles_list/FeedListFragment.java	Wed Aug 07 16:34:27 2019 -0700
@@ -40,8 +40,8 @@
 import androidx.core.app.ActivityOptionsCompat;
 import androidx.fragment.app.FragmentFactory;
 import androidx.lifecycle.LiveData;
-import androidx.lifecycle.ViewModelProvider;
 import androidx.lifecycle.ViewModelProviders;
+import com.geekorum.geekdroid.dagger.DaggerDelegateSavedStateVMFactory;
 import com.geekorum.ttrss.BaseFragment;
 import com.geekorum.ttrss.Features;
 import com.geekorum.ttrss.R;
@@ -78,8 +78,8 @@
     private final OnDemandModuleManager moduleManager;
 
     @Inject
-    public FeedListFragment(@NonNull ViewModelProvider.Factory viewModelsFactory, FragmentFactory fragmentFactory, OnDemandModuleManager moduleManager, SharedPreferences preferences) {
-        super(viewModelsFactory, fragmentFactory);
+    public FeedListFragment(@NonNull DaggerDelegateSavedStateVMFactory.Creator savedStateVmFactoryCreator, FragmentFactory fragmentFactory, OnDemandModuleManager moduleManager, SharedPreferences preferences) {
+        super(savedStateVmFactoryCreator, fragmentFactory);
         this.moduleManager = moduleManager;
         this.preferences = preferences;
     }
--- a/app/src/main/java/com/geekorum/ttrss/articles_list/search/ArticlesSearchFragment.kt	Wed Aug 07 16:11:59 2019 -0700
+++ b/app/src/main/java/com/geekorum/ttrss/articles_list/search/ArticlesSearchFragment.kt	Wed Aug 07 16:34:27 2019 -0700
@@ -26,7 +26,7 @@
 import android.view.ViewGroup
 import androidx.fragment.app.FragmentFactory
 import androidx.lifecycle.Observer
-import androidx.lifecycle.ViewModelProvider
+import com.geekorum.geekdroid.dagger.DaggerDelegateSavedStateVMFactory
 import com.geekorum.ttrss.BaseFragment
 import com.geekorum.ttrss.activityViewModels
 import com.geekorum.ttrss.articles_list.ActivityViewModel
@@ -42,9 +42,9 @@
  * Display search results
  */
 class ArticlesSearchFragment @Inject constructor(
-    viewModelsFactory: ViewModelProvider.Factory,
+    savedStateVmFactoryCreator: DaggerDelegateSavedStateVMFactory.Creator,
     fragmentFactory: FragmentFactory
-) : BaseFragment(viewModelsFactory, fragmentFactory) {
+) : BaseFragment(savedStateVmFactoryCreator, fragmentFactory) {
 
     lateinit var binding: FragmentArticlesSearchBinding
     private val activityViewModel: ActivityViewModel by activityViewModels()
--- a/app/src/main/java/com/geekorum/ttrss/settings/manage_features/ManageFeaturesFragment.kt	Wed Aug 07 16:11:59 2019 -0700
+++ b/app/src/main/java/com/geekorum/ttrss/settings/manage_features/ManageFeaturesFragment.kt	Wed Aug 07 16:34:27 2019 -0700
@@ -26,11 +26,11 @@
 import android.view.View
 import android.view.ViewGroup
 import androidx.fragment.app.FragmentFactory
-import androidx.lifecycle.ViewModelProvider
 import androidx.lifecycle.observe
 import androidx.recyclerview.widget.DividerItemDecoration
 import androidx.recyclerview.widget.RecyclerView
 import com.geekorum.geekdroid.app.lifecycle.EventObserver
+import com.geekorum.geekdroid.dagger.DaggerDelegateSavedStateVMFactory
 import com.geekorum.ttrss.BaseFragment
 import com.geekorum.ttrss.databinding.FragmentManageFeaturesBinding
 import com.geekorum.ttrss.databinding.ItemFeatureBinding
@@ -38,9 +38,9 @@
 import javax.inject.Inject
 
 class ManageFeaturesFragment @Inject constructor(
-    viewModelsFactory: ViewModelProvider.Factory,
+    savedStateVmFactoryCreator: DaggerDelegateSavedStateVMFactory.Creator,
     fragmentFactory: FragmentFactory
-) : BaseFragment(viewModelsFactory, fragmentFactory) {
+) : BaseFragment(savedStateVmFactoryCreator, fragmentFactory) {
 
     lateinit var binding: FragmentManageFeaturesBinding
     private val viewModel: ManageFeaturesViewModel by viewModels()
--- a/manage_feeds/src/main/java/com/geekorum/ttrss/manage_feeds/ManageFeedsActivity.kt	Wed Aug 07 16:11:59 2019 -0700
+++ b/manage_feeds/src/main/java/com/geekorum/ttrss/manage_feeds/ManageFeedsActivity.kt	Wed Aug 07 16:34:27 2019 -0700
@@ -39,6 +39,7 @@
 import androidx.recyclerview.widget.RecyclerView
 import com.geekorum.geekdroid.app.lifecycle.EventObserver
 import com.geekorum.geekdroid.dagger.DaggerDelegateFragmentFactory
+import com.geekorum.geekdroid.dagger.DaggerDelegateSavedStateVMFactory
 import com.geekorum.geekdroid.dagger.DaggerDelegateViewModelsFactory
 import com.geekorum.ttrss.BaseDialogFragment
 import com.geekorum.ttrss.BaseFragment
@@ -83,9 +84,9 @@
 }
 
 class ManageFeedsFragment @Inject constructor(
-    viewModelsFactory: ViewModelProvider.Factory,
+    savedStateVmFactoryCreator: DaggerDelegateSavedStateVMFactory.Creator,
     fragmentFactory: FragmentFactory
-) : BaseFragment(viewModelsFactory, fragmentFactory) {
+) : BaseFragment(savedStateVmFactoryCreator, fragmentFactory) {
 
     private lateinit var binding: FragmentManageFeedsBinding
     private val viewModel: ManageFeedViewModel by viewModels()
@@ -157,9 +158,9 @@
 }
 
 class ConfirmUnsubscribeFragment @Inject constructor(
-    viewModelsFactory: DaggerDelegateViewModelsFactory,
+    savedStateVmFactoryCreator: DaggerDelegateSavedStateVMFactory.Creator,
     fragmentFactory: DaggerDelegateFragmentFactory
-) : BaseDialogFragment(viewModelsFactory, fragmentFactory) {
+) : BaseDialogFragment(savedStateVmFactoryCreator, fragmentFactory) {
 
     private val viewModel: ManageFeedViewModel by activityViewModels()
     private val args:ConfirmUnsubscribeFragmentArgs by navArgs()
--- a/manage_feeds/src/main/java/com/geekorum/ttrss/manage_feeds/add_feed/DisplayErrorFragment.kt	Wed Aug 07 16:11:59 2019 -0700
+++ b/manage_feeds/src/main/java/com/geekorum/ttrss/manage_feeds/add_feed/DisplayErrorFragment.kt	Wed Aug 07 16:34:27 2019 -0700
@@ -25,17 +25,17 @@
 import android.view.View
 import android.view.ViewGroup
 import androidx.fragment.app.FragmentFactory
-import androidx.lifecycle.ViewModelProvider
 import androidx.navigation.fragment.navArgs
+import com.geekorum.geekdroid.dagger.DaggerDelegateSavedStateVMFactory
 import com.geekorum.ttrss.BaseFragment
 import com.geekorum.ttrss.manage_feeds.databinding.FragmentAddFeedDisplayErrorBinding
 import javax.inject.Inject
 
 
 class DisplayErrorFragment @Inject constructor(
-    viewModelsFactory: ViewModelProvider.Factory,
+    savedStateVmFactoryCreator: DaggerDelegateSavedStateVMFactory.Creator,
     fragmentFactory: FragmentFactory
-) : BaseFragment(viewModelsFactory, fragmentFactory) {
+) : BaseFragment(savedStateVmFactoryCreator, fragmentFactory) {
 
     private lateinit var binding: FragmentAddFeedDisplayErrorBinding
 
--- a/manage_feeds/src/main/java/com/geekorum/ttrss/manage_feeds/add_feed/EnterFeedUrlFragment.kt	Wed Aug 07 16:11:59 2019 -0700
+++ b/manage_feeds/src/main/java/com/geekorum/ttrss/manage_feeds/add_feed/EnterFeedUrlFragment.kt	Wed Aug 07 16:34:27 2019 -0700
@@ -29,6 +29,7 @@
 import androidx.lifecycle.observe
 import androidx.navigation.fragment.findNavController
 import com.geekorum.geekdroid.app.lifecycle.EventObserver
+import com.geekorum.geekdroid.dagger.DaggerDelegateSavedStateVMFactory
 import com.geekorum.ttrss.BaseFragment
 import com.geekorum.ttrss.activityViewModels
 import com.geekorum.ttrss.manage_feeds.R
@@ -36,9 +37,9 @@
 import javax.inject.Inject
 
 class EnterFeedUrlFragment @Inject constructor(
-    viewModelsFactory: ViewModelProvider.Factory,
+    savedStateVmFactoryCreator: DaggerDelegateSavedStateVMFactory.Creator,
     fragmentFactory: FragmentFactory
-) : BaseFragment(viewModelsFactory, fragmentFactory) {
+) : BaseFragment(savedStateVmFactoryCreator, fragmentFactory) {
 
     private lateinit var binding: FragmentAddFeedEnterUrlBinding
     private val viewModel: SubscribeToFeedViewModel by activityViewModels()
--- a/manage_feeds/src/main/java/com/geekorum/ttrss/manage_feeds/add_feed/SelectFeedFragment.kt	Wed Aug 07 16:11:59 2019 -0700
+++ b/manage_feeds/src/main/java/com/geekorum/ttrss/manage_feeds/add_feed/SelectFeedFragment.kt	Wed Aug 07 16:34:27 2019 -0700
@@ -27,6 +27,7 @@
 import androidx.fragment.app.FragmentFactory
 import androidx.lifecycle.ViewModelProvider
 import androidx.lifecycle.observe
+import com.geekorum.geekdroid.dagger.DaggerDelegateSavedStateVMFactory
 import com.geekorum.ttrss.BaseFragment
 import com.geekorum.ttrss.activityViewModels
 import com.geekorum.ttrss.manage_feeds.R
@@ -34,9 +35,9 @@
 import javax.inject.Inject
 
 class SelectFeedFragment @Inject constructor(
-    viewModelsFactory: ViewModelProvider.Factory,
+    savedStateVmFactoryCreator: DaggerDelegateSavedStateVMFactory.Creator,
     fragmentFactory: FragmentFactory
-) : BaseFragment(viewModelsFactory, fragmentFactory) {
+) : BaseFragment(savedStateVmFactoryCreator, fragmentFactory) {
 
     private lateinit var binding: FragmentAddFeedSelectFeedBinding
     private val viewModel: SubscribeToFeedViewModel by activityViewModels()