1
0
Fork 0

For #3403: Subscribes to tab collections in BrowserFragment

master
Sawyer Blatz 2019-06-12 14:39:22 -07:00 committed by Emily Kager
parent 227a80957e
commit 381a5e6089
1 changed files with 18 additions and 0 deletions

View File

@ -21,6 +21,7 @@ import androidx.core.content.ContextCompat
import androidx.core.content.getSystemService import androidx.core.content.getSystemService
import androidx.core.net.toUri import androidx.core.net.toUri
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProviders import androidx.lifecycle.ViewModelProviders
import androidx.navigation.fragment.NavHostFragment.findNavController import androidx.navigation.fragment.NavHostFragment.findNavController
import androidx.transition.TransitionInflater import androidx.transition.TransitionInflater
@ -83,6 +84,8 @@ import org.mozilla.fenix.ext.enterToImmersiveMode
import org.mozilla.fenix.ext.nav import org.mozilla.fenix.ext.nav
import org.mozilla.fenix.ext.requireComponents import org.mozilla.fenix.ext.requireComponents
import org.mozilla.fenix.ext.toTab import org.mozilla.fenix.ext.toTab
import org.mozilla.fenix.home.sessioncontrol.SessionControlChange
import org.mozilla.fenix.home.sessioncontrol.TabCollection
import org.mozilla.fenix.lib.Do import org.mozilla.fenix.lib.Do
import org.mozilla.fenix.mvi.ActionBusFactory import org.mozilla.fenix.mvi.ActionBusFactory
import org.mozilla.fenix.mvi.getAutoDisposeObservable import org.mozilla.fenix.mvi.getAutoDisposeObservable
@ -104,6 +107,7 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope {
private lateinit var toolbarComponent: ToolbarComponent private lateinit var toolbarComponent: ToolbarComponent
private var tabCollectionObserver: Observer<List<TabCollection>>? = null
private var sessionObserver: Session.Observer? = null private var sessionObserver: Session.Observer? = null
private var sessionManagerObserver: SessionManager.Observer? = null private var sessionManagerObserver: SessionManager.Observer? = null
@ -453,6 +457,8 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope {
override fun onResume() { override fun onResume() {
sessionObserver = subscribeToSession() sessionObserver = subscribeToSession()
sessionManagerObserver = subscribeToSessions() sessionManagerObserver = subscribeToSessions()
tabCollectionObserver = subscribeToTabCollections()
getSessionById()?.let { updateBookmarkState(it) } getSessionById()?.let { updateBookmarkState(it) }
if (getSessionById() == null) findNavController(this).popBackStack(R.id.homeFragment, false) if (getSessionById() == null) findNavController(this).popBackStack(R.id.homeFragment, false)
@ -619,6 +625,9 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope {
override fun onStop() { override fun onStop() {
super.onStop() super.onStop()
tabCollectionObserver?.let {
requireComponents.core.tabCollectionStorage.getCollections().removeObserver(it)
}
sessionObserver?.let { sessionObserver?.let {
getSessionById()?.unregister(it) getSessionById()?.unregister(it)
} }
@ -850,6 +859,15 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope {
} }
} }
private fun subscribeToTabCollections(): Observer<List<TabCollection>> {
val observer = Observer<List<TabCollection>> {
requireComponents.core.tabCollectionStorage.cachedTabCollections = it
getManagedEmitter<SessionControlChange>().onNext(SessionControlChange.CollectionsChange(it))
}
requireComponents.core.tabCollectionStorage.getCollections().observe(this, observer)
return observer
}
private fun subscribeToSession(): Session.Observer { private fun subscribeToSession(): Session.Observer {
val observer = object : Session.Observer { val observer = object : Session.Observer {
override fun onLoadingStateChanged(session: Session, loading: Boolean) { override fun onLoadingStateChanged(session: Session, loading: Boolean) {