From 718ac5612cbe0df18ed6754ebbcb9ef4cea97426 Mon Sep 17 00:00:00 2001 From: Emily Kager Date: Mon, 24 Jun 2019 15:41:38 -0700 Subject: [PATCH] For #3593 For #3581 - Pass sessions to delete to delete all with undo (#3594) --- .../org/mozilla/fenix/home/HomeFragment.kt | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) 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 7fe22c68e..bc0cbf6b1 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -55,7 +55,6 @@ import org.mozilla.fenix.collections.SaveCollectionStep import org.mozilla.fenix.components.FenixSnackbar import org.mozilla.fenix.components.TabCollectionStorage import org.mozilla.fenix.components.metrics.Event -import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.nav import org.mozilla.fenix.ext.requireComponents import org.mozilla.fenix.ext.toTab @@ -376,13 +375,15 @@ class HomeFragment : Fragment(), CoroutineScope, AccountObserver { } } is TabAction.CloseAll -> { - if (pendingSessionDeletion?.deletionJob == null) removeAllTabsWithUndo(action.private) else { + if (pendingSessionDeletion?.deletionJob == null) removeAllTabsWithUndo( + sessionManager.filteredSessions(action.private) + ) else { pendingSessionDeletion?.deletionJob?.let { launch { it.invoke() }.invokeOnCompletion { pendingSessionDeletion = null - removeAllTabsWithUndo(action.private) + removeAllTabsWithUndo(sessionManager.filteredSessions(action.private)) } } } @@ -595,15 +596,14 @@ class HomeFragment : Fragment(), CoroutineScope, AccountObserver { return observer } - private fun removeAllTabsWithUndo(isPrivate: Boolean) { + private fun removeAllTabsWithUndo(listOfSessionsToDelete: List) { val sessionManager = requireComponents.core.sessionManager - val useCases = context?.components?.useCases?.tabsUseCases ?: return getManagedEmitter().onNext(SessionControlChange.TabsChange(listOf())) val deleteOperation: (suspend () -> Unit) = { - sessionManager.sessions.filter { it.private == isPrivate }.forEach { - useCases.removeTab.invoke(it) + listOfSessionsToDelete.forEach { + sessionManager.remove(it) } } deleteAllSessionsJob = deleteOperation @@ -839,10 +839,17 @@ class HomeFragment : Fragment(), CoroutineScope, AccountObserver { } } - private fun SessionManager.filteredSessions(private: Boolean, sessionFilter: (Session) -> Boolean): List { + private fun SessionManager.filteredSessions( + private: Boolean, + sessionFilter: ((Session) -> Boolean)? = null + ): List { return this.sessions .filter { private == it.private } - .filter(sessionFilter) + .also { list: List -> + sessionFilter?.let { + list.filter(it) + } + } } private fun List.toTabs(): List {