From 13df8d7dddf0aa976d8bd612a4c8c2e96272c8f2 Mon Sep 17 00:00:00 2001 From: Sawyer Blatz Date: Thu, 27 Jun 2019 11:29:00 -0700 Subject: [PATCH] For #3711: Fixes save to collection from browser crash (#3714) --- .../org/mozilla/fenix/home/HomeFragment.kt | 53 ++++++++++--------- 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt index b2d9f7839..b91e6e937 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -95,6 +95,29 @@ class HomeFragment : Fragment(), AccountObserver { private lateinit var sessionObserver: BrowserSessionsObserver + private val collectionStorageObserver = object : TabCollectionStorage.Observer { + override fun onCollectionCreated(title: String, sessions: List) { + super.onCollectionCreated(title, sessions) + scrollAndAnimateCollection(sessions.size) + } + + override fun onTabsAdded( + tabCollection: mozilla.components.feature.tab.collections.TabCollection, + sessions: List + ) { + super.onTabsAdded(tabCollection, sessions) + scrollAndAnimateCollection(sessions.size, tabCollection) + } + + override fun onCollectionRenamed( + tabCollection: mozilla.components.feature.tab.collections.TabCollection, + title: String + ) { + super.onCollectionRenamed(tabCollection, title) + showRenamedSnackbar() + } + } + private var homeMenu: HomeMenu? = null private val sessionManager: SessionManager @@ -297,9 +320,11 @@ class HomeFragment : Fragment(), AccountObserver { override fun onStart() { super.onStart() - requireComponents.core.tabCollectionStorage.register(collectionStorageObserver, this) sessionObserver.onStart() tabCollectionObserver = subscribeToTabCollections() + + // We only want this observer live just before we navigate away to the collection creation screen + requireComponents.core.tabCollectionStorage.unregister(collectionStorageObserver) } override fun onStop() { @@ -676,6 +701,9 @@ class HomeFragment : Fragment(), AccountObserver { viewModel?.saveCollectionStep = step ?: viewModel?.getStepForTabsAndCollectionSize() ?: SaveCollectionStep.SelectTabs + // Only register the observer right before moving to collection creation + requireComponents.core.tabCollectionStorage.register(collectionStorageObserver, this) + view?.let { val directions = HomeFragmentDirections.actionHomeFragmentToCreateCollectionFragment() nav(R.id.homeFragment, directions) @@ -781,29 +809,6 @@ class HomeFragment : Fragment(), AccountObserver { } } - private val collectionStorageObserver = object : TabCollectionStorage.Observer { - override fun onCollectionCreated(title: String, sessions: List) { - super.onCollectionCreated(title, sessions) - scrollAndAnimateCollection(sessions.size) - } - - override fun onTabsAdded( - tabCollection: mozilla.components.feature.tab.collections.TabCollection, - sessions: List - ) { - super.onTabsAdded(tabCollection, sessions) - scrollAndAnimateCollection(sessions.size, tabCollection) - } - - override fun onCollectionRenamed( - tabCollection: mozilla.components.feature.tab.collections.TabCollection, - title: String - ) { - super.onCollectionRenamed(tabCollection, title) - showRenamedSnackbar() - } - } - private fun showSavedSnackbar(tabSize: Int) { viewLifecycleOwner.lifecycleScope.launch { delay(ANIM_SNACKBAR_DELAY)