forked from Olympic/NTO-2025-Android-TeamTask
feature/auth-implementation #1
7
app/src/main/java/ru/myitschool/work/ui/BookingEntity.kt
Normal file
7
app/src/main/java/ru/myitschool/work/ui/BookingEntity.kt
Normal file
@@ -0,0 +1,7 @@
|
||||
package ru.myitschool.work.domain.entities
|
||||
|
||||
// ДАННЫЙ КЛАСС ЗАПРЕЩЕНО МОДИЦИФИРОВАТЬ! ПРИ ТЕСТИРОВАНИИ ОН БУДЕТ ВОЗВРАЩЁН В ОРИГИНАЛЬНОЕ ЗНАЧЕНИЕ
|
||||
data class BookingEntity(
|
||||
val roomName: String,
|
||||
val time: String,
|
||||
)
|
||||
@@ -0,0 +1,7 @@
|
||||
package ru.myitschool.work.domain.entities
|
||||
|
||||
// ДАННЫЙ КЛАСС ЗАПРЕЩЕНО МОДИЦИФИРОВАТЬ! ПРИ ТЕСТИРОВАНИИ ОН БУДЕТ ВОЗВРАЩЁН В ОРИГИНАЛЬНОЕ ЗНАЧЕНИЕ
|
||||
data class UserEntity(
|
||||
val name: String,
|
||||
val bookingList: List<BookingEntity>
|
||||
)
|
||||
@@ -21,7 +21,6 @@ import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.platform.testTag
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
@@ -64,6 +63,8 @@ fun AuthScreen(
|
||||
modifier = Modifier.size(64.dp)
|
||||
)
|
||||
}
|
||||
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -74,6 +75,12 @@ private fun Content(
|
||||
state: AuthState.Data
|
||||
) {
|
||||
var inputText by remember { mutableStateOf("") }
|
||||
|
||||
// валидация
|
||||
val isValidCode = inputText.length != 4 && inputText.isNotEmpty() && inputText.none { it.isWhitespace() } && inputText.all { ch ->
|
||||
ch in '0'..'9' || ch in 'A'..'Z' || ch in 'a'..'z'
|
||||
}
|
||||
|
||||
Spacer(modifier = Modifier.size(16.dp))
|
||||
TextField(
|
||||
modifier = Modifier.testTag(TestIds.Auth.CODE_INPUT).fillMaxWidth(),
|
||||
@@ -90,7 +97,7 @@ private fun Content(
|
||||
onClick = {
|
||||
viewModel.onIntent(AuthIntent.Send(inputText))
|
||||
},
|
||||
enabled = true
|
||||
enabled = isValidCode
|
||||
) {
|
||||
Text(stringResource(R.string.auth_sign_in))
|
||||
}
|
||||
|
||||
@@ -3,4 +3,5 @@ package ru.myitschool.work.ui.screen.auth
|
||||
sealed interface AuthState {
|
||||
object Loading: AuthState
|
||||
object Data: AuthState
|
||||
object Error: AuthState
|
||||
}
|
||||
@@ -28,11 +28,11 @@ class AuthViewModel : ViewModel() {
|
||||
_uiState.update { AuthState.Loading }
|
||||
checkAndSaveAuthCodeUseCase.invoke("9999").fold(
|
||||
onSuccess = {
|
||||
_actionFlow.emit(Unit)
|
||||
_actionFlow.emit(Unit)// переход на MainScreen
|
||||
},
|
||||
onFailure = { error ->
|
||||
error.printStackTrace()
|
||||
_actionFlow.emit(Unit)
|
||||
_actionFlow.emit(Unit)// переход на MainScreen при ошибке
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user