From 6875ca8f5619556dbd77fe6346456cf788798e0d Mon Sep 17 00:00:00 2001 From: David Perez Date: Thu, 4 Jan 2024 13:06:52 -0600 Subject: [PATCH] Simplify SettingScreen (#494) --- .../feature/settings/SettingsScreen.kt | 60 +++++++++---------- 1 file changed, 28 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/SettingsScreen.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/SettingsScreen.kt index 0e65b22db3..046a38fa21 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/SettingsScreen.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/feature/settings/SettingsScreen.kt @@ -3,18 +3,17 @@ package com.x8bit.bitwarden.ui.platform.feature.settings import androidx.compose.foundation.clickable import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.defaultMinSize import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.ripple.rememberRipple import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -33,6 +32,7 @@ import androidx.hilt.navigation.compose.hiltViewModel import com.x8bit.bitwarden.R import com.x8bit.bitwarden.ui.platform.base.util.EventsEffect import com.x8bit.bitwarden.ui.platform.base.util.Text +import com.x8bit.bitwarden.ui.platform.base.util.bottomDivider import com.x8bit.bitwarden.ui.platform.components.BitwardenMediumTopAppBar import com.x8bit.bitwarden.ui.platform.components.BitwardenScaffold import com.x8bit.bitwarden.ui.platform.theme.BitwardenTheme @@ -80,12 +80,15 @@ fun SettingsScreen( .fillMaxSize() .verticalScroll(state = rememberScrollState()), ) { - Settings.values().forEach { + Settings.entries.forEach { SettingsRow( text = it.text, onClick = remember(viewModel) { { viewModel.trySendAction(SettingsAction.SettingsClick(it)) } }, + modifier = Modifier + .padding(horizontal = 16.dp) + .fillMaxWidth(), ) } } @@ -96,42 +99,35 @@ fun SettingsScreen( private fun SettingsRow( text: Text, onClick: () -> Unit, + modifier: Modifier = Modifier, ) { - Box( - contentAlignment = Alignment.BottomCenter, + Row( modifier = Modifier .clickable( interactionSource = remember { MutableInteractionSource() }, indication = rememberRipple(color = MaterialTheme.colorScheme.primary), onClick = onClick, - ), + ) + .bottomDivider(paddingStart = 16.dp) + .defaultMinSize(minHeight = 56.dp) + .padding(end = 8.dp, top = 8.dp, bottom = 8.dp) + .then(modifier), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically, ) { - Row( + Text( modifier = Modifier - .defaultMinSize(minHeight = 56.dp) - .padding(start = 16.dp, end = 24.dp, top = 8.dp, bottom = 8.dp) - .fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceBetween, - verticalAlignment = Alignment.CenterVertically, - ) { - Text( - modifier = Modifier - .padding(end = 16.dp) - .weight(1f), - text = text(), - style = MaterialTheme.typography.bodyLarge, - color = MaterialTheme.colorScheme.onSurface, - ) - Icon( - painter = painterResource(id = R.drawable.ic_navigate_next), - contentDescription = null, - tint = MaterialTheme.colorScheme.onSurface, - ) - } - HorizontalDivider( - modifier = Modifier.padding(start = 16.dp), - thickness = 1.dp, - color = MaterialTheme.colorScheme.outlineVariant, + .padding(end = 16.dp) + .weight(1f), + text = text(), + style = MaterialTheme.typography.bodyLarge, + color = MaterialTheme.colorScheme.onSurface, + ) + Icon( + painter = painterResource(id = R.drawable.ic_navigate_next), + contentDescription = null, + tint = MaterialTheme.colorScheme.onSurface, + modifier = Modifier.size(24.dp), ) } } @@ -145,7 +141,7 @@ private fun SettingsRows_preview() { .padding(16.dp) .fillMaxSize(), ) { - Settings.values().forEach { + Settings.entries.forEach { SettingsRow( text = it.text, onClick = { },