android: refine message bubble shapes and parity checklist
Some checks failed
CI / test (push) Failing after 2m11s
Some checks failed
CI / test (push) Failing after 2m11s
This commit is contained in:
@@ -264,3 +264,8 @@
|
|||||||
- Added floating rounded bottom navigation container on chat list screen.
|
- Added floating rounded bottom navigation container on chat list screen.
|
||||||
- Added active tab visual state (Chats selected) with pill styling.
|
- Added active tab visual state (Chats selected) with pill styling.
|
||||||
- Updated Telegram UI checklists for bottom-nav shell parity (batch 1 and batch 2).
|
- Updated Telegram UI checklists for bottom-nav shell parity (batch 1 and batch 2).
|
||||||
|
|
||||||
|
### Step 44 - Chat UI / bubble density pass
|
||||||
|
- Updated message bubble shapes for incoming/outgoing messages to denser rounded Telegram-like contours.
|
||||||
|
- Kept bottom-right time + delivery state rendering in bubble footer after time formatting update.
|
||||||
|
- Updated Telegram UI batch-2 checklist item for message bubble parity.
|
||||||
|
|||||||
@@ -553,6 +553,11 @@ private fun MessageBubble(
|
|||||||
onLongPress: () -> Unit,
|
onLongPress: () -> Unit,
|
||||||
) {
|
) {
|
||||||
val isOutgoing = message.isOutgoing
|
val isOutgoing = message.isOutgoing
|
||||||
|
val bubbleShape = if (isOutgoing) {
|
||||||
|
RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp, bottomStart = 16.dp, bottomEnd = 6.dp)
|
||||||
|
} else {
|
||||||
|
RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp, bottomStart = 6.dp, bottomEnd = 16.dp)
|
||||||
|
}
|
||||||
val bubbleColor = if (isOutgoing) {
|
val bubbleColor = if (isOutgoing) {
|
||||||
MaterialTheme.colorScheme.primaryContainer
|
MaterialTheme.colorScheme.primaryContainer
|
||||||
} else {
|
} else {
|
||||||
@@ -564,13 +569,14 @@ private fun MessageBubble(
|
|||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxWidth(0.86f)
|
.fillMaxWidth(0.86f)
|
||||||
.background(
|
.background(
|
||||||
if (isSelected) MaterialTheme.colorScheme.tertiaryContainer else bubbleColor
|
color = if (isSelected) MaterialTheme.colorScheme.tertiaryContainer else bubbleColor,
|
||||||
|
shape = bubbleShape,
|
||||||
)
|
)
|
||||||
.combinedClickable(
|
.combinedClickable(
|
||||||
onClick = onClick,
|
onClick = onClick,
|
||||||
onLongClick = onLongPress,
|
onLongClick = onLongPress,
|
||||||
)
|
)
|
||||||
.padding(horizontal = 10.dp, vertical = 8.dp),
|
.padding(horizontal = 10.dp, vertical = 7.dp),
|
||||||
) {
|
) {
|
||||||
if (isSelected) {
|
if (isSelected) {
|
||||||
Text(
|
Text(
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
- [x] Полупрозрачный rounded input контейнер.
|
- [x] Полупрозрачный rounded input контейнер.
|
||||||
- [x] Иконка emoji слева, поле ввода, скрепка, кнопка отправки/голосового.
|
- [x] Иконка emoji слева, поле ввода, скрепка, кнопка отправки/голосового.
|
||||||
- [x] Корректные отступы от nav bar + IME.
|
- [x] Корректные отступы от nav bar + IME.
|
||||||
- [ ] Сообщения вход/выход: плотные пузыри, время и delivery статус внизу справа.
|
- [x] Сообщения вход/выход: плотные пузыри, время и delivery статус внизу справа.
|
||||||
- [x] Reply-preview внутри outgoing bubble (вертикальная полоска, автор, snippet).
|
- [x] Reply-preview внутри outgoing bubble (вертикальная полоска, автор, snippet).
|
||||||
- [x] Forwarded header в сообщении ("Переслано от ...") + мини-аватар.
|
- [x] Forwarded header в сообщении ("Переслано от ...") + мини-аватар.
|
||||||
- [x] Поддержка chat wallpaper (обои в фоне, читабельный контраст поверх).
|
- [x] Поддержка chat wallpaper (обои в фоне, читабельный контраст поверх).
|
||||||
|
|||||||
Reference in New Issue
Block a user