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 b2d9f78394..b91e6e9376 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)