Merge remote-tracking branch 'origin/main'
# Conflicts: # app/src/main/java/ru/myitschool/work/ui/screen/meetings/MeetingsViewModel.kt
This commit is contained in:
commit
64e2e9126c
@ -1,16 +1,35 @@
|
||||
package ru.myitschool.work.ui.screen.meetings
|
||||
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.Column
|
||||
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.material3.CircularProgressIndicator
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
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.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.platform.testTag
|
||||
import androidx.compose.ui.res.painterResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||
import ru.myitschool.work.R
|
||||
import ru.myitschool.work.core.TestIds
|
||||
import ru.myitschool.work.ui.custom.component.RoundCustomButton
|
||||
import ru.myitschool.work.ui.screen.book.BookAction
|
||||
import ru.myitschool.work.ui.screen.book.BookViewModel
|
||||
import ru.myitschool.work.ui.screen.main.MainIntent
|
||||
import ru.myitschool.work.ui.screen.main.MainResult
|
||||
|
||||
@Composable
|
||||
@ -23,12 +42,11 @@ fun MeetingsScreen(
|
||||
Modifier
|
||||
.fillMaxSize()
|
||||
) {
|
||||
|
||||
when (val currentState = state) {
|
||||
is MeetingsState.Data -> MeetingsData(currentState)
|
||||
is MeetingsState.Empty -> MeetingsEmpty(currentState)
|
||||
is MeetingsState.Error -> TODO()
|
||||
is MeetingsState.Loading -> TODO()
|
||||
is MeetingsState.Error -> MeetingsError(viewModel, currentState)
|
||||
is MeetingsState.Loading -> MeetingsLoading(currentState)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -44,19 +62,70 @@ fun MeetingsData(
|
||||
fun MeetingsEmpty(
|
||||
state: MeetingsState.Empty
|
||||
) {
|
||||
|
||||
Text(
|
||||
modifier = Modifier.testTag(TestIds.Main.ERROR),
|
||||
text = "Нет бронирований",
|
||||
style = MaterialTheme.typography.headlineSmall,
|
||||
color = Color.Red
|
||||
)
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun MeetingsError(
|
||||
viewModel: MeetingsViewModel,
|
||||
state: MeetingsState.Error
|
||||
) {
|
||||
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
.padding(all = 24.dp),
|
||||
horizontalAlignment = Alignment.CenterHorizontally,
|
||||
verticalArrangement = Arrangement.Center
|
||||
) {
|
||||
when (state.error) {
|
||||
"No auth" -> {
|
||||
Image(
|
||||
painter = painterResource(R.drawable.no_accounts),
|
||||
null,
|
||||
Modifier.size(100.dp)
|
||||
)
|
||||
}
|
||||
"Not internet" -> {
|
||||
Image(
|
||||
painter = painterResource(R.drawable.not_wifi),
|
||||
null,
|
||||
Modifier.size(100.dp)
|
||||
)
|
||||
}
|
||||
}
|
||||
Text(
|
||||
modifier = Modifier.testTag(TestIds.Main.ERROR),
|
||||
text = state.error,
|
||||
style = MaterialTheme.typography.headlineSmall,
|
||||
color = Color.Red
|
||||
)
|
||||
Spacer(modifier = Modifier.size(16.dp))
|
||||
RoundCustomButton(
|
||||
modifier = Modifier.testTag(TestIds.Main.REFRESH_BUTTON).fillMaxWidth(),
|
||||
onClick = {
|
||||
viewModel.refresh()
|
||||
},
|
||||
) {
|
||||
Text(stringResource(R.string.main_refresh))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun MeetingsLoading(
|
||||
state: MeetingsState.Loading
|
||||
) {
|
||||
|
||||
Box(
|
||||
Modifier.fillMaxWidth(),
|
||||
contentAlignment = Alignment.Center
|
||||
) {
|
||||
CircularProgressIndicator(
|
||||
modifier = Modifier.size(64.dp)
|
||||
)
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user