package dev.lonami.talaria.ui import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material.Card import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import dev.lonami.talaria.model.Message import dev.lonami.talaria.ui.theme.TalariaTheme @Composable fun MessageCard(message: Message) { Card( elevation = 4.dp, modifier = Modifier .fillMaxWidth() .padding(8.dp) ) { Column( modifier = Modifier .fillMaxWidth() .padding(8.dp) ) { Text(message.sender, fontWeight = FontWeight.Bold) Text(message.text) } } } @Composable fun MessageList(messages: List) { LazyColumn { items(messages.size) { MessageCard(messages[it]) } } } @Composable fun ChatScreen(chatViewModel: ChatViewModel = viewModel()) { val chatUiState by chatViewModel.uiState.collectAsState() MessageList(chatUiState.messages) } @Preview @Composable fun ChatPreview() { TalariaTheme { ChatScreen() } }