From 47e9018b672ea532333742101272df039a0f524a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9=20=D0=9D=D0=B8?= =?UTF-8?q?=D0=BA=D0=BE=D0=BB=D0=B0=D0=B5=D0=B2?= Date: Sun, 30 Nov 2025 16:05:59 +0000 Subject: [PATCH] revert abc0f81356d0f4024ba343c91756f236c96876f2 revert Merge pull request 'Added appearance and basic booking functionality' (#1) from student-15047/NTO-2025-Android-TeamTask:to-book into main Reviewed-on: https://git.sicampus.ru/student-18211/NTO-2025-Android-TeamTask/pulls/1 --- .../work/domain/entities/BookingEntities.kt | 6 - .../work/domain/entities/UserEntities.kt | 7 - .../work/ui/screen/NavigationGraph.kt | 7 +- .../work/ui/screen/book/BookIntent.kt | 6 - .../work/ui/screen/book/BookScreen.kt | 215 ------------------ .../work/ui/screen/book/BookState.kt | 8 - .../work/ui/screen/book/BookViewModel.kt | 31 --- app/src/main/res/values/strings.xml | 2 - 8 files changed, 5 insertions(+), 277 deletions(-) delete mode 100644 app/src/main/java/ru/myitschool/work/domain/entities/BookingEntities.kt delete mode 100644 app/src/main/java/ru/myitschool/work/domain/entities/UserEntities.kt delete mode 100644 app/src/main/java/ru/myitschool/work/ui/screen/book/BookIntent.kt delete mode 100644 app/src/main/java/ru/myitschool/work/ui/screen/book/BookScreen.kt delete mode 100644 app/src/main/java/ru/myitschool/work/ui/screen/book/BookState.kt delete mode 100644 app/src/main/java/ru/myitschool/work/ui/screen/book/BookViewModel.kt diff --git a/app/src/main/java/ru/myitschool/work/domain/entities/BookingEntities.kt b/app/src/main/java/ru/myitschool/work/domain/entities/BookingEntities.kt deleted file mode 100644 index 9cc4cad..0000000 --- a/app/src/main/java/ru/myitschool/work/domain/entities/BookingEntities.kt +++ /dev/null @@ -1,6 +0,0 @@ -package ru.myitschool.work.domain.entities - -data class BookingEntities ( - var roomName : String, - var time: String -) \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/domain/entities/UserEntities.kt b/app/src/main/java/ru/myitschool/work/domain/entities/UserEntities.kt deleted file mode 100644 index 23d2aba..0000000 --- a/app/src/main/java/ru/myitschool/work/domain/entities/UserEntities.kt +++ /dev/null @@ -1,7 +0,0 @@ -package ru.myitschool.work.domain.entities - -data class UserEntities( - val name : String, - var image : Int, - var booking : ArrayList -) diff --git a/app/src/main/java/ru/myitschool/work/ui/screen/NavigationGraph.kt b/app/src/main/java/ru/myitschool/work/ui/screen/NavigationGraph.kt index 9dad87b..01b0f32 100644 --- a/app/src/main/java/ru/myitschool/work/ui/screen/NavigationGraph.kt +++ b/app/src/main/java/ru/myitschool/work/ui/screen/NavigationGraph.kt @@ -15,7 +15,6 @@ import ru.myitschool.work.ui.nav.AuthScreenDestination import ru.myitschool.work.ui.nav.BookScreenDestination import ru.myitschool.work.ui.nav.MainScreenDestination import ru.myitschool.work.ui.screen.auth.AuthScreen -import ru.myitschool.work.ui.screen.book.BookScreen @Composable fun AppNavHost( @@ -40,7 +39,11 @@ fun AppNavHost( } } composable { - BookScreen(navController = navController) + Box( + contentAlignment = Alignment.Center + ) { + Text(text = "Hello") + } } } } \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/ui/screen/book/BookIntent.kt b/app/src/main/java/ru/myitschool/work/ui/screen/book/BookIntent.kt deleted file mode 100644 index 506f720..0000000 --- a/app/src/main/java/ru/myitschool/work/ui/screen/book/BookIntent.kt +++ /dev/null @@ -1,6 +0,0 @@ -package ru.myitschool.work.ui.screen.book - -sealed interface BookIntent { - data class Send(val text: String): BookIntent - data class BookingSelect(val text: String): BookIntent -} \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/ui/screen/book/BookScreen.kt b/app/src/main/java/ru/myitschool/work/ui/screen/book/BookScreen.kt deleted file mode 100644 index 7dc159f..0000000 --- a/app/src/main/java/ru/myitschool/work/ui/screen/book/BookScreen.kt +++ /dev/null @@ -1,215 +0,0 @@ -package ru.myitschool.work.ui.screen.book; - -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.selection.selectableGroup -import androidx.compose.material3.Button -import androidx.compose.material3.CircularProgressIndicator -import androidx.compose.material3.NavigationBar -import androidx.compose.material3.NavigationBarItem -import androidx.compose.material3.RadioButton -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable; -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.collectAsState -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.testTag -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.unit.dp -import androidx.lifecycle.viewmodel.compose.viewModel -import androidx.navigation.NavController; -import ru.myitschool.work.R -import ru.myitschool.work.core.TestIds -import ru.myitschool.work.domain.entities.BookingEntities -import ru.myitschool.work.ui.nav.BookScreenDestination -import ru.myitschool.work.ui.nav.MainScreenDestination -import ru.myitschool.work.ui.screen.auth.AuthViewModel - -var selectedTime = mutableStateOf(0) -var selectedBooking = mutableStateOf(0) -var currentTime = mutableStateOf(0) -@Composable -fun BookScreen( - viewModel: BookViewModel = viewModel(), - navController: NavController, - modifier: Modifier = Modifier -) { - val state by viewModel.uiState.collectAsState() - - LaunchedEffect(Unit) { - viewModel.actionFlow.collect { - navController.navigate(MainScreenDestination) - } - } - - // TODO брать данные с сервера - // Иммитация того, что мы взяли данные с сервера - val bookings = arrayListOf( - BookingEntities( - "Рабочее место у окна", - "19.04" - ), - BookingEntities( - "Переговорная комната № 1", - "19.04" - ), - BookingEntities( - "Коворкинг А", - "19.04" - ), - BookingEntities( - "Кабинет № 33", - "20.04" - ), - ) - val options = toMap(bookings) - - Column( - modifier = modifier.fillMaxSize() - ) { -// Text("" + selectedTime.value + "," + currentTime.value + "," + selectedBooking.value) - when (val currentState = state) { - BookState.Data -> { - TabGroup(options.keys) - - var i = 0 - options.keys.forEach { - if (i == currentTime.value) - SelectBooking(options[it]!!) - i ++; - } - - Button( - onClick = { - // TODO Добавить бронирование - viewModel.onIntent(BookIntent.Send("Данные" )) - }, - modifier = Modifier - .testTag(TestIds.Book.BOOK_BUTTON) - ) { - Text(stringResource(R.string.to_book)) - } - } - - BookState.Error -> { - Text( - text = "", - modifier = Modifier - .testTag(TestIds.Book.ERROR) - ) - - Button( - onClick = { }, - modifier = Modifier - .testTag(TestIds.Book.REFRESH_BUTTON) - ) { - Text("") - } - } - - BookState.Loading -> { - CircularProgressIndicator( - modifier = Modifier - .align(Alignment.CenterHorizontally) - .size(64.dp) - ) - } - - BookState.NotData -> { - Text( - text = "", - modifier = Modifier - .testTag(TestIds.Book.EMPTY) - ) - } - } - Button( - onClick = { - navController.navigate(MainScreenDestination) - }, - modifier = Modifier - .testTag(TestIds.Book.BACK_BUTTON) - ) { - Text(stringResource(R.string.back)) - } - } -} - - -@Composable -fun TabGroup(options: Set) { - NavigationBar( - Modifier.fillMaxWidth() - ) { - options.forEachIndexed { index, label -> - NavigationBarItem( - selected = currentTime.value == index, - onClick = { - currentTime.value = index - }, - icon = { - Text( - text = label, - modifier = Modifier - .testTag(TestIds.Book.ITEM_DATE) - ) - }, - modifier = Modifier - .testTag(TestIds.Book.getIdDateItemByPosition(index)) - ) - } - } -} - -@Composable -fun SelectBooking(options: List) { - LazyColumn( - Modifier - .fillMaxWidth() - ) { - options.forEachIndexed { index, label -> - item { - Row( - Modifier - .fillMaxWidth() - .selectableGroup() - .testTag(TestIds.Book.getIdPlaceItemByPosition(index)), - horizontalArrangement = Arrangement.SpaceBetween, - verticalAlignment = Alignment.CenterVertically - ) { - Text( - text = label, - modifier = Modifier - .testTag(TestIds.Book.ITEM_PLACE_TEXT) - ) - RadioButton( - selected = index == selectedBooking.value && currentTime.value == selectedTime.value, - onClick = { - selectedBooking.value = index - selectedTime.value = currentTime.value - }, - modifier = Modifier - .testTag(TestIds.Book.ITEM_PLACE_SELECTOR) - ) - } - } - } - } -} - -fun toMap(options: List) : Map> { - val map : MutableMap> = mutableMapOf() - options.forEach { - if (map[it.time] == null) map[it.time] = mutableListOf(it.roomName) - else map[it.time]?.add(it.roomName) - } - return map -} \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/ui/screen/book/BookState.kt b/app/src/main/java/ru/myitschool/work/ui/screen/book/BookState.kt deleted file mode 100644 index 8b87d87..0000000 --- a/app/src/main/java/ru/myitschool/work/ui/screen/book/BookState.kt +++ /dev/null @@ -1,8 +0,0 @@ -package ru.myitschool.work.ui.screen.book - -sealed interface BookState { - object Loading: BookState - object Data: BookState - object Error: BookState - object NotData : BookState -} \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/ui/screen/book/BookViewModel.kt b/app/src/main/java/ru/myitschool/work/ui/screen/book/BookViewModel.kt deleted file mode 100644 index c713202..0000000 --- a/app/src/main/java/ru/myitschool/work/ui/screen/book/BookViewModel.kt +++ /dev/null @@ -1,31 +0,0 @@ -package ru.myitschool.work.ui.screen.book - -import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.flow.MutableSharedFlow -import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.SharedFlow -import kotlinx.coroutines.flow.StateFlow -import kotlinx.coroutines.flow.asStateFlow -import kotlinx.coroutines.flow.update -import kotlinx.coroutines.launch - -class BookViewModel : ViewModel() { - private val _uiState = MutableStateFlow(BookState.Data) - val uiState: StateFlow = _uiState.asStateFlow(); - - private val _actionFlow: MutableSharedFlow = MutableSharedFlow() - val actionFlow: SharedFlow = _actionFlow - - fun onIntent(intent: BookIntent) { - when (intent) { - is BookIntent.Send -> { - viewModelScope.launch(Dispatchers.Default) { - _uiState.update { BookState.Loading } - } - } - is BookIntent.BookingSelect -> Unit - } - } -} \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5979b52..fa8bda6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -4,6 +4,4 @@ Привет! Введи код для авторизации Код Войти - забронировать - Назад \ No newline at end of file