ArticleListActivity: separate binding selected feed and selected feed navigation
authorDa Risk <da_risk@geekorum.com>
Fri, 02 Aug 2019 17:16:45 -0700
changeset 372 d4517615acd3
parent 371 9255feca7898
child 373 5c59c39c72a4
ArticleListActivity: separate binding selected feed and selected feed navigation
app/src/main/java/com/geekorum/ttrss/articles_list/ActivityViewModel.kt
app/src/main/java/com/geekorum/ttrss/articles_list/ArticleListActivity.kt
--- a/app/src/main/java/com/geekorum/ttrss/articles_list/ActivityViewModel.kt	Fri Aug 02 12:02:39 2019 -0700
+++ b/app/src/main/java/com/geekorum/ttrss/articles_list/ActivityViewModel.kt	Fri Aug 02 17:16:45 2019 -0700
@@ -27,6 +27,7 @@
 import androidx.lifecycle.MutableLiveData
 import androidx.lifecycle.Transformations
 import androidx.lifecycle.ViewModel
+import androidx.lifecycle.switchMap
 import com.geekorum.geekdroid.accounts.SyncInProgressLiveData
 import com.geekorum.geekdroid.app.lifecycle.EmptyEvent
 import com.geekorum.geekdroid.app.lifecycle.Event
@@ -36,7 +37,6 @@
 import com.geekorum.ttrss.network.TtRssBrowserLauncher
 import com.geekorum.ttrss.providers.ArticlesContract
 import javax.inject.Inject
-import com.geekorum.geekdroid.app.lifecycle.EmptyEvent.Companion.makeEmptyEvent as RefreshEvent
 import com.geekorum.geekdroid.app.lifecycle.EmptyEvent.Companion.makeEmptyEvent as SearchClosedEvent
 import com.geekorum.geekdroid.app.lifecycle.EmptyEvent.Companion.makeEmptyEvent as SearchOpenedEvent
 
@@ -51,9 +51,13 @@
 ) : ViewModel() {
     private val account = MutableLiveData<Account>()
     private val _selectedFeed = MutableLiveData<Long>()
-    val selectedFeed: LiveData<Feed?> = Transformations.switchMap(_selectedFeed) {
+    val selectedFeed: LiveData<Feed?> =  _selectedFeed.switchMap {
         feedsRepository.getFeedById(it)
     }
+
+    private val _feedSelectedEvent = MutableLiveData<Event<Long>>()
+    val feedSelectedEvent: LiveData<Event<Long>> = _feedSelectedEvent
+
     private val _articleSelectedEvent = MutableLiveData<Event<ArticleSelectedParameters>>()
     val articleSelectedEvent: LiveData<Event<ArticleSelectedParameters>> = _articleSelectedEvent
 
@@ -80,6 +84,7 @@
 
     fun setSelectedFeed(id: Long) {
         _selectedFeed.value = id
+        _feedSelectedEvent.value = Event(id)
     }
 
     fun refresh() {
--- a/app/src/main/java/com/geekorum/ttrss/articles_list/ArticleListActivity.kt	Fri Aug 02 12:02:39 2019 -0700
+++ b/app/src/main/java/com/geekorum/ttrss/articles_list/ArticleListActivity.kt	Fri Aug 02 17:16:45 2019 -0700
@@ -81,7 +81,10 @@
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
 
-        activityViewModel.selectedFeed.observe(this) { onFeedSelected(it) }
+        activityViewModel.selectedFeed.observe(this) { bindFeedInformation(it) }
+        activityViewModel.feedSelectedEvent.observe(this, EventObserver {
+            onFeedSelected(it)
+        })
 
         activityViewModel.articleSelectedEvent.observe(this, EventObserver { (position, article) ->
             onArticleSelected(position, article)
@@ -244,18 +247,15 @@
         startActivity(intent)
     }
 
-    /*
-     *  From MasterActivity
-     */
-    private fun onFeedSelected(feed: Feed?) {
-        if (feed == null) {
-            return
-        }
+    private fun bindFeedInformation(feed: Feed?) {
+        title = feed?.title ?: ""
+        binding.toolbar.title = title
+    }
+
+    private fun onFeedSelected(feedId: Long) {
         navigateUpToList()
-        title = feed.title
-        binding.toolbar.title = title
         supportFragmentManager.commit {
-            val hf = ArticlesListFragment.newInstance(supportFragmentManager.fragmentFactory, feed.id)
+            val hf = ArticlesListFragment.newInstance(supportFragmentManager.fragmentFactory, feedId)
             replace(R.id.middle_pane_layout, hf, FRAGMENT_ARTICLES_LIST)
         }
         drawerLayout.closeDrawers()