From b385379850b11c5f3085b30e25c9d08e5f713256 Mon Sep 17 00:00:00 2001 From: k1ngsterr1 Date: Sun, 25 Jan 2026 16:59:29 +0500 Subject: [PATCH] feat: Enhance MessageBubble for media-only messages with adjusted padding and border --- .../chats/components/AttachmentComponents.kt | 11 ------ .../chats/components/ChatDetailComponents.kt | 34 ++++++++++++++++--- 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/com/rosetta/messenger/ui/chats/components/AttachmentComponents.kt b/app/src/main/java/com/rosetta/messenger/ui/chats/components/AttachmentComponents.kt index a449cc9..a1df161 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/chats/components/AttachmentComponents.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/chats/components/AttachmentComponents.kt @@ -292,17 +292,6 @@ fun ImageAttachment( } } - // Тонкий бордер как в Telegram (просто через border modifier) - Box( - modifier = Modifier - .fillMaxSize() - .border( - width = 1.dp, - color = borderColor, - shape = RoundedCornerShape(12.dp) - ) - ) - // Время в правом нижнем углу (только если изображение загружено) if (downloadStatus == DownloadStatus.DOWNLOADED) { Box( diff --git a/app/src/main/java/com/rosetta/messenger/ui/chats/components/ChatDetailComponents.kt b/app/src/main/java/com/rosetta/messenger/ui/chats/components/ChatDetailComponents.kt index ac17a0c..f5194b1 100644 --- a/app/src/main/java/com/rosetta/messenger/ui/chats/components/ChatDetailComponents.kt +++ b/app/src/main/java/com/rosetta/messenger/ui/chats/components/ChatDetailComponents.kt @@ -306,6 +306,16 @@ fun MessageBubble( Spacer(modifier = Modifier.weight(1f)) } + // Проверяем - есть ли только фотки без текста + val hasOnlyMedia = message.attachments.isNotEmpty() && + message.text.isEmpty() && + message.replyData == null && + message.attachments.all { it.type == com.rosetta.messenger.network.AttachmentType.IMAGE } + + // Для сообщений только с фото - минимальный padding и тонкий border + val bubblePadding = if (hasOnlyMedia) PaddingValues(0.dp) else PaddingValues(horizontal = 10.dp, vertical = 8.dp) + val bubbleBorderWidth = if (hasOnlyMedia) 1.dp else 0.dp + Box( modifier = Modifier .padding(end = 12.dp) @@ -323,8 +333,22 @@ fun MessageBubble( onLongClick = onLongClick ) .clip(bubbleShape) - .background(bubbleColor) - .padding(horizontal = 10.dp, vertical = 8.dp) + .then( + if (hasOnlyMedia) { + Modifier.border( + width = bubbleBorderWidth, + color = if (message.isOutgoing) { + Color.White.copy(alpha = 0.15f) + } else { + if (isDarkTheme) Color.White.copy(alpha = 0.1f) else Color.Black.copy(alpha = 0.08f) + }, + shape = bubbleShape + ) + } else { + Modifier.background(bubbleColor) + } + ) + .padding(bubblePadding) ) { Column { message.replyData?.let { reply -> @@ -355,7 +379,7 @@ fun MessageBubble( } // Если есть reply - текст слева, время справа на одной строке - if (message.replyData != null) { + if (message.replyData != null && message.text.isNotEmpty()) { Row( verticalAlignment = Alignment.Bottom, modifier = Modifier.fillMaxWidth() @@ -392,8 +416,8 @@ fun MessageBubble( } } } - } else { - // Без reply - компактно в одну строку + } else if (!hasOnlyMedia && message.text.isNotEmpty()) { + // Без reply и не только фото - компактно в одну строку Row( verticalAlignment = Alignment.Bottom, horizontalArrangement = Arrangement.spacedBy(10.dp),