fix: fix message bubble

This commit is contained in:
k1ngsterr1
2026-02-03 05:01:23 +05:00
parent 3953f66986
commit fa22c2dccd

View File

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