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 8a0ac26..0064459 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 @@ -80,7 +80,8 @@ fun TelegramStyleMessageContent( textContent: @Composable () -> Unit, timeContent: @Composable () -> Unit, modifier: Modifier = Modifier, - spacing: Int = 10 + spacing: Int = 10, + fillWidth: Boolean = false // 🔥 Если true - время всегда справа на всю ширину контейнера ) { val density = LocalDensity.current val spacingPx = with(density) { spacing.dp.roundToPx() } @@ -115,7 +116,14 @@ fun TelegramStyleMessageContent( // Определяем layout val (width, height, timeX, timeY) = - if (!textWraps && totalSingleLineWidth <= constraints.maxWidth) { + if (fillWidth) { + // 🔥 Для caption - занимаем всю доступную ширину, время справа на одной линии + val w = constraints.maxWidth + val h = maxOf(textPlaceable.height, timePlaceable.height) + val tX = w - timeWidth // Время справа + val tY = h - timePlaceable.height // Время внизу строки (выровнено по baseline) + LayoutResult(w, h, tX, tY) + } else if (!textWraps && totalSingleLineWidth <= constraints.maxWidth) { // Текст и время на одной строке val w = totalSingleLineWidth val h = maxOf(textPlaceable.height, timePlaceable.height) @@ -584,6 +592,7 @@ fun MessageBubble( Box( modifier = Modifier + .fillMaxWidth() // 🔥 Растягиваем на ширину фото для правильного позиционирования времени .background(bubbleColor) .padding( start = captionPaddingStart, @@ -627,7 +636,8 @@ fun MessageBubble( } } }, - spacing = 8 + spacing = 8, + fillWidth = true // 🔥 Время справа на всю ширину фото ) } } else if (message.attachments.isNotEmpty() && message.text.isNotEmpty()) {