From a3f25b9f770219466d2721516cc3b9088bddf6dd Mon Sep 17 00:00:00 2001 From: Sawyer Blatz Date: Mon, 20 May 2019 11:24:21 -0700 Subject: [PATCH] For #2584: Adds opening tab collections --- .../org/mozilla/fenix/home/HomeFragment.kt | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) 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 7161c134f..97a420e64 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -72,6 +72,13 @@ class HomeFragment : Fragment(), CoroutineScope { private var sessionObserver: SessionManager.Observer? = null private var tabCollectionObserver: Observer>? = null + private val singleSessionObserver = object : Session.Observer { + override fun onTitleChanged(session: Session, title: String) { + super.onTitleChanged(session, title) + emitSessionChanges() + } + } + private var homeMenu: HomeMenu? = null var deleteSessionJob: (suspend () -> Unit)? = null @@ -357,7 +364,10 @@ class HomeFragment : Fragment(), CoroutineScope { ItsNotBrokenSnack(context!!).showSnackbar(issueNumber = "1575") } is CollectionAction.OpenTabs -> { - ItsNotBrokenSnack(context!!).showSnackbar(issueNumber = "2205") + invokePendingDeleteSessionJob() + action.collection.tabs.forEach { + requireComponents.useCases.tabsUseCases.addTab.invoke(it.url) + } } is CollectionAction.ShareTabs -> { val shareText = action.collection.tabs.joinToString("\n") { @@ -433,11 +443,13 @@ class HomeFragment : Fragment(), CoroutineScope { val observer = object : SessionManager.Observer { override fun onSessionAdded(session: Session) { super.onSessionAdded(session) + session.register(singleSessionObserver) emitSessionChanges() } override fun onSessionRemoved(session: Session) { super.onSessionRemoved(session) + session.unregister(singleSessionObserver) emitSessionChanges() } @@ -448,11 +460,17 @@ class HomeFragment : Fragment(), CoroutineScope { override fun onSessionsRestored() { super.onSessionsRestored() + requireComponents.core.sessionManager.sessions.forEach { + it.register(singleSessionObserver) + } emitSessionChanges() } override fun onAllSessionsRemoved() { super.onAllSessionsRemoved() + requireComponents.core.sessionManager.sessions.forEach { + it.unregister(singleSessionObserver) + } emitSessionChanges() } }