From a4f08208575d6d0e7dc66f56e48fefda8ab3e412 Mon Sep 17 00:00:00 2001 From: Abdelilah El Aissaoui Date: Thu, 21 Oct 2021 23:55:08 +0200 Subject: [PATCH] Moved credentials dialog to a different file --- .../app/git/dialogs/UserPasswordDialog.kt | 82 +++++++++++++++++++ src/main/kotlin/app/ui/RepositoryOpen.kt | 47 ++--------- 2 files changed, 89 insertions(+), 40 deletions(-) create mode 100644 src/main/kotlin/app/git/dialogs/UserPasswordDialog.kt diff --git a/src/main/kotlin/app/git/dialogs/UserPasswordDialog.kt b/src/main/kotlin/app/git/dialogs/UserPasswordDialog.kt new file mode 100644 index 0000000..6b5affd --- /dev/null +++ b/src/main/kotlin/app/git/dialogs/UserPasswordDialog.kt @@ -0,0 +1,82 @@ +package app.git.dialogs + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.material.Button +import androidx.compose.material.OutlinedTextField +import androidx.compose.material.Text +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusOrder +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.compose.ui.window.Dialog + +@Composable +fun UserPasswordDialog( + onReject: () -> Unit, + onAccept: (user: String, password: String) -> Unit +) { + var userField by remember { mutableStateOf("") } + var passwordField by remember { mutableStateOf("") } + val userFieldFocusRequester = remember { FocusRequester() } + val passwordFieldFocusRequester = remember { FocusRequester() } + val buttonFieldFocusRequester = remember { FocusRequester() } + + Dialog( + onCloseRequest = onReject, + title = "", + + ) { + Column( + modifier = Modifier.fillMaxSize(), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center, + ) { + Text("Introduce your remote server credentials") + + OutlinedTextField( + modifier = Modifier.focusOrder(userFieldFocusRequester) { + this.next = passwordFieldFocusRequester + }, + value = userField, + label = { Text("User", fontSize = 14.sp) }, + textStyle = TextStyle(fontSize = 14.sp), + onValueChange = { + userField = it + }, + ) + OutlinedTextField( + modifier = Modifier.padding(bottom = 8.dp) + .focusOrder(passwordFieldFocusRequester) { + this.previous = userFieldFocusRequester + this.next = buttonFieldFocusRequester + }, + value = passwordField, + label = { Text("Password", fontSize = 14.sp) }, + textStyle = TextStyle(fontSize = 14.sp), + onValueChange = { + passwordField = it + }, + visualTransformation = PasswordVisualTransformation() + ) + Button( + modifier = Modifier.focusOrder(buttonFieldFocusRequester) { + this.previous = passwordFieldFocusRequester + this.next = userFieldFocusRequester + }, + onClick = { + onAccept(userField, passwordField) + } + ) { + Text("Ok") + } + } + } +} diff --git a/src/main/kotlin/app/ui/RepositoryOpen.kt b/src/main/kotlin/app/ui/RepositoryOpen.kt index dc7daf6..8e86365 100644 --- a/src/main/kotlin/app/ui/RepositoryOpen.kt +++ b/src/main/kotlin/app/ui/RepositoryOpen.kt @@ -14,6 +14,7 @@ import androidx.compose.ui.window.Dialog import app.credentials.CredentialsState import app.git.DiffEntryType import app.git.GitManager +import app.git.dialogs.UserPasswordDialog import openRepositoryDialog import org.eclipse.jgit.revwalk.RevCommit @@ -36,50 +37,16 @@ fun RepositoryOpenPage(gitManager: GitManager) { val credentialsState by gitManager.credentialsState.collectAsState() if (credentialsState == CredentialsState.CredentialsRequested) { - var userField by remember { mutableStateOf("") } - var passwordField by remember { mutableStateOf("") } - - Dialog( - onCloseRequest = { + UserPasswordDialog( + onReject = { gitManager.credentialsDenied() }, - title = "", - - ) { - Column( - modifier = Modifier.fillMaxSize(), - horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.Center, - ) { - Text("Introduce your remote server credentials") - - OutlinedTextField( - value = userField, - label = { Text("User", fontSize = 14.sp) }, - textStyle = TextStyle(fontSize = 14.sp), - onValueChange = { - userField = it - }, - ) - OutlinedTextField( - modifier = Modifier.padding(bottom = 8.dp), - value = passwordField, - label = { Text("Password", fontSize = 14.sp) }, - textStyle = TextStyle(fontSize = 14.sp), - onValueChange = { - passwordField = it - }, - visualTransformation = PasswordVisualTransformation() - ) - Button(onClick = { gitManager.credentialsAccepted(userField, passwordField) }) { - Text("Ok") - } + onAccept = { user, password -> + gitManager.credentialsAccepted(user, password) } - } + ) } - - Column { GMenu( onRepositoryOpen = { @@ -163,4 +130,4 @@ fun RepositoryOpenPage(gitManager: GitManager) { } } } -} +} \ No newline at end of file