Skip to content

Commit 6e54e24

Browse files
committed
refactor: simplify SettingsScreen UI and clean up code
- Remove header card with emoji and description from SettingsScreen - Move save button to top-right corner as simple "SAVE" button - Simplify GetBabyNameUseCase to single expression function - Remove commented sync code from MainScreenViewModel - Update TextField label from "My Baby's Name" to "Name" - Remove save button loading state and full-width styling
1 parent fb4f32c commit 6e54e24

3 files changed

Lines changed: 27 additions & 62 deletions

File tree

app/src/main/java/com/dpconde/sofiatracker/domain/usecase/GetBabyNameUseCase.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import javax.inject.Inject
77
class GetBabyNameUseCase @Inject constructor(
88
private val settingsRepository: SettingsRepository
99
) {
10-
operator fun invoke(): Flow<String> {
11-
return settingsRepository.getBabyName()
12-
}
10+
11+
operator fun invoke() = settingsRepository.getBabyName()
12+
1313
}

app/src/main/java/com/dpconde/sofiatracker/presentation/main/MainScreenViewModel.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,6 @@ class MainScreenViewModel @Inject constructor(
3030

3131
init {
3232
loadRecentEvents()
33-
// Trigger sync when the main screen loads
34-
//triggerStartupSync()
3533
}
3634

3735
private fun loadRecentEvents() {
Lines changed: 24 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
package com.dpconde.sofiatracker.presentation.settings
22

3+
import androidx.compose.foundation.background
34
import androidx.compose.foundation.layout.*
45
import androidx.compose.foundation.text.KeyboardActions
56
import androidx.compose.foundation.text.KeyboardOptions
7+
import androidx.compose.material.icons.Icons
8+
import androidx.compose.material.icons.filled.Check
69
import androidx.compose.material3.*
710
import androidx.compose.runtime.*
811
import androidx.compose.ui.Alignment
912
import androidx.compose.ui.Modifier
13+
import androidx.compose.ui.graphics.Color
1014
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
1115
import androidx.compose.ui.text.input.ImeAction
1216
import androidx.compose.ui.text.style.TextAlign
@@ -21,48 +25,29 @@ fun SettingsScreen(
2125
) {
2226
val uiState by viewModel.uiState.collectAsState()
2327
val keyboardController = LocalSoftwareKeyboardController.current
24-
28+
2529
Column(
2630
modifier = modifier
27-
.fillMaxSize()
28-
.padding(16.dp),
31+
.padding(16.dp)
32+
.fillMaxSize(),
2933
verticalArrangement = Arrangement.spacedBy(16.dp)
3034
) {
31-
// Header Card
32-
Card(
33-
modifier = Modifier.fillMaxWidth(),
34-
colors = CardDefaults.cardColors(
35-
containerColor = MaterialTheme.colorScheme.primaryContainer
36-
)
37-
) {
38-
Column(
39-
modifier = Modifier
40-
.fillMaxWidth()
41-
.padding(20.dp),
42-
horizontalAlignment = Alignment.CenterHorizontally
35+
36+
Row {
37+
Spacer(Modifier.weight(1f))
38+
Button(
39+
onClick = {
40+
keyboardController?.hide()
41+
viewModel.saveBabyName()
42+
},
43+
enabled = !uiState.isLoading && uiState.babyName.isNotBlank()
4344
) {
44-
Text(
45-
text = "⚙️",
46-
style = MaterialTheme.typography.displaySmall
47-
)
48-
49-
Spacer(modifier = Modifier.height(12.dp))
50-
51-
Text(
52-
text = "Settings",
53-
style = MaterialTheme.typography.headlineMedium,
54-
color = MaterialTheme.colorScheme.onPrimaryContainer
55-
)
56-
57-
Text(
58-
text = "Customize your app experience",
59-
style = MaterialTheme.typography.bodyMedium,
60-
color = MaterialTheme.colorScheme.onPrimaryContainer.copy(alpha = 0.7f),
61-
textAlign = TextAlign.Center
62-
)
45+
Text("SAVE")
6346
}
6447
}
65-
48+
49+
50+
6651
// Baby Name Form Card
6752
Card(
6853
modifier = Modifier.fillMaxWidth(),
@@ -81,11 +66,11 @@ fun SettingsScreen(
8166
style = MaterialTheme.typography.titleLarge,
8267
color = MaterialTheme.colorScheme.onSurface
8368
)
84-
69+
8570
OutlinedTextField(
8671
value = uiState.babyName,
8772
onValueChange = viewModel::updateBabyName,
88-
label = { Text("My Baby's Name") },
73+
label = { Text("Name") },
8974
placeholder = { Text("Sofía") },
9075
modifier = Modifier.fillMaxWidth(),
9176
singleLine = true,
@@ -98,25 +83,7 @@ fun SettingsScreen(
9883
),
9984
enabled = !uiState.isLoading
10085
)
101-
102-
Button(
103-
onClick = {
104-
keyboardController?.hide()
105-
viewModel.saveBabyName()
106-
},
107-
modifier = Modifier.fillMaxWidth(),
108-
enabled = !uiState.isLoading && uiState.babyName.isNotBlank()
109-
) {
110-
if (uiState.isLoading) {
111-
CircularProgressIndicator(
112-
modifier = Modifier.size(16.dp),
113-
strokeWidth = 2.dp
114-
)
115-
Spacer(modifier = Modifier.width(8.dp))
116-
}
117-
Text(if (uiState.isLoading) "Saving..." else "Save")
118-
}
119-
86+
12087
uiState.error?.let { error ->
12188
Card(
12289
colors = CardDefaults.cardColors(
@@ -134,4 +101,4 @@ fun SettingsScreen(
134101
}
135102
}
136103
}
137-
}
104+
}

0 commit comments

Comments
 (0)