feat: Remove online indicator from ChatDetailScreen for cleaner UI

This commit is contained in:
k1ngsterr1
2026-01-13 02:52:56 +05:00
parent b26c25629a
commit be0a1821b3

View File

@@ -513,16 +513,6 @@ fun ChatDetailScreen(
color = avatarColors.textColor color = avatarColors.textColor
) )
} }
// 🟢 Online indicator
if (!isSavedMessages && isOnline) {
Box(
modifier = Modifier
.size(12.dp)
.align(Alignment.BottomEnd)
.background(Color(0xFF38B24D), CircleShape)
.border(2.dp, headerBackground, CircleShape)
)
}
} }
Spacer(modifier = Modifier.width(12.dp)) Spacer(modifier = Modifier.width(12.dp))
@@ -776,6 +766,12 @@ fun ChatDetailScreen(
itemsIndexed(messagesWithDates, key = { _, item -> item.first.id }) { itemsIndexed(messagesWithDates, key = { _, item -> item.first.id }) {
index, index,
(message, showDate) -> (message, showDate) ->
// Определяем, показывать ли хвостик (последнее сообщение в группе)
val nextMessage = messagesWithDates.getOrNull(index + 1)?.first
val showTail = nextMessage == null ||
nextMessage.isOutgoing != message.isOutgoing ||
(message.timestamp.time - nextMessage.timestamp.time) > 60_000 // 1 минута
Column { Column {
// В reversed layout: дата показывается ПОСЛЕ сообщения // В reversed layout: дата показывается ПОСЛЕ сообщения
// (визуально СВЕРХУ группы сообщений) // (визуально СВЕРХУ группы сообщений)
@@ -788,7 +784,7 @@ fun ChatDetailScreen(
MessageBubble( MessageBubble(
message = message, message = message,
isDarkTheme = isDarkTheme, isDarkTheme = isDarkTheme,
index = index, showTail = showTail,
isSelected = selectedMessages.contains(message.id), isSelected = selectedMessages.contains(message.id),
onLongClick = { onLongClick = {
// Toggle selection on long press // Toggle selection on long press
@@ -1297,7 +1293,7 @@ fun rememberMessageEnterAnimation(messageId: String): Pair<Float, Float> {
private fun MessageBubble( private fun MessageBubble(
message: ChatMessage, message: ChatMessage,
isDarkTheme: Boolean, isDarkTheme: Boolean,
index: Int = 0, showTail: Boolean = true,
isSelected: Boolean = false, isSelected: Boolean = false,
onLongClick: () -> Unit = {}, onLongClick: () -> Unit = {},
onClick: () -> Unit = {} onClick: () -> Unit = {}
@@ -1335,13 +1331,13 @@ private fun MessageBubble(
if (isDarkTheme) Color(0xFF8E8E93) else Color(0xFF666666) if (isDarkTheme) Color(0xFF8E8E93) else Color(0xFF666666)
} }
// Telegram bubble shape - простая форма с разными радиусами углов // Telegram bubble shape - хвостик только у последнего сообщения в группе
val bubbleShape = val bubbleShape =
RoundedCornerShape( RoundedCornerShape(
topStart = 18.dp, topStart = 18.dp,
topEnd = 18.dp, topEnd = 18.dp,
bottomStart = if (message.isOutgoing) 18.dp else 4.dp, bottomStart = if (message.isOutgoing) 18.dp else (if (showTail) 4.dp else 18.dp),
bottomEnd = if (message.isOutgoing) 4.dp else 18.dp bottomEnd = if (message.isOutgoing) (if (showTail) 4.dp else 18.dp) else 18.dp
) )
val timeFormat = remember { SimpleDateFormat("HH:mm", Locale.getDefault()) } val timeFormat = remember { SimpleDateFormat("HH:mm", Locale.getDefault()) }