From f2b0c40ff092a080f5950919c7d0edd792f8ebc5 Mon Sep 17 00:00:00 2001 From: Abdelilah El Aissaoui Date: Sat, 29 Oct 2022 22:24:00 +0200 Subject: [PATCH] Fixed user+password dialog --- .../credentials/HttpCredentialsProvider.kt | 4 +- .../gitnuro/ui/dialogs/UserPasswordDialog.kt | 55 +++++++++++-------- 2 files changed, 33 insertions(+), 26 deletions(-) diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/credentials/HttpCredentialsProvider.kt b/src/main/kotlin/com/jetpackduba/gitnuro/credentials/HttpCredentialsProvider.kt index 4d0f26f..1a6486f 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/credentials/HttpCredentialsProvider.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/credentials/HttpCredentialsProvider.kt @@ -150,8 +150,8 @@ class HttpCredentialsProvider @AssistedInject constructor( } bufferedReader.use { - var line: String; - while (bufferedReader.readLine().also { line = it } != null && !(usernameSet && passwordSet)) { + var line: String + while (bufferedReader.readLine().also { line = checkNotNull(it) { "Cancelled authentication" } } != null && !(usernameSet && passwordSet)) { if (line.startsWith("username=")) { val split = line.split("=") val userName = split.getOrNull(1) ?: return ExternalCredentialsRequestResult.CREDENTIALS_NOT_STORED diff --git a/src/main/kotlin/com/jetpackduba/gitnuro/ui/dialogs/UserPasswordDialog.kt b/src/main/kotlin/com/jetpackduba/gitnuro/ui/dialogs/UserPasswordDialog.kt index b981fc3..8b87470 100644 --- a/src/main/kotlin/com/jetpackduba/gitnuro/ui/dialogs/UserPasswordDialog.kt +++ b/src/main/kotlin/com/jetpackduba/gitnuro/ui/dialogs/UserPasswordDialog.kt @@ -2,6 +2,7 @@ package com.jetpackduba.gitnuro.ui.dialogs import androidx.compose.foundation.background import androidx.compose.foundation.layout.* +import androidx.compose.material.Icon import androidx.compose.material.MaterialTheme import androidx.compose.material.OutlinedTextField import androidx.compose.material.Text @@ -13,11 +14,15 @@ import androidx.compose.ui.focus.focusProperties import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.graphics.Color import androidx.compose.ui.input.key.onPreviewKeyEvent +import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import com.jetpackduba.gitnuro.keybindings.KeybindingOption import com.jetpackduba.gitnuro.keybindings.matchesBinding +import com.jetpackduba.gitnuro.theme.onBackgroundSecondary import com.jetpackduba.gitnuro.theme.outlinedTextFieldColors +import com.jetpackduba.gitnuro.ui.components.AdjustableOutlinedTextField import com.jetpackduba.gitnuro.ui.components.PrimaryButton @Composable @@ -37,21 +42,38 @@ fun UserPasswordDialog( onCloseRequested = onReject ) { Column( - modifier = Modifier - .background(MaterialTheme.colors.background), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center, ) { + Icon( + painterResource("lock.svg"), + contentDescription = null, + modifier = Modifier + .size(64.dp) + .padding(vertical = 16.dp), + tint = MaterialTheme.colors.onBackground, + ) Text( text = "Introduce your remote server credentials", modifier = Modifier - .padding(vertical = 8.dp), + .padding(bottom = 8.dp), color = MaterialTheme.colors.onBackground, + style = MaterialTheme.typography.body1, ) - OutlinedTextField( + Text( + text = "Your remote requires authentication with a\nusername and a password", modifier = Modifier + .padding(bottom = 16.dp), + color = MaterialTheme.colors.onBackgroundSecondary, + style = MaterialTheme.typography.body2, + textAlign = TextAlign.Center, + ) + + AdjustableOutlinedTextField( + modifier = Modifier + .padding(bottom = 8.dp) .focusRequester(userFieldFocusRequester) .focusProperties { this.next = passwordFieldFocusRequester @@ -66,20 +88,13 @@ fun UserPasswordDialog( } }, value = userField, - singleLine = true, - colors = outlinedTextFieldColors(), - label = { - Text( - "User", - style = MaterialTheme.typography.body1.copy(color = MaterialTheme.colors.primaryVariant), - ) - }, - textStyle = MaterialTheme.typography.body1, + maxLines = 1, + hint = "Username", onValueChange = { userField = it }, ) - OutlinedTextField( + AdjustableOutlinedTextField( modifier = Modifier .padding(bottom = 8.dp) .focusRequester(passwordFieldFocusRequester) @@ -97,16 +112,8 @@ fun UserPasswordDialog( } }, value = passwordField, - singleLine = true, - label = { - Text( - "Password", - style = MaterialTheme.typography.body1, - color = MaterialTheme.colors.primaryVariant, - ) - }, - textStyle = MaterialTheme.typography.body1, - colors = outlinedTextFieldColors(), + maxLines = 1, + hint = "Password", onValueChange = { passwordField = it },