diff --git a/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt b/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt index 8858302854..64b0f1357b 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt @@ -38,6 +38,7 @@ import mozilla.appservices.places.BookmarkRoot import mozilla.components.browser.session.Session import mozilla.components.browser.session.SessionManager import mozilla.components.browser.state.action.ContentAction +import mozilla.components.browser.state.selector.findTab import mozilla.components.browser.state.selector.findTabOrCustomTabOrSelectedTab import mozilla.components.browser.state.state.SessionState import mozilla.components.browser.state.state.content.DownloadState @@ -252,13 +253,11 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session BrowserFragmentDirections.actionGlobalTabTrayDialogFragment() ) }, - onCloseTab = { - val snapshot = sessionManager.createSessionSnapshot(it) - val state = snapshot.engineSession?.saveState() - val isSelected = - it.id == context.components.core.store.state.selectedTabId ?: false + onCloseTab = { closedSession -> + val tab = store.state.findTab(closedSession.id) ?: return@DefaultBrowserToolbarController + val isSelected = tab.id == context.components.core.store.state.selectedTabId - val snackbarMessage = if (snapshot.session.private) { + val snackbarMessage = if (tab.content.private) { requireContext().getString(R.string.snackbar_private_tab_closed) } else { requireContext().getString(R.string.snackbar_tab_closed) @@ -270,9 +269,9 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Session requireContext().getString(R.string.snackbar_deleted_undo), { sessionManager.add( - snapshot.session, + closedSession, isSelected, - engineSessionState = state + engineSessionState = tab.engineState.engineSessionState ) }, operation = { } 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 26db799725..f781d43c36 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -55,6 +55,7 @@ import mozilla.appservices.places.BookmarkRoot import mozilla.components.browser.menu.view.MenuButton import mozilla.components.browser.session.Session import mozilla.components.browser.session.SessionManager +import mozilla.components.browser.state.selector.findTab import mozilla.components.browser.state.selector.getNormalOrPrivateTabs import mozilla.components.browser.state.selector.normalTabs import mozilla.components.browser.state.selector.privateTabs @@ -471,16 +472,10 @@ class HomeFragment : Fragment() { private fun removeAllTabsAndShowSnackbar(sessionCode: String) { val tabs = sessionManager.sessionsOfType(private = sessionCode == ALL_PRIVATE_TABS).toList() val selectedIndex = sessionManager - .selectedSession?.let { sessionManager.sessions.indexOf(it) } ?: 0 + .selectedSession?.let { sessionManager.sessions.indexOf(it) } ?: SessionManager.NO_SELECTION val snapshot = tabs .map(sessionManager::createSessionSnapshot) - .map { - it.copy( - engineSession = null, - engineSessionState = it.engineSession?.saveState() - ) - } .let { SessionManager.Snapshot(it, selectedIndex) } tabs.forEach { @@ -508,7 +503,7 @@ class HomeFragment : Fragment() { private fun removeTabAndShowSnackbar(sessionId: String) { sessionManager.findSessionById(sessionId)?.let { session -> val snapshot = sessionManager.createSessionSnapshot(session) - val state = snapshot.engineSession?.saveState() + val state = store.state.findTab(sessionId)?.engineState?.engineSessionState val isSelected = session.id == requireComponents.core.store.state.selectedTabId ?: false diff --git a/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayDialogFragment.kt b/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayDialogFragment.kt index 3b64217f44..de7f3ec3e6 100644 --- a/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayDialogFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/tabtray/TabTrayDialogFragment.kt @@ -30,6 +30,7 @@ import kotlinx.coroutines.Dispatchers.Main import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.launch import mozilla.components.browser.session.Session +import mozilla.components.browser.state.selector.findTab import mozilla.components.browser.state.state.TabSessionState import mozilla.components.browser.thumbnails.loader.ThumbnailLoader import mozilla.components.feature.tab.collections.TabCollection @@ -255,26 +256,22 @@ class TabTrayDialogFragment : AppCompatDialogFragment(), UserInteractionHandler } private fun showUndoSnackbarForTab(sessionId: String) { - val sessionManager = view?.context?.components?.core?.sessionManager + val store = requireComponents.core.store + val sessionManager = requireComponents.core.sessionManager - val snapshot = sessionManager - ?.findSessionById(sessionId)?.let { - sessionManager.createSessionSnapshot(it) - } ?: return + val tab = requireComponents.core.store.state.findTab(sessionId) ?: return + val session = sessionManager.findSessionById(sessionId) ?: return // Check if this is the last tab of this session type - val isLastOpenTab = - sessionManager.sessions.filter { snapshot.session.private == it.private }.size == 1 - + val isLastOpenTab = store.state.tabs.filter { it.content.private == tab.content.private }.size == 1 if (isLastOpenTab) { dismissTabTrayAndNavigateHome(sessionId) return } - val state = snapshot.engineSession?.saveState() val isSelected = sessionId == requireComponents.core.store.state.selectedTabId ?: false - val snackbarMessage = if (snapshot.session.private) { + val snackbarMessage = if (tab.content.private) { getString(R.string.snackbar_private_tab_closed) } else { getString(R.string.snackbar_tab_closed) @@ -285,8 +282,8 @@ class TabTrayDialogFragment : AppCompatDialogFragment(), UserInteractionHandler snackbarMessage, getString(R.string.snackbar_deleted_undo), { - sessionManager.add(snapshot.session, isSelected, engineSessionState = state) - _tabTrayView?.scrollToTab(snapshot.session.id) + sessionManager.add(session, isSelected, engineSessionState = tab.engineState.engineSessionState) + _tabTrayView?.scrollToTab(session.id) }, operation = { }, elevation = ELEVATION, diff --git a/buildSrc/src/main/java/AndroidComponents.kt b/buildSrc/src/main/java/AndroidComponents.kt index 851bb5d311..3be848b8b5 100644 --- a/buildSrc/src/main/java/AndroidComponents.kt +++ b/buildSrc/src/main/java/AndroidComponents.kt @@ -3,5 +3,5 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ object AndroidComponents { - const val VERSION = "58.0.20200906130403" + const val VERSION = "58.0.20200907130126" }