feat: close tab when back button is pressed and history is empty and bring up the home page

This commit is contained in:
Ishan Jain 2022-07-17 20:42:03 +05:30
parent fc89b30a6b
commit 1031f1cf6b
2 changed files with 20 additions and 14 deletions

View File

@ -344,7 +344,8 @@ abstract class BaseBrowserFragment :
) )
}, },
onCloseTab = { closedSession -> onCloseTab = { closedSession ->
val closedTab = store.state.findTab(closedSession.id) ?: return@DefaultBrowserToolbarController val closedTab =
store.state.findTab(closedSession.id) ?: return@DefaultBrowserToolbarController
val snackbarMessage = if (closedTab.content.private) { val snackbarMessage = if (closedTab.content.private) {
requireContext().getString(R.string.snackbar_private_tab_closed) requireContext().getString(R.string.snackbar_private_tab_closed)
@ -981,8 +982,8 @@ abstract class BaseBrowserFragment :
@VisibleForTesting @VisibleForTesting
internal fun shouldPullToRefreshBeEnabled(inFullScreen: Boolean): Boolean { internal fun shouldPullToRefreshBeEnabled(inFullScreen: Boolean): Boolean {
return FeatureFlags.pullToRefreshEnabled && return FeatureFlags.pullToRefreshEnabled &&
requireContext().settings().isPullToRefreshEnabledInBrowser && requireContext().settings().isPullToRefreshEnabledInBrowser &&
!inFullScreen !inFullScreen
} }
@VisibleForTesting @VisibleForTesting
@ -1095,7 +1096,12 @@ abstract class BaseBrowserFragment :
val toolbarHeight = resources.getDimensionPixelSize(R.dimen.browser_toolbar_height) val toolbarHeight = resources.getDimensionPixelSize(R.dimen.browser_toolbar_height)
val context = requireContext() val context = requireContext()
resumeDownloadDialogState(selectedTab.id, context.components.core.store, context, toolbarHeight) resumeDownloadDialogState(
selectedTab.id,
context.components.core.store,
context,
toolbarHeight
)
} }
} else { } else {
view?.let { view -> initializeUI(view) } view?.let { view -> initializeUI(view) }
@ -1140,10 +1146,10 @@ abstract class BaseBrowserFragment :
@CallSuper @CallSuper
override fun onBackPressed(): Boolean { override fun onBackPressed(): Boolean {
return findInPageIntegration.onBackPressed() || return findInPageIntegration.onBackPressed() ||
fullScreenFeature.onBackPressed() || fullScreenFeature.onBackPressed() ||
promptsFeature.onBackPressed() || promptsFeature.onBackPressed() ||
sessionFeature.onBackPressed() || sessionFeature.onBackPressed() ||
removeSessionIfNeeded() removeSessionIfNeeded()
} }
override fun onBackLongPressed(): Boolean { override fun onBackLongPressed(): Boolean {
@ -1214,9 +1220,10 @@ abstract class BaseBrowserFragment :
true true
} else { } else {
val hasParentSession = session is TabSessionState && session.parentId != null val hasParentSession = session is TabSessionState && session.parentId != null
if (hasParentSession) { requireComponents.useCases.tabsUseCases.removeTab(
requireComponents.useCases.tabsUseCases.removeTab(session.id, selectParentIfExists = true) session.id,
} selectParentIfExists = hasParentSession
)
// We want to return to home if this session didn't have a parent session to select. // We want to return to home if this session didn't have a parent session to select.
val goToOverview = !hasParentSession val goToOverview = !hasParentSession
!goToOverview !goToOverview
@ -1479,8 +1486,8 @@ abstract class BaseBrowserFragment :
} }
// This method is called in response to native web extension messages from // This method is called in response to native web extension messages from
// content scripts (e.g the reader view extension). By the time these // content scripts (e.g the reader view extension). By the time these
// messages are processed the fragment/view may no longer be attached. // messages are processed the fragment/view may no longer be attached.
internal fun safeInvalidateBrowserToolbarView() { internal fun safeInvalidateBrowserToolbarView() {
runIfFragmentIsAttached { runIfFragmentIsAttached {
val toolbarView = _browserToolbarView val toolbarView = _browserToolbarView

View File

@ -180,7 +180,6 @@ class DefaultBrowserToolbarController(
} }
onCloseTab.invoke(tab) onCloseTab.invoke(tab)
tabsUseCases.removeTab(tab.id) tabsUseCases.removeTab(tab.id)
} }
companion object { companion object {