verticalArrangement = Arrangement.spacedBy(12.dp),
contentPadding = PaddingValues(top = 12.dp, start = 24.dp, end = 24.dp)
) {
item {
MessageCard(message = "Добрый день, пришлите мне ваше фото. Посмотрим, что можно сделать с вашей прической")
}
itemsIndexed(items = state.messages) { _, item ->
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement =
Arrangement.Start
) {
Column {
MessageCard(message = item)
Spacer(modifier = Modifier.height(12.dp))
SubcomposeAsyncImage(
modifier = Modifier
.padding(horizontal = 24.dp)
.fillMaxWidth(),
model = state.photoUrl,
contentDescription = stringResource(R.string.chat_image_haircut)
)
AnimatedVisibility(visible = state.isButtonsVisible && state.isButton) {
Row(
modifier = Modifier
.padding(horizontal = 24.dp)
.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceBetween
) {
Button(onClick = { viewModel.sendEvent(ChatScreenUiEvent.OnHaircutChangeClick("Бокс")) }) {
Text(text = "Бокс - 400р")
}
Spacer(modifier = Modifier.width(24.dp))
Button(onClick = { viewModel.sendEvent(ChatScreenUiEvent.OnHaircutChangeClick("Полубокс")) }) {
Text(text = "Полубокс - 640р")
}
}
}
}
}
}
}
private val botMessages: List<String> = listOf(
"Хм, здесь я могу вам предложить два варианта - бокс 400 рублей, полубокс 670 рублей",
"Хороший выбор, напишите, когда вы сможете к нам приехать за новой прической"
)
private val botSendMessagesList = emptyList<String>().toMutableList()
private var messageIndex: Int = 0
private val _state = MutableStateFlow(ChatScreenUiState.Empty)
val state = _state.asStateFlow()
fun sendEvent(event: ChatScreenUiEvent) {
when (event) {
is ChatScreenUiEvent.OnMessageInput -> {
viewModelScope.launch { _state.update { it.copy(message = event.text) } }
}
is ChatScreenUiEvent.OnSendMessage -> {
// repositories.sendMessage(state.value.message)
viewModelScope.launch {
if (state.value.message.trim().isNotEmpty()) {
sendBotMessage()
_state.update { it.copy(message = "") }
}
}
}
is ChatScreenUiEvent.OnHaircutChangeClick -> {
viewModelScope.launch {
}
}
is ChatScreenUiEvent.OnImagePick -> {
viewModelScope.launch {
repositories.sendPhoto(event.imageUrl.toUri())
_state.update { it.copy(photoUrl = event.imageUrl) }
}
}
}
}
private fun sendBotMessage() {
botSendMessagesList.add(state.value.message)
if (messageIndex == 0) {
_state.update { it.copy(isButtonsVisible = true, isButton = true) }
botSendMessagesList.add(botMessages[messageIndex])
messageIndex++
} else {
_state.update { it.copy(isButtonsVisible = false, isButton = false) }
botSendMessagesList.add(botMessages[messageIndex])
messageIndex++
}
_state.update { it.copy(messages = botSendMessagesList.toList()) }
}```