From eeef2c347da6f125390256af2ec849f53673ea4d Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Tue, 13 Dec 2022 17:03:04 +0000 Subject: [PATCH] feat(android): use enter always scroll behavior for TopAppBar --- .../kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt | 9 ++++++++- .../msfjarvis/claw/common/ui/decorations/ClawAppBar.kt | 6 +++++- config/detekt/detekt.yml | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt index 9f845031..b02cf0bb 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt @@ -14,6 +14,7 @@ import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.SideEffect @@ -22,6 +23,7 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalUriHandler @@ -69,6 +71,7 @@ fun LobstersApp( modifier: Modifier = Modifier, viewModel: ClawViewModel = injectedViewModel(), ) { + val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior() val systemUiController = rememberSystemUiController() val hottestListState = rememberLazyListState() val newestListState = rememberLazyListState() @@ -153,6 +156,7 @@ fun LobstersApp( Text(text = stringResource(R.string.app_name), fontWeight = FontWeight.Bold) } }, + scrollBehavior = scrollBehavior, ) }, bottomBar = { @@ -162,7 +166,10 @@ fun LobstersApp( isVisible = navItems.any { it.route == currentDestination }, ) }, - modifier = modifier.semantics { testTagsAsResourceId = true }, + modifier = + modifier + .semantics { testTagsAsResourceId = true } + .nestedScroll(scrollBehavior.nestedScrollConnection), ) { paddingValues -> NavHost( navController = navController, diff --git a/common/src/main/kotlin/dev/msfjarvis/claw/common/ui/decorations/ClawAppBar.kt b/common/src/main/kotlin/dev/msfjarvis/claw/common/ui/decorations/ClawAppBar.kt index a6612471..5752a452 100644 --- a/common/src/main/kotlin/dev/msfjarvis/claw/common/ui/decorations/ClawAppBar.kt +++ b/common/src/main/kotlin/dev/msfjarvis/claw/common/ui/decorations/ClawAppBar.kt @@ -4,6 +4,8 @@ * license that can be found in the LICENSE file or at * https://opensource.org/licenses/MIT. */ +@file:OptIn(ExperimentalMaterial3Api::class) + package dev.msfjarvis.claw.common.ui.decorations import androidx.compose.foundation.layout.RowScope @@ -12,6 +14,7 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.material3.TopAppBarScrollBehavior import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.draw.shadow @@ -24,13 +27,13 @@ import dev.msfjarvis.claw.common.ui.preview.ThemePreviews import dev.msfjarvis.claw.common.ui.surfaceColorAtNavigationBarElevation @Composable -@OptIn(ExperimentalMaterial3Api::class) fun ClawAppBar( backgroundColor: Color, modifier: Modifier = Modifier, navigationIcon: @Composable () -> Unit = {}, title: @Composable () -> Unit = {}, actions: @Composable RowScope.() -> Unit = {}, + scrollBehavior: TopAppBarScrollBehavior? = null, ) { TopAppBar( title = title, @@ -38,6 +41,7 @@ fun ClawAppBar( colors = TopAppBarDefaults.smallTopAppBarColors(containerColor = backgroundColor), navigationIcon = navigationIcon, actions = actions, + scrollBehavior = scrollBehavior, ) } diff --git a/config/detekt/detekt.yml b/config/detekt/detekt.yml index c53552ae..ea147af6 100644 --- a/config/detekt/detekt.yml +++ b/config/detekt/detekt.yml @@ -125,7 +125,7 @@ complexity: threshold: 60 LongParameterList: active: true - functionThreshold: 6 + functionThreshold: 7 constructorThreshold: 7 ignoreDefaultParameters: false ignoreDataClasses: true