@ -92,7 +92,6 @@ import org.mozilla.fenix.ext.metrics
import org.mozilla.fenix.ext.nav
import org.mozilla.fenix.ext.requireComponents
import org.mozilla.fenix.ext.resetPoliciesAfter
import org.mozilla.fenix.ext.sessionsOfType
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.home.sessioncontrol.DefaultSessionControlController
import org.mozilla.fenix.home.sessioncontrol.SessionControlInteractor
@ -469,17 +468,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 ) }
?: SessionManager . NO _SELECTION
val snapshot = tabs
. map ( sessionManager :: createSessionSnapshot )
. let { SessionManager . Snapshot ( it , selectedIndex ) }
tabs . forEach {
requireComponents . useCases . tabsUseCases . removeTab ( it )
if ( sessionCode == ALL _PRIVATE _TABS ) {
sessionManager . removePrivateSessions ( )
} else {
sessionManager . removeNormalSessions ( )
}
val snackbarMessage = if ( sessionCode == ALL _PRIVATE _TABS ) {
@ -493,7 +485,7 @@ class HomeFragment : Fragment() {
snackbarMessage ,
requireContext ( ) . getString ( R . string . snackbar _deleted _undo ) ,
{
sessionManager. restore ( snapshot )
requireComponents. useCases . tabsUseCases . undo . invoke ( )
} ,
operation = { } ,
anchorView = snackbarAnchorView
@ -501,38 +493,29 @@ class HomeFragment : Fragment() {
}
private fun removeTabAndShowSnackbar ( sessionId : String ) {
sessionManager . findSessionById ( sessionId ) ?. let { session ->
val snapshot = sessionManager . createSessionSnapshot ( session )
val state = store . state . findTab ( sessionId ) ?. engineState ?. engineSessionState
val isSelected =
session . id == requireComponents . core . store . state . selectedTabId ?: false
val tab = store . state . findTab ( sessionId ) ?: return
requireComponents . useCases . tabsUseCases . removeTab ( sessionId )
val snackbarMessage = if ( snapshot . session . private ) {
requireContext ( ) . getString ( R . string . snackbar _private _tab _closed )
} else {
requireContext ( ) . getString ( R . string . snackbar _tab _closed )
}
requireComponents . useCases . tabsUseCases . removeTab ( sessionId )
viewLifecycleOwner . lifecycleScope . allowUndo (
requireView ( ) ,
snackbarMessage ,
requireContext ( ) . getString ( R . string . snackbar _deleted _undo ) ,
{
sessionManager . add (
snapshot . session ,
isSelected ,
engineSessionState = state
)
findNavController ( ) . navigate (
HomeFragmentDirections . actionGlobalBrowser ( null )
)
} ,
operation = { } ,
anchorView = snackbarAnchorView
)
val snackbarMessage = if ( tab . content . private ) {
requireContext ( ) . getString ( R . string . snackbar _private _tab _closed )
} else {
requireContext ( ) . getString ( R . string . snackbar _tab _closed )
}
viewLifecycleOwner . lifecycleScope . allowUndo (
requireView ( ) ,
snackbarMessage ,
requireContext ( ) . getString ( R . string . snackbar _deleted _undo ) ,
{
requireComponents . useCases . tabsUseCases . undo . invoke ( )
findNavController ( ) . navigate (
HomeFragmentDirections . actionGlobalBrowser ( null )
)
} ,
operation = { } ,
anchorView = snackbarAnchorView
)
}
override fun onDestroyView ( ) {