1
0
Fork 0

For #2655: Adds undo snackbar for closing all tabs

master
Sawyer Blatz 2019-05-22 10:26:06 -07:00
parent f5a993a027
commit a1d32127ab
2 changed files with 29 additions and 1 deletions

View File

@ -80,6 +80,7 @@ class HomeFragment : Fragment(), CoroutineScope {
private var homeMenu: HomeMenu? = null
var deleteAllSessionsJob: (suspend () -> Unit)? = null
var deleteSessionJob: (suspend () -> Unit)? = null
var deleteCollectionJob: (suspend () -> Unit)? = null
@ -299,7 +300,7 @@ class HomeFragment : Fragment(), CoroutineScope {
}
}
is TabAction.CloseAll -> {
requireComponents.useCases.tabsUseCases.removeAllTabsOfType.invoke(action.private)
removeAllTabsWithUndo(action.private)
}
is TabAction.PrivateBrowsingLearnMore -> {
(activity as HomeActivity).openToBrowserAndLoad(
@ -333,6 +334,14 @@ class HomeFragment : Fragment(), CoroutineScope {
}
}
deleteAllSessionsJob?.let {
launch {
it.invoke()
}.invokeOnCompletion {
deleteAllSessionsJob = null
}
}
deleteCollectionJob?.let {
launch {
it.invoke()
@ -493,6 +502,23 @@ class HomeFragment : Fragment(), CoroutineScope {
return observer
}
private fun removeAllTabsWithUndo(isPrivate: Boolean) {
getManagedEmitter<SessionControlChange>().onNext(SessionControlChange.TabsChange(listOf()))
deleteAllSessionsJob = {
requireComponents.useCases.tabsUseCases.removeAllTabsOfType.invoke(isPrivate)
}
CoroutineScope(Dispatchers.Main).allowUndo(
view!!, getString(R.string.snackbar_tabs_deleted),
getString(R.string.snackbar_deleted_undo), {
deleteAllSessionsJob = null
emitSessionChanges()
}
) {
requireComponents.useCases.tabsUseCases.removeAllTabsOfType.invoke(isPrivate)
}
}
private fun removeTabWithUndo(sessionId: String) {
val sessionManager = requireComponents.core.sessionManager

View File

@ -484,6 +484,8 @@
<string name="snackbar_collection_renamed">Collection renamed</string>
<!-- Text shown in snackbar when user deletes a tab -->
<string name="snackbar_tab_deleted">Tab deleted</string>
<!-- Text shown in snackbar when user deletes all tabs -->
<string name="snackbar_tabs_deleted">Tabs deleted</string>
<!-- Text for action to undo deleting a tab or collection shown in snackbar -->
<string name="snackbar_deleted_undo">UNDO</string>
<!-- QR code scanner prompt which appears after scanning a code, but before navigating to it