Bug 1819194 - Open `TabsTray` to the initial page in `TabsTrayState`

fenix/113.0
Noah Bond 1 year ago committed by mergify[bot]
parent 93bb4b9c75
commit 2d5a13e4a1

@ -19,6 +19,7 @@ import org.mozilla.fenix.browser.browsingmode.BrowsingMode
import org.mozilla.fenix.browser.browsingmode.BrowsingModeManager
import org.mozilla.fenix.components.toolbar.FenixTabCounterMenu
import org.mozilla.fenix.ext.nav
import org.mozilla.fenix.tabstray.Page
/**
* Helper class for building the [FenixTabCounterMenu].
@ -63,7 +64,12 @@ class TabCounterView(
navController.nav(
R.id.homeFragment,
HomeFragmentDirections.actionGlobalTabsTrayFragment(),
HomeFragmentDirections.actionGlobalTabsTrayFragment(
page = when (browsingModeManager.mode) {
BrowsingMode.Normal -> Page.NormalTabs
BrowsingMode.Private -> Page.PrivateTabs
},
),
)
}
}

@ -12,10 +12,10 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.runtime.toMutableStateList
import androidx.compose.ui.ExperimentalComposeUiApi
@ -27,7 +27,6 @@ import androidx.compose.ui.unit.dp
import com.google.accompanist.pager.ExperimentalPagerApi
import com.google.accompanist.pager.HorizontalPager
import com.google.accompanist.pager.rememberPagerState
import kotlinx.coroutines.launch
import mozilla.components.browser.state.state.ContentState
import mozilla.components.browser.state.state.TabSessionState
import mozilla.components.lib.state.ext.observeAsComposableState
@ -94,16 +93,9 @@ fun TabsTray(
.observeAsComposableState { state -> state.inactiveTabsExpanded }.value ?: false
val inactiveTabs = tabsTrayStore
.observeAsComposableState { state -> state.inactiveTabs }.value ?: emptyList()
val pagerState = rememberPagerState(initialPage = 0)
val scope = rememberCoroutineScope()
val pagerState = rememberPagerState(initialPage = selectedPage.ordinal)
val isInMultiSelectMode = multiselectMode is TabsTrayState.Mode.Select
val onTabPageIndicatorClicked: ((Page) -> Unit) = { page ->
onTabPageClick(page)
scope.launch {
pagerState.animateScrollToPage(page.ordinal)
}
}
val handleTabClick: ((TabSessionState) -> Unit) = { tab ->
if (isInMultiSelectMode) {
onTabMultiSelectClick(tab)
@ -112,6 +104,10 @@ fun TabsTray(
}
}
LaunchedEffect(selectedPage) {
pagerState.animateScrollToPage(selectedPage.ordinal)
}
Column(
modifier = Modifier
.fillMaxSize()
@ -123,7 +119,7 @@ fun TabsTray(
isInMultiSelectMode = isInMultiSelectMode,
selectedPage = selectedPage,
normalTabCount = normalTabs.size + inactiveTabs.size,
onTabPageIndicatorClicked = onTabPageIndicatorClicked,
onTabPageIndicatorClicked = onTabPageClick,
)
}
@ -236,6 +232,23 @@ private fun TabsTrayInactiveTabsPreview() {
)
}
@LightDarkPreview
@Composable
private fun TabsTrayPrivateTabsPreview() {
TabsTrayPreviewRoot(
selectedPage = Page.PrivateTabs,
privateTabs = generateFakeTabsList(),
)
}
@LightDarkPreview
@Composable
private fun TabsTraySyncedTabsPreview() {
TabsTrayPreviewRoot(
selectedPage = Page.SyncedTabs,
)
}
@Composable
private fun TabsTrayPreviewRoot(
displayTabsInGrid: Boolean = true,

Loading…
Cancel
Save