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.net.toUri
import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProviders
import androidx.navigation.fragment.NavHostFragment.findNavController
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.requireComponents
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.mvi.ActionBusFactory
import org.mozilla.fenix.mvi.getAutoDisposeObservable
@ -104,6 +107,7 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope {
private lateinit var toolbarComponent: ToolbarComponent
private var tabCollectionObserver: Observer<List<TabCollection>>? = null
private var sessionObserver: Session.Observer? = null
private var sessionManagerObserver: SessionManager.Observer? = null
@ -453,6 +457,8 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope {
override fun onResume() {
sessionObserver = subscribeToSession()
sessionManagerObserver = subscribeToSessions()
tabCollectionObserver = subscribeToTabCollections()
getSessionById()?.let { updateBookmarkState(it) }
if (getSessionById() == null) findNavController(this).popBackStack(R.id.homeFragment, false)
@ -619,6 +625,9 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope {
override fun onStop() {
super.onStop()
tabCollectionObserver?.let {
requireComponents.core.tabCollectionStorage.getCollections().removeObserver(it)
}
sessionObserver?.let {
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 {
val observer = object : Session.Observer {
override fun onLoadingStateChanged(session: Session, loading: Boolean) {