Remove SessionManager from BrowserFragment/ToolbarGestureHandler

upstream-sync
Christian Sadilek 3 years ago
parent 124c2baf30
commit 45c0ac85ec

@ -69,7 +69,7 @@ class BrowserFragment : BaseBrowserFragment(), UserInteractionHandler {
tabPreview = tabPreview, tabPreview = tabPreview,
toolbarLayout = browserToolbarView.view, toolbarLayout = browserToolbarView.view,
store = components.core.store, store = components.core.store,
sessionManager = components.core.sessionManager selectTabUseCase = components.useCases.tabsUseCases.selectTab
) )
) )
} }

@ -17,16 +17,16 @@ import androidx.core.graphics.contains
import androidx.core.graphics.toPoint import androidx.core.graphics.toPoint
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.interpolator.view.animation.LinearOutSlowInInterpolator import androidx.interpolator.view.animation.LinearOutSlowInInterpolator
import mozilla.components.browser.session.Session import mozilla.components.browser.state.selector.getNormalOrPrivateTabs
import mozilla.components.browser.session.SessionManager
import mozilla.components.browser.state.selector.selectedTab import mozilla.components.browser.state.selector.selectedTab
import mozilla.components.browser.state.state.TabSessionState
import mozilla.components.browser.state.store.BrowserStore import mozilla.components.browser.state.store.BrowserStore
import mozilla.components.feature.tabs.TabsUseCases
import mozilla.components.support.ktx.android.view.getRectWithViewLocation import mozilla.components.support.ktx.android.view.getRectWithViewLocation
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.ext.getRectWithScreenLocation import org.mozilla.fenix.ext.getRectWithScreenLocation
import org.mozilla.fenix.ext.getWindowInsets import org.mozilla.fenix.ext.getWindowInsets
import org.mozilla.fenix.ext.isKeyboardVisible import org.mozilla.fenix.ext.isKeyboardVisible
import org.mozilla.fenix.ext.sessionsOfType
import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.settings
import kotlin.math.abs import kotlin.math.abs
import kotlin.math.max import kotlin.math.max
@ -43,7 +43,7 @@ class ToolbarGestureHandler(
private val tabPreview: TabPreview, private val tabPreview: TabPreview,
private val toolbarLayout: View, private val toolbarLayout: View,
private val store: BrowserStore, private val store: BrowserStore,
private val sessionManager: SessionManager private val selectTabUseCase: TabsUseCases.SelectTabUseCase
) : SwipeGestureListener { ) : SwipeGestureListener {
private enum class GestureDirection { private enum class GestureDirection {
@ -51,7 +51,7 @@ class ToolbarGestureHandler(
} }
private sealed class Destination { private sealed class Destination {
data class Tab(val session: Session) : Destination() data class Tab(val tab: TabSessionState) : Destination()
object None : Destination() object None : Destination()
} }
@ -140,7 +140,7 @@ class ToolbarGestureHandler(
) { ) {
val destination = getDestination() val destination = getDestination()
if (destination is Destination.Tab && isGestureComplete(velocityX)) { if (destination is Destination.Tab && isGestureComplete(velocityX)) {
animateToNextTab(destination.session) animateToNextTab(destination.tab)
} else { } else {
animateCanceledGesture(velocityX) animateCanceledGesture(velocityX)
} }
@ -149,14 +149,14 @@ class ToolbarGestureHandler(
private fun getDestination(): Destination { private fun getDestination(): Destination {
val isLtr = activity.resources.configuration.layoutDirection == View.LAYOUT_DIRECTION_LTR val isLtr = activity.resources.configuration.layoutDirection == View.LAYOUT_DIRECTION_LTR
val currentTab = store.state.selectedTab ?: return Destination.None val currentTab = store.state.selectedTab ?: return Destination.None
val currentIndex = sessionManager.sessionsOfType(currentTab.content.private).indexOfFirst { val currentIndex = store.state.getNormalOrPrivateTabs(currentTab.content.private).indexOfFirst {
it.id == currentTab.id it.id == currentTab.id
} }
return if (currentIndex == -1) { return if (currentIndex == -1) {
Destination.None Destination.None
} else { } else {
val sessions = sessionManager.sessionsOfType(currentTab.content.private) val tabs = store.state.getNormalOrPrivateTabs(currentTab.content.private)
val index = when (gestureDirection) { val index = when (gestureDirection) {
GestureDirection.RIGHT_TO_LEFT -> if (isLtr) { GestureDirection.RIGHT_TO_LEFT -> if (isLtr) {
currentIndex + 1 currentIndex + 1
@ -170,8 +170,8 @@ class ToolbarGestureHandler(
} }
} }
if (index < sessions.count() && index >= 0) { if (index < tabs.count() && index >= 0) {
Destination.Tab(sessions.elementAt(index)) Destination.Tab(tabs.elementAt(index))
} else { } else {
Destination.None Destination.None
} }
@ -180,7 +180,7 @@ class ToolbarGestureHandler(
private fun preparePreview(destination: Destination) { private fun preparePreview(destination: Destination) {
val thumbnailId = when (destination) { val thumbnailId = when (destination) {
is Destination.Tab -> destination.session.id is Destination.Tab -> destination.tab.id
is Destination.None -> return is Destination.None -> return
} }
@ -233,7 +233,7 @@ class ToolbarGestureHandler(
} }
} }
private fun animateToNextTab(session: Session) { private fun animateToNextTab(tab: TabSessionState) {
val browserFinalXCoordinate: Float = when (gestureDirection) { val browserFinalXCoordinate: Float = when (gestureDirection) {
GestureDirection.RIGHT_TO_LEFT -> -windowWidth.toFloat() - previewOffset GestureDirection.RIGHT_TO_LEFT -> -windowWidth.toFloat() - previewOffset
GestureDirection.LEFT_TO_RIGHT -> windowWidth.toFloat() + previewOffset GestureDirection.LEFT_TO_RIGHT -> windowWidth.toFloat() + previewOffset
@ -243,7 +243,7 @@ class ToolbarGestureHandler(
getAnimator(browserFinalXCoordinate, FINISHED_GESTURE_ANIMATION_DURATION).apply { getAnimator(browserFinalXCoordinate, FINISHED_GESTURE_ANIMATION_DURATION).apply {
doOnEnd { doOnEnd {
contentLayout.translationX = 0f contentLayout.translationX = 0f
sessionManager.select(session) selectTabUseCase(tab.id)
// Fade out the tab preview to prevent flickering // Fade out the tab preview to prevent flickering
val shortAnimationDuration = val shortAnimationDuration =

Loading…
Cancel
Save