@@ -3,8 +3,10 @@ package org.mifos.mobile.ui.login
3
3
import android.content.res.Configuration.UI_MODE_NIGHT_NO
4
4
import androidx.compose.foundation.gestures.detectTapGestures
5
5
import androidx.compose.foundation.isSystemInDarkTheme
6
+ import androidx.compose.foundation.layout.Arrangement
6
7
import androidx.compose.foundation.layout.Column
7
8
import androidx.compose.foundation.layout.PaddingValues
9
+ import androidx.compose.foundation.layout.Row
8
10
import androidx.compose.foundation.layout.Spacer
9
11
import androidx.compose.foundation.layout.fillMaxSize
10
12
import androidx.compose.foundation.layout.fillMaxWidth
@@ -18,14 +20,14 @@ import androidx.compose.material.icons.filled.Visibility
18
20
import androidx.compose.material.icons.filled.VisibilityOff
19
21
import androidx.compose.material3.Button
20
22
import androidx.compose.material3.ButtonDefaults
23
+ import androidx.compose.material3.Divider
21
24
import androidx.compose.material3.Icon
22
25
import androidx.compose.material3.IconButton
23
26
import androidx.compose.material3.Text
24
27
import androidx.compose.material3.TextButton
25
28
import androidx.compose.runtime.Composable
26
29
import androidx.compose.runtime.getValue
27
30
import androidx.compose.runtime.mutableStateOf
28
- import androidx.compose.runtime.remember
29
31
import androidx.compose.runtime.saveable.rememberSaveable
30
32
import androidx.compose.runtime.setValue
31
33
import androidx.compose.ui.Alignment
@@ -39,6 +41,7 @@ import androidx.compose.ui.text.input.TextFieldValue
39
41
import androidx.compose.ui.text.input.VisualTransformation
40
42
import androidx.compose.ui.tooling.preview.Preview
41
43
import androidx.compose.ui.unit.dp
44
+ import androidx.compose.ui.unit.sp
42
45
import org.mifos.mobile.R
43
46
import org.mifos.mobile.core.ui.component.MifosMobileIcon
44
47
import org.mifos.mobile.core.ui.component.MifosOutlinedTextField
@@ -52,13 +55,21 @@ fun LoginScreen(
52
55
) {
53
56
val keyboardController = LocalSoftwareKeyboardController .current
54
57
55
- var username by rememberSaveable(stateSaver = TextFieldValue .Saver ) { mutableStateOf(TextFieldValue (" " ))}
56
- var password by rememberSaveable(stateSaver = TextFieldValue .Saver ) {mutableStateOf( TextFieldValue (" " ))}
58
+ var username by rememberSaveable(stateSaver = TextFieldValue .Saver ) {
59
+ mutableStateOf(
60
+ TextFieldValue (" " )
61
+ )
62
+ }
63
+ var password by rememberSaveable(stateSaver = TextFieldValue .Saver ) {
64
+ mutableStateOf(
65
+ TextFieldValue (" " )
66
+ )
67
+ }
57
68
58
- var passwordVisibility: Boolean by remember { mutableStateOf(false ) }
69
+ var passwordVisibility: Boolean by rememberSaveable { mutableStateOf(false ) }
59
70
60
71
var usernameError by rememberSaveable { mutableStateOf(false ) }
61
- var passwordError by rememberSaveable { mutableStateOf(false )}
72
+ var passwordError by rememberSaveable { mutableStateOf(false ) }
62
73
63
74
val usernameErrorContent = getUsernameError.invoke(username.text)
64
75
val passwordErrorContent = getPasswordError.invoke(password.text)
@@ -128,12 +139,15 @@ fun LoginScreen(
128
139
usernameErrorContent.isEmpty() && passwordErrorContent.isEmpty() -> {
129
140
login.invoke(username.text, password.text)
130
141
}
142
+
131
143
usernameErrorContent.isEmpty() && passwordErrorContent.isNotEmpty() -> {
132
144
passwordError = true
133
145
}
146
+
134
147
usernameErrorContent.isNotEmpty() && passwordErrorContent.isEmpty() -> {
135
148
usernameError = true
136
149
}
150
+
137
151
else -> {
138
152
passwordError = true
139
153
usernameError = true
@@ -156,6 +170,31 @@ fun LoginScreen(
156
170
157
171
Spacer (modifier = Modifier .height(16 .dp))
158
172
173
+ Row (
174
+ modifier = Modifier .fillMaxWidth(),
175
+ verticalAlignment = Alignment .CenterVertically ,
176
+ horizontalArrangement = Arrangement .SpaceEvenly
177
+ ) {
178
+ Divider (
179
+ modifier = Modifier
180
+ .fillMaxWidth()
181
+ .padding(start = 16 .dp)
182
+ .weight(1f ), color = Color .Gray , thickness = 1 .dp
183
+ )
184
+ Text (
185
+ modifier = Modifier .padding(8 .dp),
186
+ text = " or" ,
187
+ fontSize = 18 .sp,
188
+ color = if (isSystemInDarkTheme()) Color .White else Color .Black
189
+ )
190
+ Divider (
191
+ modifier = Modifier
192
+ .fillMaxWidth()
193
+ .padding(end = 16 .dp)
194
+ .weight(1f ), color = Color .Gray , thickness = 1 .dp
195
+ )
196
+ }
197
+
159
198
TextButton (
160
199
onClick = {
161
200
createAccount.invoke()
0 commit comments