From c36a90b2e622a9941e4afb19d1b14943ba872c87 Mon Sep 17 00:00:00 2001 From: Evgenii Kozlov Date: Tue, 19 Dec 2023 22:26:16 +0100 Subject: [PATCH] DROID-2076 Settings | Fix | Main-settings screen might not be scrollable on very small devices (#721) --- .../ui/settings/ProfileSettingsFragment.kt | 2 +- .../ui_settings/account/ProfileScreen.kt | 135 +++++++++++------- 2 files changed, 88 insertions(+), 49 deletions(-) diff --git a/app/src/main/java/com/anytypeio/anytype/ui/settings/ProfileSettingsFragment.kt b/app/src/main/java/com/anytypeio/anytype/ui/settings/ProfileSettingsFragment.kt index 6d168ca259..1e45b39b21 100644 --- a/app/src/main/java/com/anytypeio/anytype/ui/settings/ProfileSettingsFragment.kt +++ b/app/src/main/java/com/anytypeio/anytype/ui/settings/ProfileSettingsFragment.kt @@ -164,6 +164,6 @@ class ProfileSettingsFragment : BaseBottomSheetComposeFragment() { } } -private const val PADDING_TOP = 54 +private const val PADDING_TOP = 28 private const val SELECT_IMAGE_CODE = 1 diff --git a/ui-settings/src/main/java/com/anytypeio/anytype/ui_settings/account/ProfileScreen.kt b/ui-settings/src/main/java/com/anytypeio/anytype/ui_settings/account/ProfileScreen.kt index b63679c92c..49284bf11d 100644 --- a/ui-settings/src/main/java/com/anytypeio/anytype/ui_settings/account/ProfileScreen.kt +++ b/ui-settings/src/main/java/com/anytypeio/anytype/ui_settings/account/ProfileScreen.kt @@ -9,11 +9,12 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size +import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.BasicTextField import androidx.compose.foundation.text.KeyboardActions @@ -32,8 +33,10 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color +import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalFocusManager +import androidx.compose.ui.platform.rememberNestedScrollInteropConnection import androidx.compose.ui.res.colorResource import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -72,52 +75,86 @@ fun ProfileSettingsScreen( onDataManagementClicked: () -> Unit, onAboutClicked: () -> Unit ) { - Column(modifier = Modifier.fillMaxHeight()) { - Header( - modifier = Modifier.align(Alignment.CenterHorizontally), - account = account, - onNameSet = onNameChange, - onProfileIconClick = onProfileIconClick - ) - Spacer( - modifier = Modifier - .height(10.dp) - .padding(top = 4.dp) - ) - Divider() - Section(stringResource(R.string.settings)) - Option( - image = R.drawable.ic_appearance, - text = stringResource(R.string.appearance), - onClick = onAppearanceClicked - ) - Divider(paddingStart = 60.dp) - Option( - image = R.drawable.ic_file_storage, - text = stringResource(R.string.data_management), - onClick = onDataManagementClicked - ) - Divider(paddingStart = 60.dp) - Option( - image = R.drawable.ic_about, - text = stringResource(R.string.about), - onClick = onAboutClicked - ) - Divider(paddingStart = 60.dp) - Section(stringResource(R.string.access)) - Option( - image = R.drawable.ic_keychain_phrase, - text = stringResource(R.string.recovery_phrase), - onClick = onKeychainPhraseClicked - ) - Divider(paddingStart = 60.dp) - ActionWithProgressBar( - name = stringResource(R.string.log_out), - color = colorResource(R.color.palette_dark_red), - onClick = onLogoutClicked, - isInProgress = isLogoutInProgress - ) - Box(Modifier.height(54.dp)) + LazyColumn( + modifier = Modifier + .nestedScroll(rememberNestedScrollInteropConnection()) + .fillMaxSize(), + horizontalAlignment = Alignment.CenterHorizontally + ) { + item { + Header( + account = account, + onNameSet = onNameChange, + onProfileIconClick = onProfileIconClick + ) + } + item { + Spacer( + modifier = Modifier + .height(10.dp) + .padding(top = 4.dp) + ) + } + item { + Divider() + } + item { + Section(stringResource(R.string.settings)) + } + item { + Option( + image = R.drawable.ic_appearance, + text = stringResource(R.string.appearance), + onClick = onAppearanceClicked + ) + } + item { + Divider(paddingStart = 60.dp) + } + item { + Option( + image = R.drawable.ic_file_storage, + text = stringResource(R.string.data_management), + onClick = onDataManagementClicked + ) + } + item { + Divider(paddingStart = 60.dp) + } + item { + Option( + image = R.drawable.ic_about, + text = stringResource(R.string.about), + onClick = onAboutClicked + ) + } + item { + Divider(paddingStart = 60.dp) + } + item { + Section(stringResource(R.string.access)) + } + item { + Option( + image = R.drawable.ic_keychain_phrase, + text = stringResource(R.string.recovery_phrase), + onClick = onKeychainPhraseClicked + ) + } + item { + Divider(paddingStart = 60.dp) + } + item { + ActionWithProgressBar( + name = stringResource(R.string.log_out), + color = colorResource(R.color.palette_dark_red), + onClick = onLogoutClicked, + isInProgress = isLogoutInProgress + ) + } + item { + Box(Modifier.height(54.dp)) + } } } @@ -300,7 +337,9 @@ fun ProfileNameBlock( onValueChange = { nameValue.value = it }, - modifier = Modifier.fillMaxWidth().padding(top = 4.dp, end = 20.dp), + modifier = Modifier + .fillMaxWidth() + .padding(top = 4.dp, end = 20.dp), enabled = true, textStyle = TextStyle( fontSize = 22.sp,