package dev.lonami.talaria.ui import androidx.compose.foundation.Image import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row 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.Switch 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.res.painterResource import androidx.compose.ui.res.stringResource 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.R import dev.lonami.talaria.model.Dialog import dev.lonami.talaria.ui.theme.TalariaTheme @Composable fun DialogCard(dialog: Dialog, onDialogSelected: () -> Unit) { Card( modifier = Modifier .fillMaxWidth() .padding(8.dp, 16.dp) .clickable(onClick = onDialogSelected) ) { Row { Image( painter = painterResource(R.drawable.ic_launcher_foreground), contentDescription = stringResource(R.string.profile_photo), ) Column(modifier = Modifier.weight(1.0f)) { Text(dialog.title, fontWeight = FontWeight.Bold) Text(dialog.lastMessage) } Switch(dialog.pinned, enabled = false, onCheckedChange = null) } } } @Composable fun DialogList(dialogs: List, onDialogSelected: (String) -> Unit) { LazyColumn { items(dialogs.size) { DialogCard(dialogs[it], onDialogSelected = { onDialogSelected(dialogs[it].lastMessage) }) } } } @Composable fun DialogScreen( onDialogSelected: (String) -> Unit, dialogViewModel: DialogViewModel = viewModel() ) { val dialogUiState by dialogViewModel.uiState.collectAsState() DialogList(dialogUiState.dialogs, onDialogSelected = onDialogSelected) } @Preview @Composable fun DialogPreview() { TalariaTheme { DialogScreen(onDialogSelected = { }) } }