Bug 1829083 - Migrate to compose foundation pager

fenix/115.2.0
rahulsainani 1 year ago committed by mergify[bot]
parent 8bf1aeeca8
commit f02fe91a42

@ -473,7 +473,6 @@ tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
kotlinOptions {
freeCompilerArgs += [
"-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
"-opt-in=com.google.accompanist.pager.ExperimentalPagerApi",
]
}
}
@ -488,7 +487,6 @@ dependencies {
implementation FenixDependencies.androidx_constraintlayout
implementation FenixDependencies.androidx_coordinatorlayout
implementation FenixDependencies.google_accompanist_drawablepainter
implementation FenixDependencies.google_accompanist_pager
implementation FenixDependencies.sentry

@ -2,8 +2,11 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
@file:OptIn(ExperimentalFoundationApi::class)
package org.mozilla.fenix.compose
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
@ -13,6 +16,9 @@ import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.PagerState
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
@ -20,9 +26,6 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import com.google.accompanist.pager.HorizontalPager
import com.google.accompanist.pager.PagerState
import com.google.accompanist.pager.rememberPagerState
import org.mozilla.fenix.compose.annotation.LightDarkPreview
import org.mozilla.fenix.theme.FirefoxTheme
@ -45,7 +48,7 @@ import org.mozilla.fenix.theme.FirefoxTheme
fun PagerIndicator(
pagerState: PagerState,
modifier: Modifier = Modifier,
pageCount: Int = pagerState.pageCount,
pageCount: Int,
activeColor: Color,
inactiveColor: Color,
leaveTrail: Boolean = false,

@ -2,14 +2,20 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
@file:OptIn(ExperimentalFoundationApi::class)
package org.mozilla.fenix.onboarding.view
import androidx.activity.compose.BackHandler
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.PagerState
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.State
@ -24,9 +30,6 @@ import androidx.compose.ui.input.nestedscroll.NestedScrollSource
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.google.accompanist.pager.HorizontalPager
import com.google.accompanist.pager.PagerState
import com.google.accompanist.pager.rememberPagerState
import kotlinx.coroutines.launch
import mozilla.components.lib.state.ext.observeAsComposableState
import org.mozilla.fenix.R
@ -76,7 +79,7 @@ fun JunoOnboardingScreen(
}
val scrollToNextPageOrDismiss: () -> Unit = {
if (pagerState.currentPage == pagerState.pageCount - 1) {
if (pagerState.currentPage == pagesToDisplay.lastIndex) {
onFinish(pagesToDisplay[pagerState.currentPage])
} else {
coroutineScope.launch {
@ -152,7 +155,7 @@ private fun JunoOnboardingContent(
.navigationBarsPadding(),
) {
HorizontalPager(
count = pagesToDisplay.size,
pageCount = pagesToDisplay.size,
state = pagerState,
key = { pagesToDisplay[it].type },
modifier = Modifier
@ -175,6 +178,7 @@ private fun JunoOnboardingContent(
PagerIndicator(
pagerState = pagerState,
pageCount = pagesToDisplay.size,
activeColor = FirefoxTheme.colors.actionPrimary,
inactiveColor = FirefoxTheme.colors.actionSecondary,
leaveTrail = true,
@ -198,7 +202,7 @@ private class DisableForwardSwipeNestedScrollConnection(
// this would be a result of a slow back fling, and we should allow snapper to
// snap to the appropriate item.
// Else consume the whole offset and disable going forward.
if (pagerState.currentPageOffset < 0) {
if (pagerState.currentPageOffsetFraction < 0) {
Offset.Zero
} else {
Offset(available.x, 0f)

@ -2,13 +2,18 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
@file:OptIn(ExperimentalFoundationApi::class)
package org.mozilla.fenix.tabstray
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
@ -25,9 +30,6 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.rememberNestedScrollInteropConnection
import androidx.compose.ui.res.stringResource
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 mozilla.components.browser.state.selector.normalTabs
import mozilla.components.browser.state.selector.privateTabs
import mozilla.components.browser.state.state.BrowserState
@ -85,7 +87,6 @@ import mozilla.components.browser.storage.sync.Tab as SyncTab
* @param onDeleteSelectedTabsClick Invoked when the user clicks on the close selected tabs banner menu item.
* @param onForceSelectedTabsAsInactiveClick Invoked when the user clicks on the make inactive banner menu item.
*/
@OptIn(ExperimentalPagerApi::class)
@Suppress("LongMethod", "LongParameterList", "ComplexMethod")
@Composable
fun TabsTray(
@ -182,7 +183,7 @@ fun TabsTray(
Box(modifier = Modifier.fillMaxSize()) {
HorizontalPager(
count = Page.values().size,
pageCount = Page.values().size,
modifier = Modifier.fillMaxSize(),
state = pagerState,
userScrollEnabled = false,

@ -116,7 +116,6 @@ object FenixDependencies {
const val google_material = "com.google.android.material:material:${FenixVersions.google_material}"
const val google_accompanist_drawablepainter = "com.google.accompanist:accompanist-drawablepainter:${FenixVersions.google_accompanist}"
const val google_accompanist_pager = "com.google.accompanist:accompanist-pager:${FenixVersions.google_accompanist}"
const val protobuf_javalite = "com.google.protobuf:protobuf-javalite:${FenixVersions.protobuf}"
const val protobuf_compiler = "com.google.protobuf:protoc:${FenixVersions.protobuf}"

Loading…
Cancel
Save