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 6121f27..595a31e 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.12:49165" + const val HOST = "http://10.0.0.103:49165" const val AUTH_URL = "/login" const val INFO_URL = "/info" const val BOOKING_URL = "/booking" 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 767becf..8225762 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 @@ -108,7 +108,7 @@ private fun Content( ) } - Spacer(modifier = Modifier.size(48.dp)) + Spacer(modifier = Modifier.size(48.dp)) Text( text = stringResource(R.string.auth_title_1), style = MaterialTheme.typography.headlineLarge, diff --git a/app/src/main/java/ru/myitschool/work/ui/screen/room/CardState.kt b/app/src/main/java/ru/myitschool/work/ui/screen/room/CardState.kt new file mode 100644 index 0000000..18e095f --- /dev/null +++ b/app/src/main/java/ru/myitschool/work/ui/screen/room/CardState.kt @@ -0,0 +1,7 @@ +package ru.myitschool.work.ui.screen.room + +sealed interface CardState { + data object Booked: CardState + data object Open: CardState + data object BookedByMe: CardState +} \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/ui/screen/room/RoomScreen.kt b/app/src/main/java/ru/myitschool/work/ui/screen/room/RoomScreen.kt index 5d61735..f9b164b 100644 --- a/app/src/main/java/ru/myitschool/work/ui/screen/room/RoomScreen.kt +++ b/app/src/main/java/ru/myitschool/work/ui/screen/room/RoomScreen.kt @@ -1,14 +1,150 @@ package ru.myitschool.work.ui.screen.room +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Button +import androidx.compose.material3.Card +import androidx.compose.material3.CardDefaults +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.testTag +import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import androidx.navigation.NavController +import ru.myitschool.work.core.TestIds import ru.myitschool.work.ui.screen.auth.AuthViewModel @Composable fun RoomScreen( - viewModel: AuthViewModel = viewModel(), + viewModel: RoomViewModel = viewModel(), navController: NavController ) { + val state by viewModel.uiState.collectAsState() + + Column( + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.SpaceBetween, + modifier = Modifier + .fillMaxSize() + .background(MaterialTheme.colorScheme.surfaceContainerLow) + ) { + when(val currentState = state) { + is RoomState.Data -> { + Column( + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center, + modifier = Modifier + .fillMaxSize() + .padding(20.dp) + ) { + Text( + text = "TEST_LOCATOIN", + style = MaterialTheme.typography.displayMedium + ) + Spacer(modifier = Modifier.size(12.dp)) + LazyColumn { + itemsIndexed(currentState.data.data.entries.toList()) { index, item -> + DayCard(item.key, item.value.toString(), index) + } + } + } + Row( + modifier = Modifier + .fillMaxWidth() + ) { + Button( + onClick = { viewModel.onIntent(RoomIntent.Booking(1488, "1488")) } + ) { + Text("Book") + } + Button( + onClick = { viewModel.onIntent(RoomIntent.UnBook(1488, "1488")) } + ) { + Text("Cancel") + } + } + + + } + is RoomState.Error -> { + Card( + shape = RoundedCornerShape(20.dp), + colors = CardDefaults.cardColors( + containerColor = MaterialTheme.colorScheme.errorContainer, + ), + ) { + Text( + modifier = Modifier.testTag(TestIds.Auth.ERROR).padding(16.dp), + text = currentState.error, + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.onErrorContainer, + ) + } + Button( + onClick = { viewModel.onIntent(RoomIntent.Refresh) } + ) { + Text("Refresh") + } + } + is RoomState.Loading -> { + CircularProgressIndicator() + } + } + } +} + +@Composable +fun DayCard(name: String?, day: String, index: Int) { + Card( + shape = RoundedCornerShape(20.dp), + colors = CardDefaults.cardColors( + containerColor = if (name == null) { + MaterialTheme.colorScheme.surfaceContainerLowest + } else if (name == "hitler") { + MaterialTheme.colorScheme.secondaryContainer + } else { + MaterialTheme.colorScheme.tertiaryContainer + }, //REMAKE TO STATE + ), + modifier = Modifier.fillMaxWidth() + ) { + Row( + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier.padding(24.dp) + ) { + Column( + verticalArrangement = Arrangement.Center, + ) { + Text( + text = "${name}", + style = MaterialTheme.typography.labelLarge, + color = MaterialTheme.colorScheme.onSurface + ) + Text( + text = "${day}", + style = MaterialTheme.typography.headlineMedium, + color = MaterialTheme.colorScheme.onSurface + ) + } + Text("${index}") + } + } } \ No newline at end of file