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 4bdf957ad..afd1bab7f 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -49,6 +49,7 @@ import org.mozilla.fenix.ThemeManager import org.mozilla.fenix.collections.CreateCollectionViewModel import org.mozilla.fenix.collections.SaveCollectionStep import org.mozilla.fenix.components.metrics.Event +import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.requireComponents import org.mozilla.fenix.ext.urlToTrimmedHost import org.mozilla.fenix.home.sessioncontrol.CollectionAction @@ -509,11 +510,15 @@ class HomeFragment : Fragment(), CoroutineScope, AccountObserver { } private fun removeAllTabsWithUndo(isPrivate: Boolean) { - val useCases = requireComponents.useCases.tabsUseCases + val currentFilteredSessions = + context?.components?.core?.sessionManager?.sessions?.filter { it.private == isPrivate } ?: return + val useCases = context?.components?.useCases?.tabsUseCases ?: return getManagedEmitter().onNext(SessionControlChange.TabsChange(listOf())) deleteAllSessionsJob = { - useCases.removeAllTabsOfType.invoke(isPrivate) + currentFilteredSessions.forEach { + useCases.removeTab.invoke(it) + } } allowUndo( @@ -523,7 +528,11 @@ class HomeFragment : Fragment(), CoroutineScope, AccountObserver { emitSessionChanges() } ) { - useCases.removeAllTabsOfType.invoke(isPrivate) + deleteAllSessionsJob = { + currentFilteredSessions.forEach { + useCases.removeTab.invoke(it) + } + } } }