diff --git a/app/src/main/java/ru/myitschool/work/core/Constants.kt b/app/src/main/java/ru/myitschool/work/core/Constants.kt index 3770b63..d3fdd56 100644 --- a/app/src/main/java/ru/myitschool/work/core/Constants.kt +++ b/app/src/main/java/ru/myitschool/work/core/Constants.kt @@ -1,7 +1,7 @@ package ru.myitschool.work.core object Constants { - const val HOST = "http://10.0.0.14:49181" + const val HOST = "http://10.0.0.165:49181" const val AUTH_URL = "/auth" const val INFO_URL = "/info" const val BOOKING_URL = "/booking" diff --git a/app/src/main/java/ru/myitschool/work/core/TestIds.kt b/app/src/main/java/ru/myitschool/work/core/TestIds.kt index d67b884..b3fcd39 100644 --- a/app/src/main/java/ru/myitschool/work/core/TestIds.kt +++ b/app/src/main/java/ru/myitschool/work/core/TestIds.kt @@ -4,7 +4,8 @@ object TestIds { object Auth { const val ERROR = "auth_error" const val SIGN_BUTTON = "auth_sign_button" - const val CODE_INPUT = "auth_code_input" + const val LOGIN_INPUT = "auth_login_input" + const val PASSWORD_INPUT = "auth_pass_input" } object Main { const val ERROR = "main_error" diff --git a/app/src/main/java/ru/myitschool/work/data/repo/AuthRepository.kt b/app/src/main/java/ru/myitschool/work/data/repo/AuthRepository.kt index e4126dd..f5688f5 100644 --- a/app/src/main/java/ru/myitschool/work/data/repo/AuthRepository.kt +++ b/app/src/main/java/ru/myitschool/work/data/repo/AuthRepository.kt @@ -13,6 +13,7 @@ import ru.myitschool.work.data.source.NetworkDataSource object AuthRepository { private const val STORE = "AUTH-STORE" private const val CODE_KEY = "CODE" + private const val LOGIN = "PASS" private var codeCache: String? = null @@ -22,7 +23,9 @@ object AuthRepository { codeCache = text App.context.userDataStore.edit { preferences -> val prefKey = stringPreferencesKey(CODE_KEY) + val logPass = stringPreferencesKey(LOGIN) preferences[prefKey] = text + preferences[logPass] = text } } } @@ -43,7 +46,9 @@ object AuthRepository { codeCache = null App.context.userDataStore.edit { preferences -> val prefKey = stringPreferencesKey(CODE_KEY) + val logKey = stringPreferencesKey(LOGIN) preferences.remove(prefKey) + preferences.remove(logKey) } } diff --git a/app/src/main/java/ru/myitschool/work/domain/auth/CheckAndSaveAuthCodeUseCase.kt b/app/src/main/java/ru/myitschool/work/domain/auth/CheckAndSaveAuthCodeUseCase.kt index 012fb6f..00dd0ba 100644 --- a/app/src/main/java/ru/myitschool/work/domain/auth/CheckAndSaveAuthCodeUseCase.kt +++ b/app/src/main/java/ru/myitschool/work/domain/auth/CheckAndSaveAuthCodeUseCase.kt @@ -9,7 +9,7 @@ class CheckAndSaveAuthCodeUseCase( text: String ): Result { return repository.checkAndSave(text).mapCatching { success -> - if (!success) error("Code is incorrect") + if (!success) error("login or password is incorrect") } } } \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/domain/auth/CheckCodeFormatUseCase.kt b/app/src/main/java/ru/myitschool/work/domain/auth/CheckCodeFormatUseCase.kt index fe291a0..3a6a0ff 100644 --- a/app/src/main/java/ru/myitschool/work/domain/auth/CheckCodeFormatUseCase.kt +++ b/app/src/main/java/ru/myitschool/work/domain/auth/CheckCodeFormatUseCase.kt @@ -4,7 +4,7 @@ class CheckCodeFormatUseCase { operator fun invoke( text: String ): Boolean { - return text.length == 4 && text.all { char -> + return text.length >= 8 && text.all { char -> char.isLetterOrDigit() && ((char >= 'A' && char <= 'Z') || (char >= 'a' && char <= 'z') || char.isDigit()) } diff --git a/app/src/main/java/ru/myitschool/work/ui/screen/auth/AuthIntent.kt b/app/src/main/java/ru/myitschool/work/ui/screen/auth/AuthIntent.kt index 74f200a..a05e9cb 100644 --- a/app/src/main/java/ru/myitschool/work/ui/screen/auth/AuthIntent.kt +++ b/app/src/main/java/ru/myitschool/work/ui/screen/auth/AuthIntent.kt @@ -3,4 +3,5 @@ package ru.myitschool.work.ui.screen.auth sealed interface AuthIntent { data class Send(val text: String): AuthIntent data class TextInput(val text: String): AuthIntent + data class PassInput(val text: String): AuthIntent } \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/ui/screen/auth/AuthScreen.kt b/app/src/main/java/ru/myitschool/work/ui/screen/auth/AuthScreen.kt index 4b91b98..2eec5ed 100644 --- a/app/src/main/java/ru/myitschool/work/ui/screen/auth/AuthScreen.kt +++ b/app/src/main/java/ru/myitschool/work/ui/screen/auth/AuthScreen.kt @@ -79,7 +79,7 @@ private fun Content( var inputText by remember { mutableStateOf("") } Spacer(modifier = Modifier.size(16.dp)) TextField( - modifier = Modifier.testTag(TestIds.Auth.CODE_INPUT).fillMaxWidth(), + modifier = Modifier.testTag(TestIds.Auth.LOGIN_INPUT).fillMaxWidth(), value = inputText, onValueChange = { inputText = it @@ -87,6 +87,18 @@ private fun Content( }, label = { Text(stringResource(R.string.auth_label)) } ) + + var inputPass by remember { mutableStateOf("") } + Spacer(modifier = Modifier.size(16.dp)) + TextField( + modifier = Modifier.testTag(TestIds.Auth.PASSWORD_INPUT).fillMaxWidth(), + value = inputPass, + onValueChange = { + inputPass = it + viewModel.onIntent(AuthIntent.PassInput(it)) + }, + label = { Text(stringResource(R.string.auth_pass)) } + ) Spacer(modifier = Modifier.size(16.dp)) Button( modifier = Modifier.testTag(TestIds.Auth.SIGN_BUTTON).fillMaxWidth(), diff --git a/app/src/main/java/ru/myitschool/work/ui/screen/auth/AuthViewModel.kt b/app/src/main/java/ru/myitschool/work/ui/screen/auth/AuthViewModel.kt index c28f5cd..0e659f5 100644 --- a/app/src/main/java/ru/myitschool/work/ui/screen/auth/AuthViewModel.kt +++ b/app/src/main/java/ru/myitschool/work/ui/screen/auth/AuthViewModel.kt @@ -46,7 +46,7 @@ class AuthViewModel : ViewModel() { ) } } - is AuthIntent.TextInput -> { + is AuthIntent.PassInput -> { updateStateIfData { oldState -> oldState.copy( isEnabledSend = checkCodeFormatUseCase.invoke(intent.text), @@ -54,6 +54,11 @@ class AuthViewModel : ViewModel() { ) } } + is AuthIntent.TextInput -> { + updateStateIfData { oldState -> + oldState.copy() + } + } } } diff --git a/app/src/main/java/ru/myitschool/work/ui/theme/Color.kt b/app/src/main/java/ru/myitschool/work/ui/theme/Color.kt index 22226f4..c4ae5db 100644 --- a/app/src/main/java/ru/myitschool/work/ui/theme/Color.kt +++ b/app/src/main/java/ru/myitschool/work/ui/theme/Color.kt @@ -2,10 +2,10 @@ package ru.myitschool.work.ui.theme import androidx.compose.ui.graphics.Color -val Purple80 = Color(0xFFD0BCFF) -val PurpleGrey80 = Color(0xFFCCC2DC) -val Pink80 = Color(0xFFEFB8C8) +val Purple80 = Color(0xFFE46962) +val PurpleGrey80 = Color(0xFF663906) +val Pink80 = Color(0xFF135944) -val Purple40 = Color(0xFF6650a4) -val PurpleGrey40 = Color(0xFF625b71) -val Pink40 = Color(0xFF7D5260) \ No newline at end of file +val Purple40 = Color(0xFF6750A4) +val PurpleGrey40 = Color(0xFFFFFFFF) +val Pink40 = Color(0xFFE46962) \ No newline at end of file diff --git a/app/src/main/penpot/v0 and v1_1511 строк кода.penpot b/app/src/main/penpot/v0 and v1_1511 строк кода.penpot new file mode 100644 index 0000000..6c629fa Binary files /dev/null and b/app/src/main/penpot/v0 and v1_1511 строк кода.penpot differ diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a9273cf..65c8afc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,9 +1,11 @@ Work RootActivity - Привет! Введи код для авторизации - Код + Привет! Введи логин и пароль для авторизации + Логин Войти + Пароль + Обновить Выйти