Skip to content

Commit a87938f

Browse files
committed
Populate username in settings screen and also update UI so it doesn't look editable
1 parent d41fc93 commit a87938f

File tree

4 files changed

+44
-114
lines changed

4 files changed

+44
-114
lines changed

Shrine/app/src/main/java/com/authentication/shrine/repository/AuthRepository.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,7 @@ class AuthRepository @Inject constructor(
385385
apiResult.getSessionId()?.also {
386386
prefs[SESSION_ID] = it
387387
}
388+
prefs[USERNAME] = apiResult.body()?.username ?: ""
388389
}
389390
AuthResult.Success(Unit)
390391
} else {

Shrine/app/src/main/java/com/authentication/shrine/ui/SettingsScreen.kt

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ import androidx.lifecycle.repeatOnLifecycle
4848
import com.authentication.shrine.R
4949
import com.authentication.shrine.ui.common.ShrineButton
5050
import com.authentication.shrine.ui.common.ShrineClickableText
51-
import com.authentication.shrine.ui.common.ShrineEditText
51+
import com.authentication.shrine.ui.common.ShrineTextField
5252
import com.authentication.shrine.ui.common.ShrineLoader
5353
import com.authentication.shrine.ui.common.ShrineTextHeader
5454
import com.authentication.shrine.ui.common.ShrineToolbar
@@ -135,16 +135,14 @@ fun SettingsScreen(
135135

136136
ShrineTextHeader(stringResource(R.string.account))
137137

138-
ShrineEditText(
138+
ShrineTextField(
139139
title = stringResource(R.string.full_name),
140140
text = uiState.username,
141-
isFieldLocked = true,
142141
)
143142

144-
ShrineEditText(
143+
ShrineTextField(
145144
title = stringResource(R.string.username),
146145
text = uiState.username,
147-
isFieldLocked = true,
148146
)
149147

150148
SecuritySection(
@@ -400,7 +398,7 @@ fun SettingPreview() {
400398
onLearnMoreClicked = { },
401399
onManagePasskeysClicked = { },
402400
onBackClicked = { },
403-
uiState = SettingsUiState(userHasPasskeys = false),
401+
uiState = SettingsUiState(userHasPasskeys = false, username = "User 1"),
404402
)
405403
}
406404
}

Shrine/app/src/main/java/com/authentication/shrine/ui/common/ShrineEditText.kt

Lines changed: 0 additions & 77 deletions
This file was deleted.

Shrine/app/src/main/java/com/authentication/shrine/ui/common/ShrineTextField.kt

Lines changed: 39 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -15,54 +15,62 @@
1515
*/
1616
package com.authentication.shrine.ui.common
1717

18-
import androidx.compose.foundation.background
18+
import androidx.compose.foundation.layout.Arrangement
19+
import androidx.compose.foundation.layout.Column
20+
import androidx.compose.foundation.layout.fillMaxWidth
1921
import androidx.compose.foundation.layout.padding
20-
import androidx.compose.foundation.layout.width
22+
import androidx.compose.foundation.shape.RoundedCornerShape
2123
import androidx.compose.material3.MaterialTheme
22-
import androidx.compose.material3.TextField
24+
import androidx.compose.material3.OutlinedTextField
25+
import androidx.compose.material3.OutlinedTextFieldDefaults
26+
import androidx.compose.material3.Text
2327
import androidx.compose.runtime.Composable
2428
import androidx.compose.ui.Modifier
2529
import androidx.compose.ui.res.dimensionResource
26-
import androidx.compose.ui.res.stringResource
27-
import androidx.compose.ui.text.input.TextFieldValue
2830
import androidx.compose.ui.tooling.preview.Preview
29-
import androidx.compose.ui.unit.dp
3031
import com.authentication.shrine.R
3132
import com.authentication.shrine.ui.theme.ShrineTheme
33+
import com.authentication.shrine.ui.theme.grayBackground
3234

33-
/**
34-
* A custom TextField composable for the Shrine app.
35-
*
36-
* @param modifier The modifier to be applied to the TextField.
37-
* @param value The current value of the TextField.
38-
* @param onValueChange The callback to be invoked when the TextField value changes.
39-
*/
4035
@Composable
4136
fun ShrineTextField(
42-
value: TextFieldValue,
43-
onValueChange: (TextFieldValue) -> Unit,
44-
modifier: Modifier = Modifier,
37+
title: String,
38+
text: String = "",
4539
) {
46-
TextField(
47-
value = value,
48-
onValueChange = onValueChange,
49-
modifier = modifier
50-
.width(300.dp)
51-
.background(MaterialTheme.colorScheme.tertiaryContainer)
52-
.padding(dimensionResource(R.dimen.dimen_standard)),
53-
)
40+
Column(
41+
modifier = Modifier
42+
.fillMaxWidth()
43+
.padding(horizontal = dimensionResource(R.dimen.padding_small)),
44+
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.padding_extra_small)),
45+
) {
46+
Text(text = title)
47+
48+
OutlinedTextField(
49+
value = text,
50+
onValueChange = { },
51+
modifier = Modifier
52+
.fillMaxWidth(),
53+
enabled = false,
54+
shape = RoundedCornerShape(dimensionResource(R.dimen.size_standard)),
55+
colors = OutlinedTextFieldDefaults.colors(
56+
focusedBorderColor = MaterialTheme.colorScheme.onBackground,
57+
errorBorderColor = MaterialTheme.colorScheme.error,
58+
focusedContainerColor = grayBackground,
59+
unfocusedContainerColor = grayBackground,
60+
disabledContainerColor = grayBackground,
61+
errorContainerColor = grayBackground,
62+
),
63+
)
64+
}
5465
}
5566

56-
/**
57-
* A preview of the ShrineTextField composable.
58-
*/
59-
@Preview
67+
@Preview(showSystemUi = true)
6068
@Composable
61-
private fun ShrineTextFieldPreview() {
69+
fun ShrineTextFieldPreview() {
6270
ShrineTheme {
6371
ShrineTextField(
64-
value = TextFieldValue(stringResource(R.string.demo)),
65-
onValueChange = { },
72+
"Full Name",
73+
"ABC XYZ",
6674
)
6775
}
6876
}

0 commit comments

Comments
 (0)